Escalonamento: Adicionando mais projetos
Em uma configuração multilocatário, adicionar novos projetos com recursos de armazenamento requer configuração adicional para garantir que a multilocação não seja violada. Para adicionar mais projetos em um cluster multilocatário, conclua as seguintes etapas:
-
Efetue login no cluster NetApp ONTAP como administrador de armazenamento.
-
Navegar para
Storage → Storage VMse cliqueAdd. Crie um novo SVM dedicado ao projeto-3. Crie também uma conta vsadmin para gerenciar o SVM e seus recursos.
-
Efetue login no cluster do Red Hat OpenShift como administrador do cluster.
-
Crie um novo projeto.
oc create ns project-3
-
Certifique-se de que o grupo de usuários do projeto-3 seja criado no IdP e sincronizado com o cluster OpenShift.
oc get groups
-
Crie a função de desenvolvedor para o projeto-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
|
|
A definição de função fornecida nesta seção é apenas um exemplo. A função do desenvolvedor deve ser definida com base nos requisitos do usuário final. |
-
Crie RoleBinding para desenvolvedores no projeto-3 vinculando a função developer-project-3 ao grupo correspondente (ocp-project-3) no projeto-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
-
Efetue login no cluster Red Hat OpenShift como administrador de armazenamento
-
Crie um backend Trident e mapeie-o para o SVM dedicado ao projeto-3. A NetApp recomenda usar a conta vsadmin do SVM para conectar o backend ao SVM em vez de usar o administrador do 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
|
|
Estamos usando o driver ontap-nas para este exemplo. Use o driver apropriado para criar o backend com base no caso de uso. |
|
|
Assumimos que o Trident está instalado no projeto Trident. |
-
Crie a classe de armazenamento para o projeto-3 e configure-a para usar os pools de armazenamento do backend dedicados ao projeto-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
-
Crie um ResourceQuota para restringir recursos no projeto-3 solicitando armazenamento de classes de armazenamento dedicadas a outros projetos.
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
-
Aplique patch no ResourceQuotas em outros projetos para restringir o acesso de recursos nesses projetos ao armazenamento da classe de armazenamento dedicada ao projeto-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}}}'