【问题标题】:Create or edit Kubernetes secret from a job从作业创建或编辑 Kubernetes 密钥
【发布时间】:2021-06-08 16:04:05
【问题描述】:

我正在尝试从 Kubernetes 作业生成 Kubernetes 机密。秘诀是 TLS 证书,对于弹性搜索传输,我尝试了这项工作:

apiVersion: batch/v1
kind: Job
metadata:
  name: conso-security-tls-gen-certs
spec:
  template:
    spec:
      containers:
      - name: generator
        volumeMounts:
          - name: certs
            mountPath: "/certs"
        image: "docker.elastic.co/elasticsearch/elasticsearch:7.4.2"
        command: ["/bin/sh", "-c"]
        args:
        - "bin/elasticsearch-certutil ca (...) --silent -out /certs/bundle.p12"
      restartPolicy: Never
      volumes:
      - name: certs
        secret:
          secretName: conso-security-tls-certs
  backoffLimit: 4

但正如https://github.com/kubernetes/kubernetes/issues/62099 所说,卷/certs 是只读的。有没有办法像这样创建/编辑这个秘密?

【问题讨论】:

    标签: kubernetes kubernetes-secrets kubernetes-jobs


    【解决方案1】:

    一旦容器/pod 消失,Volumes from secrets 就消失了。此外,更新从 Secret 创建的卷中的文件不会更新 Secret 本身。

    看来作业的目标是生成证书并使用该证书创建或更新Secret 对象?如果是这种情况,我建议考虑使用 Kubernetes APIkubectl 从正在运行的容器中操作 Secrets。您需要设置并使用一个Service Account,该Service Account 有权使用给定命名空间中的Secrets。

    【讨论】:

    • 谢谢,我在想这是一个很常见的情况(通过 Job 生成证书,并存储在一个秘密中)。
    • 我认为,通常情况下,Secrets 是预先创建并从环境变量中引用或作为卷安装的。但我也可以看到,在动态环境中,人们可能希望如何使用 Kubernetes Jobs 动态生成 Secret。
    猜你喜欢
    • 2021-06-02
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多