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 ボリュームを使用するには、以下を実行します。
シークレットを作成します。
次のような YAML ファイルを作成し、パスワードとユーザー情報を適切に置き換えます。
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=以下のコマンドを使用してシークレットを作成します。
$ oc create -f <secrets-filename>以下に例を示します。
$ oc create -f secret.yaml出力例
secret "mysecret" createdシークレットが以下のコマンドを使用して作成されていることを確認できます。
$ 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 yamlapiVersion: 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
projected ボリュームを持つ Pod を作成します。
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: mysecret1 - 1
- 作成されたシークレットの名前。
設定ファイルから Pod を作成します。
$ oc create -f <your_yaml_file>.yaml以下に例を示します。
$ oc create -f secret-pod.yaml出力例
pod "test-projected-volume" created
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別のターミナルで、
oc execコマンドを使用し、実行中のコンテナーに対してシェルを開きます。$ oc exec -it <pod> <command>以下に例を示します。
$ oc exec -it test-projected-volume -- /bin/shシェルで、
projected-volumesディレクトリーに投影されたソースが含まれていることを確認します。/ # ls出力例
bin home root tmp dev proc run usr etc projected-volume sys var