1.2. namespace 間での ConfigMap オブジェクトの共有


ConfigMap オブジェクトには、アプリケーションの URL や機能のフラグなど、機密情報でない設定データが格納されます。SharedConfigMap カスタムリソース (CR) を使用すると、ConfigMap オブジェクトを手動で複製することなく、クラスター内の複数の namespace 間でオブジェクトをセキュアに共有できます。ConfigMap オブジェクトを共有することで、設定データの情報源が一元化され、クラスター全体の一貫性が確保されます。

1.2.1. SharedConfigMap カスタムリソースの作成

SharedConfigMap カスタムリソース (CR) インスタンスを作成すると、namespace 間で ConfigMap オブジェクトを共有できます。

前提条件

  • 他の namespace で共有する ConfigMap オブジェクトを作成した。ConfigMap オブジェクトを作成するには、「入力シークレットおよび ConfigMap の追加」を参照してください。
  • 次の操作を実行するための権限がある。

    • クラスタースコープレベルで sharedconfigmaps.sharedresource.openshift.io CR を作成する。
    • SharedConfigMap CR の ClusterRole オブジェクトを作成する。
    • Shared Resource Container Storage Interface (CSI) Driver の Role および RoleBinding オブジェクトを作成する。
    • インスタンスを取得、リスト表示、監視できるユーザーを制御するために、クラスター内の namespace 全体のロールとロールバインディングを管理する。
    • Pod によって指定されたサービスアカウントが、SharedConfigMap CR を使用して、ConfigMap オブジェクトを参照する csi ボリュームをマウントできるように、ロールとロールバインディングを管理する。
    • 共有する ConfigMap オブジェクトが含まれている namespace にアクセスする。

手順

  1. Shared Resource CSI Driver に ConfigMap オブジェクトへのアクセス権を付与するための Role および RoleBinding オブジェクトを作成します。次の設定例を参照してください。

    Role オブジェクトの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: shared-test-config
      namespace: <name_of_the_source_namespace> 
    1
    
    rules:
      - apiGroups: [""]
        resources: ["configmaps"]
        resourceNames: ["shared-config"]
        verbs: ["get", "list", "watch"]

    1
    <name_of_the_source_namespace> は、ソース namespace の名前に置き換えます。

    RoleBinding オブジェクトの例

     apiVersion: rbac.authorization.k8s.io/v1
     kind: RoleBinding
     metadata:
       name: shared-test-config
       namespace: <name_of_the_source_namespace> 
    1
    
     roleRef:
       apiGroup: rbac.authorization.k8s.io
       kind: Role
       name: shared-test-config
     subjects: 
    2
    
       - kind: ServiceAccount
         name: csi-driver-shared-resource
         namespace: openshift-builds

    1
    <name_of_the_source_namespace> は、ソース namespace の名前に置き換えます。
    2
    Shared Resource CSI Driver DaemonSet 用のサービスアカウントのリストを指定します。builds for Red Hat OpenShift でデプロイされた場合、サービスアカウント名は csi-driver-shared-resource になり、namespace は Builds for Red Hat OpenShift Operator がデプロイされている namespace と同じになります。
  2. クラスター内の namespace 間で共有する ConfigMap オブジェクト用の SharedConfigMap CR を作成します。次の例はサンプル設定を示しています。

    apiVersion: sharedresource.openshift.io/v1alpha1
    kind: SharedConfigMap
    metadata:
      name: share-test-config 
    1
    
    spec:
      configMapRef:
        name: shared-config
        namespace: <name_of_the_source_namespace> 
    2
    1
    SharedConfigMap CR の名前を指定します。
    2
    <name_of_the_source_namespace> は、ソース namespace の名前に置き換えます。
  3. 参照される共有リソースを使用するためのロールベースアクセス制御 (RBAC) 権限を付与する ClusterRole CR インスタンスを作成します。次の例はサンプル設定を示しています。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: <cluster_role_name> 
    1
    
    rules:
      - apiGroups:
          - sharedresource.openshift.io
        resources:
          - sharedconfigmaps
        resourceNames:
          - share-test-config 
    2
    
        verbs:
          - use
    1
    <cluster_role_name> は、クラスターロールの名前に置き換えます。
    2
    SharedSecret CR の名前を指定します。

1.2.2. Pod での SharedConfigMap カスタムリソースの使用

Pod から SharedConfigMap カスタムリソース (CR) にアクセスするには、その SharedConfigMap CR を使用するために必要なロールベースアクセス制御 (RBAC) 権限を、関連するサービスアカウントに付与する必要があります。

前提条件

  • クラスター内の namespace 間で共有する config map の SharedConfigMap CR インスタンスを作成した。
  • 次の操作を実行するための権限がある。

    • oc get sharedconfigmaps コマンドを実行して、SharedConfigMap CR インスタンスのリストを取得します。
    • oc adm policy who-can use <sharedsecret_identifier> コマンドを実行して、サービスアカウントが SharedSecret CR を使用できるかどうか、およびサービスアカウントが namespace にリストされるかどうかを確認する。
    • oc describe clusterrole <roleName> コマンドを実行して、Pod のサービスアカウントが csi ボリュームを使用できることを確認する。ユーザーとして Pod を作成した場合は、ユーザーが csi ボリュームを使用できることを確認する。
注記

最後の 2 つの前提条件を満たせない場合は、クラスター管理者に RBAC 権限を付与してもらうことで、サービスアカウントが SharedConfigMap CR を使用できるようになります。

手順

  1. ロールに関連付けられた RoleBinding オブジェクトを作成し、共有リソースを使用する権限をサービスアカウントに付与します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: use-shared-config
      namespace: <app_namespace> 
    1
    
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: use-shared-config
    subjects:
      - kind: ServiceAccount
        name: <service_account_name> 
    2
    1
    <app_namespace> は、アプリケーションの namespace 名に置き換えます。
    2
    <service_account_name> は、アプリケーションのサービスアカウント名に置き換えます。
  2. Shared Resource Container Storage Interface (CSI) Driver を、Pod または CSI ボリュームを受け入れるその他のリソースにマウントします。

    apiVersion: v1
    kind: Pod
    metadata:
      name: example-shared-config
      namespace: <app_namespace> 
    1
    
    spec:
      ...
      serviceAccountName: default
      volumes:
        - name: shared-config
          csi:
            readOnly: true
            driver: csi.sharedresource.openshift.io
            volumeAttributes:
              sharedConfigMap: share-test-config 
    2
    1
    <app_namespace> は、アプリケーションの namespace 名に置き換えます。
    2
    sharedConfigMap オブジェクトの名前を指定します。
    重要

    sharedConfigMap 属性の値が sharedConfigMap インスタンスの名前と一致しない場合、Pod は起動に失敗します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る