확장: 더 많은 프로젝트 추가
멀티테넌트 구성에서 스토리지 리소스가 있는 새 프로젝트를 추가하려면 멀티테넌시가 위반되지 않도록 추가 구성이 필요합니다. 멀티테넌트 클러스터에 더 많은 프로젝트를 추가하려면 다음 단계를 완료하세요.
-
스토리지 관리자로 NetApp ONTAP 클러스터에 로그인합니다.
-
로 이동
Storage → Storage VMs그리고 클릭하세요Add. 프로젝트 3에 전념하는 새로운 SVM을 만듭니다. 또한 SVM과 해당 리소스를 관리하기 위해 vsadmin 계정을 만듭니다.
-
클러스터 관리자로 Red Hat OpenShift 클러스터에 로그인합니다.
-
새로운 프로젝트를 만듭니다.
oc create ns project-3
-
project-3의 사용자 그룹이 IdP에 생성되었고 OpenShift 클러스터와 동기화되었는지 확인하세요.
oc get groups
-
프로젝트-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
|
|
이 섹션에 제공된 역할 정의는 단지 예시일 뿐입니다. 개발자 역할은 최종 사용자 요구 사항에 따라 정의되어야 합니다. |
-
프로젝트 3의 개발자를 위한 RoleBinding을 생성하여 프로젝트 3의 해당 그룹(ocp-project-3)에 개발자-프로젝트-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
-
스토리지 관리자로 Red Hat OpenShift 클러스터에 로그인합니다.
-
Trident 백엔드를 만들고 이를 project-3에 전용된 SVM에 매핑합니다. NetApp ONTAP 클러스터 관리자를 사용하는 대신 SVM의 vsadmin 계정을 사용하여 백엔드를 SVM에 연결할 것을 권장합니다.
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
|
|
이 예제에서는 ontap-nas 드라이버를 사용하고 있습니다. 사용 사례에 따라 백엔드를 생성하기 위해 적절한 드라이버를 사용합니다. |
|
|
트라이던트 프로젝트에는 Trident 설치되어 있다고 가정합니다. |
-
프로젝트 3에 대한 스토리지 클래스를 만들고 프로젝트 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
-
다른 프로젝트에 전용된 스토리지 클래스에서 스토리지를 요청하는 project-3의 리소스를 제한하기 위해 ResourceQuota를 생성합니다.
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
-
다른 프로젝트의 ResourceQuotas에 패치를 적용하여 해당 프로젝트의 리소스가 project-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}}}'