我似乎无法找到插入环境变量和服务名称的正确语法示例:
所以我将服务定义为:
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: NodePort
ports:
- name: http
port: 3000
targetPort: 3000
selector:
app: test
然后我使用以下的秘密文件:
apiVersion: v1
kind: Secret
metadata:
name: test
labels:
app: test
data:
password: fxxxxxxxxxxxxxxx787xx==
只是为了确认我正在使用envFrom
将该密码设置为env变量:
apiVersion: v1
kind: Deployment
metadata:
name: test
spec:
replicas: 1
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: xxxxxxxxxxx
imagePullPolicy: Always
envFrom:
- configMapRef:
name: test
- secretRef:
name: test
ports:
- containerPort: 3000
现在在我的配置文件中,我想引用password
以及服务名称本身 - 这是正确的方法:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
labels:
app: test
data:
WORKING_URI: "http://somedomain:${password}@test"
答案 0 :(得分:0)
yaml配置不能像您提供的那样工作。
如果您想使用复杂的配置设置Kubernetes 你必须使用变量或动态赋值给其中一些 使用外部解析器替换变量占位符。我用 bash和sed来完成它。我改变了你的配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: test
labels:
app: test
data:
WORKING_URI: "http://somedomain:VAR_PASSWORD@test"
保存后,我创建了一个包含所需值的简单shell脚本。
#!/bin/sh
export PASSWORD="verysecretpwd"
cat deploy.yaml | sed "s/VAR_PASSWORD/$PASSWORD/g" | kubectl -f -