6.4.2. 为 Pod 配置投射卷
在创建投射卷时,请注意了解投射卷中介绍的卷文件路径情况。
以下示例演示了如何使用投射卷挂载现有的 secret 卷源。可以使用这些步骤从本地文件创建用户名和密码 secret。然后,创建一个只运行一个容器的 pod,使用投射卷将 secret 挂载到同一个共享目录中。
流程
使用投射卷挂载现有的 secret 卷源。
输入以下内容并相应地替换密码和用户信息,创建包含这些 secret 的文件:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=user和pass值可以是采用 base64 编码的任意有效字符串。以下示例显示
admin(base64 编码):$ echo -n "admin" | base64输出示例
YWRtaW4=以下示例显示
1f2d1e2e67df密码(base64 编码):$ echo -n "1f2d1e2e67df" | base64输出示例
MWYyZDFlMmU2N2Rm使用以下命令来创建 secret:
$ oc create -f <secrets-filename>例如:
$ oc create -f secret.yaml输出示例
secret "mysecret" created您可以使用以下命令来检查是否创建了 secret:
$ 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创建类似以下示例的 pod 配置文件,使其包含
volumes部分: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命令来打开连接到运行中容器的 shell:$ oc exec -it <pod> <command>例如:
$ oc exec -it test-projected-volume -- /bin/sh在 shell 中,验证
projected-volumes目录是否包含您的投射源:/ # ls输出示例
bin home root tmp dev proc run usr etc projected-volume sys var