首页 > 解决方案 > 如何在主容器中加载环境变量

问题描述

我试图在初始化容器中获取秘密并将它们传递给主容器。我这里有2个问题,

  1. 如何在初始化容器中传递外部机密
  2. 如何在主容器中将它们称为环境变量

标签: kubernetes

解决方案


您可以在 initContainer 和 mainContainer 上挂载与环境变量相同的秘密。

给定一个秘密,例如:

k create secret generic mysecret --from-literal=key=secret

这将是这样的:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: mypod
  name: mypod
spec:
  initContainers:
  - name: init
    image: busybox
    env:
    - name: SECRET
      valueFrom:
        secretKeyRef:
          name: mysecret
          key: key
    command: ['sh','-c','echo $SECRET']
  containers:
  - image: busybox
    name: mypod
    resources: {}
    env:
    - name: SECRET
      valueFrom:
        secretKeyRef:
          name: mysecret
          key: key
    command: ['sh','-c','echo $SECRET']
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

运行 pod 时,看到它们都在打印相同秘密的内容。

kubectl logs mypod -c init
secret

kubectl logs mypod
secret

推荐阅读