作为环境变量

Secret同样可以作为环境变量使用,和ConfigMap的配置方式一致,只需要更改对应的字段名即可,步骤如下:

  1. 首先创建一个Secret或者使用已有的Secret

    • 多个Pod可以引用同一个Secret

    • 一个Pod也可以引用多个Secret

  2. 为每个容器添加对应的Secret Key环境变量env.valueFrom.secretKeyRef

比如,定义SECRET_USERNAMESECRET_PASSWORD两个环境变量,其值来自于名字为db-user-pass的Secret:

pod-secret-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret-env
spec:
  containers:
  - name: nginx
    image: nginx:1.25.3
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            key: username.txt
            name: db-user-pass  # Secrete 名称
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            key: password.txt
            name: db-user-pass  # Secrete 名称
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 80
$ kubectl create -f pod-secret-env.yaml 
pod/pod-secret-env created

$ kubectl exec -it pod-secret-env -- env | grep SECRET_PASSWORD
SECRET_PASSWORD=123456

注意:

  • Secret在容器内是明文,因此不用操作其解码问题

  • envFrom的用法和ConfigMap一致,将configMapRef改为secretRef即可

最后更新于