搜索

23.5. 为 Pod 配置投射卷

download PDF

以下示例演示了如何使用投射卷挂载现有 Secret 卷源。

可以使用这些步骤从本地文件创建用户名和密码 secret。然后,创建一个只运行一个容器的 pod,使用投射卷将 Secret 挂载到同一个共享目录中。

  1. 创建包含 secret 的文件:

    例如:

    $ nano secret.yaml

    输入以下内容,根据需要替换密码和用户信息:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      pass: MWYyZDFlMmU2N2Rm
      user: YWRtaW4=

    userpass 值可以是采用 base64 编码的任意有效字符串。此处的示例使用了 base64 编码值 user: adminpass:1f2d1e2e67df

    $ echo -n "admin" | base64
    YWRtaW4=
    $ echo -n "1f2d1e2e67df" | base64
    MWYyZDFlMmU2N2Rm
  2. 使用以下命令来创建 secret:

    $ oc create -f <secrets-filename>

    例如:

    $ oc create -f secret.yaml
    secret "mysecret" created
  3. 您可以使用以下命令来检查是否创建了 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
  4. 创建类似以下示例的 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
  5. 从配置文件创建 pod:

    $ oc create -f <your_yaml_file>.yaml

    例如:

    $ oc create -f secret-pod.yaml
    pod "test-projected-volume" created
  6. 验证 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
  7. 在另一个终端中,使用 oc exec 命令打开到正在运行的容器的 shell:

    $ oc exec -it <pod> <command>

    例如:

    $ oc exec -it test-projected-volume -- /bin/sh
  8. 在 shell 中,验证 projected-volumes 目录是否包含您的投射源:

    / # ls
    bin               home              root              tmp
    dev               proc              run               usr
    etc               projected-volume  sys               var
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.