第1章 Shared Resource CSI Driver Operator


ストレージベンダーはこれまで Kubernetes の一部としてストレージドライバーを提供してきました。Container Storage Interface (CSI) の実装により、サードパーティープロバイダーは、Kubernetes のコアコードを変更することなく、標準インターフェイスを使用してストレージプラグインを提供できます。CSI Operator は、in-tree のボリュームプラグインでは不可能なボリュームスナップショットなどのストレージオプションを Builds ユーザーに提供します。

Shared Resource CSI Driver は特殊なタイプの CSI ドライバーです。これを使用すると、クラスター管理者は csi ボリュームタイプを使用して、namespace 間で Secret オブジェクトと ConfigMap オブジェクトをセキュアに共有できます。Shared Resource CSI Driver は、インラインの一時ボリュームをプロビジョニングし、Pod と OpenShift Container Platform Builds がこれらの共有リソースを使用できるようにします。

Shared Resource CSI Driver は、次の種類のカスタムリソースをサポートしています。

  • Secret オブジェクトを共有するための SharedSecret カスタムリソース
  • ConfigMap オブジェクトを共有するための SharedConfigMap カスタムリソース

1.1. namespace 間での Secret オブジェクトの共有

Secret オブジェクトは、パスワード、OAuth トークン、SSH 鍵などの機密情報を保存および管理するために使用されます。SharedSecret カスタムリソース (CR) を使用すると、Secret オブジェクトを手動で複製することなく、クラスター内の異なる namespace 間でオブジェクトをセキュアに共有できます。Secret オブジェクトを共有すると、機密データの情報源が一元化され、許可された namespace がそのデータに確実にアクセスできるようになります。

1.1.1. SharedSecret カスタムリソースの作成

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

前提条件

  • 他の namespace で共有する Secret オブジェクトを作成した。Secret オブジェクトを作成するには、「Secret の作成」を参照してください。
  • クラスターにサブスクライブし、Insights Operator を通じてエンタイトルメントキーを同期した。
  • 次の操作を実行するための権限がある。

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

手順

  1. 次の設定例を使用して、Shared Resource CSI Driver に SharedSecret オブジェクトへのアクセス権を付与する Role オブジェクトと RoleBinding オブジェクトを作成します。

    Role オブジェクトの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: share-etc-pki-entitlement 
    1
    
      namespace: openshift-config-managed
    rules:
      - apiGroups:
          - ""
        resources:
          - secrets
        resourceNames:
          - etc-pki-entitlement
        verbs:
          - get
          - list
          - watch
    Copy to Clipboard Toggle word wrap

    1
    Role CR の名前。

    RoleBinding オブジェクトの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: share-etc-pki-entitlement 
    1
    
      namespace: openshift-config-managed
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: share-etc-pki-entitlement 
    2
    
    subjects:
      - kind: ServiceAccount
        name: csi-driver-shared-resource 
    3
    
        namespace: openshift-builds
    Copy to Clipboard Toggle word wrap

    1
    RoleBinding CR の名前。
    2
    Role CR の名前。
    3
    ServiceAccount CR の名前。
  2. 次の設定例を使用して、SharedSecret CR を作成します。

    apiVersion: sharedresource.openshift.io/v1alpha1
    kind: SharedSecret
    metadata:
      name: shared-test-secret 
    1
    
    spec:
      secretRef:
        name: test-secret
        namespace: <name_of_the_source_namespace>
    Copy to Clipboard Toggle word wrap
    1
    <name_of_the_source_namespace> は、SharedSecret CR の名前に置き換えます。
  3. 次の設定例を使用して、参照される共有リソースを使用するための RBAC 権限を付与する ClusterRole オブジェクトを作成します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: use-shared-test-secret 
    1
    
    rules:
      - apiGroups:
          - sharedresource.openshift.io
        resources:
          - sharedsecrets
        resourceNames:
          - shared-test-secret
        verbs:
          - use
    Copy to Clipboard Toggle word wrap
    1
    ClusterRole CR の名前。

1.1.2. Pod での SharedSecret カスタムリソースの使用

Pod から SharedSecret カスタムリソース (CR) にアクセスするには、サービスアカウントにロールベースのアクセス制御 (RBAC) 権限を付与します。

前提条件

  • クラスター内の namespace 間で共有する Secret オブジェクト用の SharedSecret CR インスタンスを作成した。
  • 次の操作を実行するための権限がある。

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

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

手順

  1. ロールに関連付けられた RoleBinding オブジェクトをクラスター内に作成し、共有リソースを使用する権限をサービスアカウントに付与します。次の設定例を参照してください。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: use-shared-secret 
    1
    
      namespace: app-namespace
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: use-shared-secret
    subjects:
      - kind: ServiceAccount
        name: <service_account_name> 
    2
    Copy to Clipboard Toggle word wrap
    1
    RoleBinding CR の名前。
    2
    <service_account_name> は、アプリケーションのサービスアカウント名に置き換えます。
  2. 共有リソース csi ドライバーを、csi ボリュームを受け入れる Pod またはその他のリソースにマウントします。次の設定例を参照してください。

    apiVersion: v1
    kind: Pod
    metadata:
      name: example-shared-secret
      namespace: <app_namespace> 
    1
    
    spec:
      ...
      serviceAccountName: default
      volumes:
        - name: shared-secret
          csi:
            readOnly: true
            driver: csi.sharedresource.openshift.io
            volumeAttributes:
              sharedSecret: shared-test-secret 
    2
    Copy to Clipboard Toggle word wrap
    1
    <app_namespace> は、アプリケーションの namespace 名に置き換えます。
    2
    sharedSecret 属性の値は、SharedSecret CR の名前と同じである必要があります。
    重要

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

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat