pjo*_*hin 3 kubernetes kubernetes-deployment
我们有一组部署(一组Pod)都使用相同的docker映像。例子:
它们都需要一组通用的环境变量,例如数据库主机的位置,外部服务的秘密密钥等。它们还具有一组不通用的环境变量。
无论如何,有人可以:
最佳解决方案是一种了解名称空间的解决方案,因为我们使用kubernetes名称空间来分隔测试,阶段和产品环境。
类似于dockers env_file的东西会很好。但我找不到与此相关的任何示例或参考。我唯一能找到的是通过机密设置env,但这并不干净,因为我仍然需要为每个部署编写所有环境变量。
您可以使用所有常见的env变量对创建ConfigMapkye:value
。
然后,您可以重用configmap在中将configMap
as环境的所有值声明为Deployment
。
这是一个来自kubernetes官方文档的示例。
创建一个包含多个键值对的ConfigMap。
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm
Run Code Online (Sandbox Code Playgroud)
使用envFrom将ConfigMap的所有数据定义为Pod环境变量。ConfigMap中的键成为Pod中的环境变量名称。
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: special-config # All the key-value pair will be taken as environment key-value pair
env:
- name: uncommon
value: "uncommon value"
restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)
您可以在env
字段中指定不常见的环境变量。
现在,要验证环境变量是否实际可用,请参阅日志。
$ kubectl logs -f test-pod
KUBERNETES_PORT=tcp://10.96.0.1:443
SPECIAL_LEVEL=very
uncommon=uncommon value
SPECIAL_TYPE=charm
...
Run Code Online (Sandbox Code Playgroud)
在这里,可以看到所有提供的环境均可用。
归档时间: |
|
查看次数: |
2070 次 |
最近记录: |