我想知道我是否能够从文件传播环境变量。
猜猜我有一个像这样的文件:
ENV_VARIABLE_USERNAME=username
ENV_VARIABLE_PASSWORD=password
我想在播客开始时,将此内容文件作为环境变量传播。
有可能吗?
答案 0 :(得分:1)
通常来说,对于环境变量,您可以通过configMap来完成。但是,由于这是用户名和密码(敏感信息),因此您可以通过秘密方式进行操作。
例如,给定Pod(在此示例中为redis)和以下“秘密”:
apiVersion: v1
kind: Secret
metadata:
name: credentials
type: Opaque
data:
username: dXNlcm5hbWU= //username -> encoded base64
password: cGFzc3dvcmQ= //password -> encoded base64
注意:您需要对所有数据进行秘密编码。这是用base64编码的:
echo -n username | base64
还有吊舱:
apiVersion: v1
kind: Pod
metadata:
name: redis-pod
spec:
containers:
- name: redis
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: credentials
key: username
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: credentials
key: password
restartPolicy: Never
现在,如果您在Pod中运行env | grep SECRET
,我将正确初始化变量:
nerus:~/workspace (master) $ kubectl exec redis-pod env | grep SECRET
SECRET_USERNAME=username
SECRET_PASSWORD=password
答案 1 :(得分:0)
我在Kubernetes清单中使用了j2cli
和Jinja模板。清单是用Jinja模板编写的,j2cli可以为我传递环境变量:
j2 --format=env config.j2 data.env
答案 2 :(得分:0)
如果您的Kubernetes版本高于1.6,则可以将文件配置为ConfigMap:
kubectl create configmap yourconfigmap --from-env-file=YOUR_ENV_FILE
,然后使用your pod as environment variable
中configmap的内容 apiVersion: v1
kind: Pod
metadata:
name: yourpod
spec:
containers:
- name: test-container
image: yourimage
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: yourconfigmap
restartPolicy: Never