11

我有一个 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 本身中使用秘密,这样我就不必使用第二种方法。

4

1 回答 1

26

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

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

参考可以在这里找到

于 2018-05-09T08:17:12.120 回答