6.4.2. Pod の Projected ボリュームの設定
Projected ボリュームを作成する場合は、Pprojected ボリュームについてで説明されているボリュームファイルパスの状態を考慮します。
以下の例では、Projected ボリュームを使用して、既存のシークレットボリュームソースをマウントする方法が示されています。以下の手順は、ローカルファイルからユーザー名およびパスワードのシークレットを作成するために実行できます。その後に、シークレットを同じ共有ディレクトリーにマウントするために Projected ボリュームを使用して 1 つのコンテナーを実行する Pod を作成します。
手順
既存のシークレットボリュームソースをマウントするために Projected ボリュームを使用するには、以下を実行します。
以下を入力し、パスワードおよびユーザー情報を適宜置き換えて、シークレットを含むファイルを作成します。
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=
user
およびpass
の値には、base64 でエンコーティングされた任意の有効な文字列を使用できます。以下の例は、base64 の
admin
を示しています。$ echo -n "admin" | base64
出力例
YWRtaW4=
以下の例は、base64 のパスワード
1f2d1e2e67df
を示しています。$ echo -n "1f2d1e2e67df" | base64
出力例
MWYyZDFlMmU2N2Rm
以下のコマンドを使用してシークレットを作成します。
$ 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 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 設定ファイルを作成します。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: 1 name: user - secret: 2 name: pass
設定ファイルから 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