如果项目需要一些灵活配置,减少硬编码或者避免敏感信息的暴露,可以考虑使用Kubernetes Pod下的容器的环境变量。
Pod容器设置环境变量的方式:
- 可以通过Deployment配置文件的env字段来设置环境变量
- value
env: - name: ACTIVE_PROFILE value: "dev"
- valueFrom
- fieldRef 引用字段
- configMapKeyRef 引用ConfigMap指定变量
- secretKeyRef 引用Secret指定变量
env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: ENV_PARAM1 valueFrom: configMapKeyRef: name: sample-cm key: env.param1 - name: ENV_PARAM2 valueFrom: secretKeyRef: name: sample-secret key: env.param2
- 可以通过Deployment配置文件的envFrom字段来设置环境变量。
- configMapRef 引用ConfigMap全部变量
- secretRef 引用Secret全部变量
envFrom: - configMapRef: name: sample-cm - secretRef: name: sample-secret
- 查看Pod容器的环境变量
- kubectl exec -it sample-service-76484b7b7c-m6qjh -n sample1 – printenv
- 可以看到环境变量里面包含了envFrom引用的ConfigMap和Secret的Key/Value、env中设置的Key/Value、Service的相关变量。优先级:Service的变量 > env显式定义的变量 > envFrom批量注入的变量