wagz icon

Trident pre-provision san-eco

wagz | PRO | 12/11/24 02:59:41 PM UTC | 0 ⭐ | 5610 👁️ | Never ⏰ | []
YAML |

3.79 KB

|

None

|

0 👍

/

0 👎

In the context of NAS-ECO, here is what you can configure in Trident 24.10:

LimitVolumeSize: limits the max size of a PVC (ie qtree)
LimitVolumePoolSize: limits the max size of the FlexVol hosting the qtrees
DenyNewVolumePools: avoids the creation of a new FlexVol when the current one is full
QtreesPerFlexvol: defines the max number of Qtrees you want to have per FlexVol (default: 200, min: 50, max: 300)
 
 
In ONTAP, you can:

Limit the max number of FlexVol per SVM
Limit the logical capacity assigned to a SVM (9.13+, no MCC)
 
 
You can also pre-provision FlexVol that Trident will pick up (or create a dummy PVC, which triggers the creation of a FlexVol, delete the PVC, & patch the TBC with denyNewVolumePools)
 
The difficult part is to find the correct configuration of the FlexVol when doing it manually
 
 
 
Example or pre-provisioned FlexVol:

 
 
My Trident Backend:

 
 
cat << EOF | kubectl apply -f -
 
apiVersion: trident.netapp.io/v1
 
kind: TridentBackendConfig
 
metadata:

  name: backend-nas-eco2
 
  namespace: trident
 
spec:

  version: 1
 
  backendName: nas-eco2
 
  storageDriverName: ontap-nas-economy
 
  managementLIF: 192.168.0.133
 
  storagePrefix: eco2_
 
  autoExportCIDRs:

  - 192.168.0.0/24
 
  autoExportPolicy: true
 
  denyNewVolumePools: "true"
 
  limitVolumeSize: 15Gi
 
  limitVolumePoolSize: 20Gi
 
  qtreesPerFlexvol: '50'
 
  defaults:

    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
 
  credentials:

    name: secret-nas-svm-creds
 
EOF
 
 
 
 
 
The API Calls to create the corresponding volume:

 
 
curl -X POST -ku admin:Netapp1! -H "accept: application/json" -H "Content-Type: application/json" -d '{
 
  "name": "eco2_empty",
 
  "svm": {"name": "nassvm"}
 
}' https://cluster1.demo.netapp.com/api/protocols/nfs/export-policies
 
 
 
curl -X POST -ku admin:Netapp1! -H "accept: application/json" -H "Content-Type: application/json" -d '{
 
  "aggregates": [{"name": "aggr1"}],
 
  "comment": "",
 
  "guarantee":{"type":"none"},
 
  "name": "trident_qtree_pool_eco2_demo",
 
  "nas":{
 
        "export_policy":{"name":"eco2_empty"},
 
        "security_style":"unix",
 
        "unix_permissions":711
 
  },
 
  "size": "1073741824",
 
  "snapshot_policy":{"name":"none"},
 
  "space":{"snapshot":{"reserve_percent":0}},
 
  "state":"online",
 
  "style": "flexvol",
 
  "svm": {"name":"nassvm"},
 
  "tiering":{"policy":"none"}
 
}' https://cluster1.demo.netapp.com/api/storage/volumes
 
 
 
GETVOL=$(curl -X GET -ku admin:Netapp1! https://cluster1.demo.netapp.com/api/storage/volumes?fields=nas.path&name=trident_qtree_pool_eco2_demo&state=online&style=flexvol&svm.name=nassvm -H "accept: application/json")
 
VOLID=$(echo $GETVOL | jq -r .records[0].uuid)
 
 
 
curl -X POST -ku admin:Netapp1! -H "accept: application/json" -H "Content-Type: application/json" -d '{
 
      "qtree":{"name":""},
 
      "space":{"hard_limit":-1},
 
      "svm":{"name":"nassvm"},
 
      "type":"tree",
 
      "volume":{"name":"trident_qtree_pool_eco2_demo"}
 
}' https://cluster1.demo.netapp.com/api/storage/quota/rules
 
 
 
curl -X PATCH -ku admin:Netapp1! -H "accept: application/json" -H "Content-Type: application/json" -d '{
 
      "quota":{"enabled": "true"}
 
}' https://cluster1.demo.netapp.com/api/storage/volumes/$VOLID
 
 
 
curl -X PATCH -ku admin:Netapp1! -H "accept: application/json" -H "Content-Type: application/json" -d '{
 
      "snapshot_directory_access_enabled": "false"
 
}' https://cluster1.demo.netapp.com/api/storage/volumes/$VOLID
 
 
 
In order to retrieve the list of API calls for a specific TBC, you need to enable debug mode for Trident, which will log all the API calls.
 
From there, you need to retrieve all the POST/PATCH calls…
 
 
 
hth

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎