23.5. 为 Pod 配置投射卷
以下示例演示了如何使用投射卷挂载现有 Secret 卷源。
可以使用这些步骤从本地文件创建用户名和密码 secret。然后,创建一个只运行一个容器的 pod,使用投射卷将 Secret 挂载到同一个共享目录中。
创建包含 secret 的文件:
例如:
$ nano secret.yaml
输入以下内容,根据需要替换密码和用户信息:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: pass: MWYyZDFlMmU2N2Rm user: YWRtaW4=
user
和pass
值可以是采用 base64 编码的任意有效字符串。此处的示例使用了 base64 编码值user: admin
和pass:1f2d1e2e67df
。$ echo -n "admin" | base64 YWRtaW4= $ 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 <secret-name> -o yaml
例如:
$ oc get secret mysecret NAME TYPE DATA AGE mysecret Opaque 2 17h
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
创建类似以下示例的 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: name: user - secret: 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