【问题标题】:How to copy kubernetes/openshift secrets into a volume for init container job?如何将 kubernetes/openshift 机密复制到初始化容器作业的卷中?
【发布时间】:2021-07-03 11:38:01
【问题描述】:

在通过 curl 构建 docker 文件期间,有一个 init 容器将 keystore.jks 从 nexus repo 复制到一个卷中。然后,一旦 init 容器处于活动状态,接受该 keystore.jks 并进行必要更新的 python 代码然后 init 容器就会死亡。我们要做的是将此keystore.jks作为秘密存储在openshift中,但是一旦init容器处于活动状态,如何将秘密复制到卷中?以便python代码可以像以前一样使用它?提前感谢任何 cmets/帮助!

【问题讨论】:

  • 只需mount the secret in the init container,然后将内容复制到您的目标卷中:或者更好的是,不要费心复制,只需将密钥安装在最终容器中并将您的 Python 代码指向适当的位置.

标签: docker kubernetes openshift persistent-volumes kubernetes-secrets


【解决方案1】:

正如@larsks 建议的那样,您可以将秘密挂载到卷并将其用于主容器。

在此分享 YAML 配置,可能有助于您理解。

apiVersion: v1
kind: Secret
metadata:
  name: ssh-key
  namespace: acme
data:
  id_rsa: {{ secret_value_base64_encoded }}

现在为挂载路径添加秘密

spec:
  template:
    spec:
      containers:
      - image: "my-image:latest"
        name: my-app
        ...
        volumeMounts:
          - mountPath: "/var/my-app"
            name: ssh-key
            readOnly: true
     initContainers:
     - command:
     - sh
     - -c
     - chown -R 1000:1000 /var/my-app #if any changes required
     image: busybox:1.29.2
     name: set-dir-owner
     securityContext:
       privileged: true
     volumeMounts:
     - mountPath: /var/my-app
       name: ssh-key
    volumes:
        - name: ssh-key
          secret:
            secretName: ssh-key

建议更好的选择是直接将秘密挂载到主容器而不使用 init contianer。

spec:
  template:
    spec:
      containers:
      - image: "my-image:latest"
        name: my-app
        ...
        volumeMounts:
          - mountPath: "/var/my-app"
            name: ssh-key
            readOnly: true
      volumes:
        - name: ssh-key
          secret:
            secretName: ssh-key

【讨论】:

  • Secret 已经添加,我们不需要在 YAML 中添加 secret,但我的问题是;这个 YAML 中有两个容器,我猜都添加了卷?主容器已经设置为使用卷,所以我们需要担心吗?它是否需要在同一个 YAML 中?只是 initContainer 需要获取秘密到 /tmp/src/dep/config/ 然后当它死时其他容器将使用该卷中的秘密。另外,上面的 YAML 的 ApiVersion 和元数据以及种类应该是什么?我只是糊涂了?
  • api 版本将是deployment init 容器会将密钥添加到卷挂载路径并被删除。
猜你喜欢
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 2021-10-02
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多