Skip to main content
NetApp container solutions
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Scalabilità: aggiunta di più progetti

Collaboratori kevin-hoke

In una configurazione multi-tenant, l'aggiunta di nuovi progetti con risorse di storage richiede una configurazione aggiuntiva per garantire che il multi-tenant non venga violato. Per aggiungere altri progetti in un cluster multitenant, completare i seguenti passaggi:

  1. Accedi al cluster NetApp ONTAP come amministratore dello storage.

  2. Vai a Storage → Storage VMs e clicca Add . Creare un nuovo SVM dedicato al progetto 3. Creare anche un account vsadmin per gestire l'SVM e le sue risorse.

Creare SVM per il ridimensionamento

  1. Accedi al cluster Red Hat OpenShift come amministratore del cluster.

  2. Crea un nuovo progetto.

    oc create ns project-3
  3. Assicurarsi che il gruppo utenti per il progetto 3 sia creato su IdP e sincronizzato con il cluster OpenShift.

    oc get groups
  4. Creare il ruolo di sviluppatore per il progetto 3.

    cat << EOF | oc create -f -
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      namespace: project-3
      name: developer-project-3
    rules:
      - verbs:
          - '*'
        apiGroups:
          - apps
          - batch
          - autoscaling
          - extensions
          - networking.k8s.io
          - policy
          - apps.openshift.io
          - build.openshift.io
          - image.openshift.io
          - ingress.operator.openshift.io
          - route.openshift.io
          - snapshot.storage.k8s.io
          - template.openshift.io
        resources:
          - '*'
      - verbs:
          - '*'
        apiGroups:
          - ''
        resources:
          - bindings
          - configmaps
          - endpoints
          - events
          - persistentvolumeclaims
          - pods
          - pods/log
          - pods/attach
          - podtemplates
          - replicationcontrollers
          - services
          - limitranges
          - namespaces
          - componentstatuses
          - nodes
      - verbs:
          - '*'
        apiGroups:
          - trident.netapp.io
        resources:
          - tridentsnapshots
    EOF
Nota La definizione del ruolo fornita in questa sezione è solo un esempio. Il ruolo dello sviluppatore deve essere definito in base ai requisiti dell'utente finale.
  1. Crea RoleBinding per gli sviluppatori nel progetto 3, associando il ruolo developer-project-3 al gruppo corrispondente (ocp-project-3) nel progetto 3.

    cat << EOF | oc create -f -
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: project-3-developer
      namespace: project-3
    subjects:
      - kind: Group
        apiGroup: rbac.authorization.k8s.io
        name: ocp-project-3
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: developer-project-3
    EOF
  2. Accedi al cluster Red Hat OpenShift come amministratore dello storage

  3. Creare un backend Trident e mapparlo sull'SVM dedicato al progetto 3. NetApp consiglia di utilizzare l'account vsadmin dell'SVM per connettere il backend all'SVM anziché utilizzare l'amministratore del cluster ONTAP .

    cat << EOF | tridentctl -n trident create backend -f
    {
        "version": 1,
        "storageDriverName": "ontap-nas",
        "backendName": "nfs_project_3",
        "managementLIF": "172.21.224.210",
        "dataLIF": "10.61.181.228",
        "svm": "project-3-svm",
        "username": "vsadmin",
        "password": "NetApp!23"
    }
    EOF
Nota Per questo esempio utilizziamo il driver ontap-nas. Utilizzare il driver appropriato per creare il backend in base al caso d'uso.
Nota Supponiamo che Trident sia installato nel progetto Trident.
  1. Creare la classe di archiviazione per il progetto 3 e configurarla per utilizzare i pool di archiviazione dal backend dedicato al progetto 3.

    cat << EOF | oc create -f -
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: project-3-sc
    provisioner: csi.trident.netapp.io
    parameters:
      backendType: ontap-nas
      storagePools: "nfs_project_3:.*"
    EOF
  2. Creare una ResourceQuota per limitare le risorse nel progetto 3 che richiedono spazio di archiviazione da storageclass dedicate ad altri progetti.

    cat << EOF | oc create -f -
    kind: ResourceQuota
    apiVersion: v1
    metadata:
      name: project-3-sc-rq
      namespace: project-3
    spec:
      hard:
        project-1-sc.storageclass.storage.k8s.io/persistentvolumeclaims: 0
        project-2-sc.storageclass.storage.k8s.io/persistentvolumeclaims: 0
    EOF
  3. Applicare una patch a ResourceQuotas in altri progetti per impedire alle risorse di tali progetti di accedere allo storage dalla classe storageclass dedicata al progetto 3.

    oc patch resourcequotas project-1-sc-rq -n project-1 --patch '{"spec":{"hard":{ "project-3-sc.storageclass.storage.k8s.io/persistentvolumeclaims": 0}}}'
    oc patch resourcequotas project-2-sc-rq -n project-2 --patch '{"spec":{"hard":{ "project-3-sc.storageclass.storage.k8s.io/persistentvolumeclaims": 0}}}'