【问题标题】:Is there a way to put Kubernetes secret value in args field of yaml file有没有办法将 Kubernetes 秘密值放在 yaml 文件的 args 字段中
【发布时间】:2018-10-19 06:51:25
【问题描述】:

我有一个 kubernetes yaml 部署文件,它接受 db 用户名和密码作为参数,如下所示。

args:
        - "-db_host=postgres"
        - "-db_port=5432"
        - "-db_username=postgres"
        - "-db_password=postgres"

为了隐藏 db_username 和 db_password 的值,我想到了使用 kubernetes secret kind。但要实现这一点,我必须将 db_username 和 db_password 作为环境变量,以便我可以使用它,如下所示:

args:
        - "-db_host=postgres"
        - "-db_port=5432"
env:
        - name: db_username
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: db-user
        - name: db_password
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: db-pass

有什么方法可以在 args 本身中使用秘密,这样我就不必使用第二种方法。

【问题讨论】:

    标签: kubernetes kubernetes-security kubernetes-secrets


    【解决方案1】:

    一旦你有了一个环境变量,你就可以将它的值嵌入到参数中:

    env:
    - name: MESSAGE
      value: "hello world"
    command: ["/bin/echo"]
    args: ["$(MESSAGE)"]
    

    或者在你的情况下:

    args:
            - "-db_host=postgres"
            - "-db_port=5432"
            - "-db_username=$(db_username)"
            - "-db_password=$(db_password)"
    env:
            - name: db_username
              valueFrom:
                secretKeyRef:
                  name: db-secret
                  key: db-user
            - name: db_password
              valueFrom:
                secretKeyRef:
                  name: db-secret
                  key: db-pass
    

    参考可以找到here

    【讨论】:

    • 强调括号,即:$(VAR) 而不是 accolades,即:${VAR},因为后者将返回一个空值...
    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2016-02-17
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2022-08-08
    相关资源
    最近更新 更多