23.5. Pod の Projected ボリュームの設定
以下の例は、既存のシークレットボリュームをマウントするために Projected ボリュームを使用する方法を示しています。
以下の手順は、ローカルファイルからユーザー名およびパスワードの シークレット を作成するために実行できます。その後に、シークレットを同じ共有ディレクトリーにマウントするために Projected ボリュームを使用して 1 つのコンテナーを実行する Pod を作成します。
シークレットが含まれるファイルを作成します。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nano secret.yaml
$ nano secret.yaml
以下を入力し、パスワードおよびユーザー情報を適宜置き換えます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=
user
およびpass
の値には、base64 でエンコーティングされた任意の有効な文字列を使用できます。ここで使用される例は base64 でエンコーディングされた値 (user: admin
、pass:1f2d1e2e67df
) になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo -n "admin" | base64 echo -n "1f2d1e2e67df" | base64
$ echo -n "admin" | base64 YWRtaW4= $ echo -n "1f2d1e2e67df" | base64 MWYyZDFlMmU2N2Rm
以下のコマンドを使用してシークレットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f <secrets-filename>
$ oc create -f <secrets-filename>
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f secret.yaml
$ oc create -f secret.yaml secret "mysecret" created
シークレットが以下のコマンドを使用して作成されていることを確認できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get secret <secret-name> oc get secret <secret-name> -o yaml
$ oc get secret <secret-name> $ oc get secret <secret-name> -o yaml
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get secret mysecret
$ oc get secret mysecret NAME TYPE DATA AGE mysecret Opaque 2 17h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
volumes
セクションが含まれる 以下のような Pod 設定ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Pod metadata: name: test-projected-volume spec: containers: - name: test-projected-volume image: busybox args: - sleep - "86400" volumeMounts: - name: all-in-one mountPath: "/projected-volume" readOnly: true volumes: - name: all-in-one projected: sources: - secret: name: user - secret: name: pass
apiVersion: v1 kind: Pod metadata: name: test-projected-volume spec: containers: - name: test-projected-volume image: busybox args: - sleep - "86400" volumeMounts: - name: all-in-one mountPath: "/projected-volume" readOnly: true volumes: - name: all-in-one projected: sources: - secret: name: user - secret: name: pass
設定ファイルから Pod を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f <your_yaml_file>.yaml
$ oc create -f <your_yaml_file>.yaml
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f secret-pod.yaml
$ oc create -f secret-pod.yaml pod "test-projected-volume" created
Pod コンテナーが実行中であることを確認してから、Pod への変更を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod <name>
$ oc get pod <name>
出力は以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod test-projected-volume
$ oc get pod test-projected-volume NAME READY STATUS RESTARTS AGE test-projected-volume 1/1 Running 0 14s
別のターミナルで、
oc exec
コマンド を使用し、実行中のコンテナーに対してシェルを開きます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec -it <pod> <command>
$ oc exec -it <pod> <command>
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec -it test-projected-volume -- /bin/sh
$ oc exec -it test-projected-volume -- /bin/sh
シェルで、
projected-volumes
ディレクトリーに展開されるソースが含まれることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow / # ls bin home root tmp dev proc run usr etc projected-volume sys var
/ # ls bin home root tmp dev proc run usr etc projected-volume sys var