1.2.2. Pod での SharedConfigMap カスタムリソースの使用
Pod から SharedConfigMap カスタムリソース (CR) にアクセスするには、その SharedConfigMap CR を使用するために必要なロールベースアクセス制御 (RBAC) 権限を、関連するサービスアカウントに付与する必要があります。
前提条件
あなたは以下のいずれかのユーザーとして OpenShift Container Platform クラスターにログインしています。
-
ConfigMapオブジェクト用のSharedConfigMapCR インスタンスを作成したクラスター管理者。 -
対象となる名前空間にアクセスし、共有する
ConfigMapのSharedConfigMapCR を作成または管理する権限を持つユーザー。
-
次の操作を実行するための権限がある。
-
oc get sharedconfigmapsコマンドを実行して、SharedConfigMapCR インスタンスのリストを取得します。 -
oc adm policy who-can use <sharedsecret_identifier>コマンドを実行して、サービスアカウントがSharedSecretCR を使用できるかどうか、およびサービスアカウントが namespace にリストされるかどうかを確認する。 -
oc describe clusterrole <roleName>コマンドを実行して、Pod のサービスアカウントがcsiボリュームを使用できることを確認する。ユーザーとして Pod を作成した場合は、ユーザーがcsiボリュームを使用できることを確認する。
-
注記
最後の 2 つの前提条件を満たせない場合は、クラスター管理者に RBAC 権限を付与してもらうことで、サービスアカウントが SharedConfigMap CR を使用できるようになります。
手順
ロールに関連付けられた
RoleBindingオブジェクトを作成し、共有リソースを使用する権限をサービスアカウントに付与します。apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>各項目の説明:
<app_namespace>- アプリケーションの名前空間の名前を指定します。
< サービスアカウント名 >- アプリケーションのサービスアカウント名を指定します。
Shared Resource Container Storage Interface (CSI) Driver を、Pod または
CSIボリュームを受け入れるその他のリソースにマウントします。apiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-config各項目の説明:
<app_namespace>- アプリケーションの名前空間の名前を指定します。
volumes.volumeAttributes.sharedConfigMap-
sharedConfigMapオブジェクトの名前を指定します。
重要Pod が起動に失敗するケースは以下のとおりです。
-
SharedConfigMap属性の値が、SharedConfigMapインスタンスの名前と一致しません。 -
ボリュームは定義されているがマウントされていないため、Pod は
ContainerCreating状態のままになり、最終的に失敗します。
検証
以下のコマンドを実行して、サービスアカウントに付与されている権限を確認してください。
$ oc describe rolebinding share-etc-pki-entitlement -n openshift-config-managed出力例:
Name: share-etc-pki-entitlement Labels: <none> Annotations: <none> Role: Kind: Role Name: share-etc-pki-entitlement Subjects: Kind Name Namespace ---- ---- --------- ServiceAccount csi-driver-shared-resource openshift-builds