Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

スケーリング: プロジェクトの追加

共同作成者 banum-netapp kevin-hoke

マルチテナント構成では、ストレージ リソースを含む新しいプロジェクトを追加する場合、マルチテナント性が侵害されないようにするための追加の構成が必要です。マルチテナント クラスターにプロジェクトを追加するには、次の手順を実行します。

  1. ストレージ管理者としてNetApp ONTAPクラスターにログインします。

  2. 移動先 Storage → Storage VMs`クリック `Add。プロジェクト 3 専用の新しい SVM を作成します。また、SVM とそのリソースを管理するための vsadmin アカウントも作成します。

スケーリング用のSVMを作成する
  1. クラスター管理者として Red Hat OpenShift クラスターにログインします。

  2. 新しいプロジェクトを作成します。

oc create ns project-3
  1. project-3 のユーザー グループが IdP 上に作成され、OpenShift クラスターと同期されていることを確認します。

oc get groups
  1. project-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
メモ このセクションで提供されているロール定義は単なる例です。開発者ロールは、エンドユーザーの要件に基づいて定義する必要があります。
  1. project-3 の開発者用の RoleBinding を作成し、developer-project-3 ロールを project-3 の対応するグループ (ocp-project-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
  1. Red Hat OpenShift クラスタにストレージ管理者としてログインします。

  2. 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 がtrident プロジェクトにインストールされていることを前提としています。
  1. project-3 のストレージ クラスを作成し、project-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
  1. ResourceQuota を作成して、他のプロジェクト専用のストレージクラスからストレージを要求するプロジェクト 3 のリソースを制限します。

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
  1. 他のプロジェクトの 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}}}'