将所有机密作为环境变量插入kubernetes部署

时间:2018-10-04 10:21:27

标签: kubernetes google-kubernetes-engine kubernetes-secrets

我有许多秘密要传递到k8部署中,该部署变得非常冗长,下面是从redis-secrets秘密中传入redis秘密的一个示例。

- name: REDIS_HOST
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_HOST
- name: REDIS_PASSWORD
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_PASSWORD
- name: REDIS_PORT
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_PORT

是否可以将redis-secrets中的所有机密传递到部署中,而这些机密的键是env变量键?

2 个答案:

答案 0 :(得分:6)

我没有在秘密上尝试过,但是值得一试。我在configmaps中使用过。

与env相同的级别,即.spec.containers

envFrom: - secretRef: name: redis-secrets

答案 1 :(得分:0)

我不确定您的特定用例,但是您可以像这样在部署中设置环境变量(显示了两个示例,一个示例中redis键名是env变量的“键值”,另一个示例中只是具有键作为redis键,值作为您期望的“键值”):

   environment:
      - REDIS_PORT=12345
      - KEY1=REDIS_PASSWORD      
      - KEY2=REDIS_PORT

您的应用程序可以根据需要使用这些。它可以加载Key1 / Key2,然后从秘密存储区中查找REDIS_PORT和REDIS_PASSWORD,或者您可以直接加载REDIS_PORT并使用env变量中的端口号。