7.4.2. Pod の projected ボリュームの設定


projected ボリュームを作成する場合は、projected ボリュームについて で説明されているボリュームファイルパスの状態を考慮します。

以下の例では、projected ボリュームを使用して、既存のシークレットボリュームソースをマウントする方法が示されています。以下の手順は、ローカルファイルからユーザー名およびパスワードのシークレットを作成するために実行できます。その後に、シークレットを同じ共有ディレクトリーにマウントするために projected ボリュームを使用して 1 つのコンテナーを実行する Pod を作成します。

このユーザー名とパスワードの値には、base64 でエンコードされた任意の有効な文字列を使用できます。

以下の例は、base64 の admin を示しています。

$ echo -n "admin" | base64

出力例

YWRtaW4=

以下の例は、base64 のパスワード 1f2d1e2e67df を示しています。

$ echo -n "1f2d1e2e67df" | base64

出力例

MWYyZDFlMmU2N2Rm

手順

既存のシークレットボリュームソースをマウントするために projected ボリュームを使用するには、以下を実行します。

  1. シークレットを作成します。

    1. 次のような YAML ファイルを作成し、パスワードとユーザー情報を適切に置き換えます。

      apiVersion: v1
      kind: Secret
      metadata:
        name: mysecret
      type: Opaque
      data:
        pass: MWYyZDFlMmU2N2Rm
        user: YWRtaW4=
    2. 以下のコマンドを使用してシークレットを作成します。

      $ oc create -f <secrets-filename>

      以下に例を示します。

      $ oc create -f secret.yaml

      出力例

      secret "mysecret" created

    3. シークレットが以下のコマンドを使用して作成されていることを確認できます。

      $ oc get secret <secret-name>

      以下に例を示します。

      $ oc get secret mysecret

      出力例

      NAME       TYPE      DATA      AGE
      mysecret   Opaque    2         17h

      $ oc get secret <secret-name> -o yaml

      以下に例を示します。

      $ oc get secret mysecret -o yaml
      apiVersion: v1
      data:
        pass: MWYyZDFlMmU2N2Rm
        user: YWRtaW4=
      kind: Secret
      metadata:
        creationTimestamp: 2017-05-30T20:21:38Z
        name: mysecret
        namespace: default
        resourceVersion: "2107"
        selfLink: /api/v1/namespaces/default/secrets/mysecret
        uid: 959e0424-4575-11e7-9f97-fa163e4bd54c
      type: Opaque
  2. projected ボリュームを持つ Pod を作成します。

    1. volumes セクションを含む、次のような YAML ファイルを作成します。

      kind: Pod
      metadata:
        name: test-projected-volume
      spec:
        securityContext:
          runAsNonRoot: true
          seccompProfile:
            type: RuntimeDefault
        containers:
        - name: test-projected-volume
          image: busybox
          args:
          - sleep
          - "86400"
          volumeMounts:
          - name: all-in-one
            mountPath: "/projected-volume"
            readOnly: true
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
        volumes:
        - name: all-in-one
          projected:
            sources:
            - secret:
                name: mysecret 
      1
      1
      作成されたシークレットの名前。
    2. 設定ファイルから Pod を作成します。

      $ oc create -f <your_yaml_file>.yaml

      以下に例を示します。

      $ oc create -f secret-pod.yaml

      出力例

      pod "test-projected-volume" created

  3. Pod コンテナーが実行中であることを確認してから、Pod への変更を確認します。

    $ oc get pod <name>

    以下に例を示します。

    $ oc get pod test-projected-volume

    出力は以下のようになります。

    出力例

    NAME                    READY     STATUS    RESTARTS   AGE
    test-projected-volume   1/1       Running   0          14s

  4. 別のターミナルで、oc exec コマンドを使用し、実行中のコンテナーに対してシェルを開きます。

    $ oc exec -it <pod> <command>

    以下に例を示します。

    $ oc exec -it test-projected-volume -- /bin/sh
  5. シェルで、projected-volumes ディレクトリーに投影されたソースが含まれていることを確認します。

    / # ls

    出力例

    bin               home              root              tmp
    dev               proc              run               usr
    etc               projected-volume  sys               var

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る