kubernetes - Kubernetes - 传入环境变量和服务名称(来自 DNS)
问题描述
我似乎找不到插入环境变量和服务名称的正确语法示例:
所以我有一个服务定义为:
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
将该密码设置为环境变量:
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"
解决方案
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 -
推荐阅读
- python - 如何将可变对象分配给作为 __init__() 函数的参数传递的类成员?
- angular - 更改路由时,我的数据源中的数据不断添加到现有表数据源中;Angular 7材料设计问题
- php - 批量更改订单信息作为特定 Woocommerce 订单 ID 的订单状态
- google-sheets - 如何在 Google 表格中创建简单的复制和保存功能?
- react-admin - 为多个 api 请求重写 Dataprovider 破坏了它,现在返回错误“无法读取未定义的属性 'hasOwnProperty'”
- python - 为什么我在 Keras 中得到负的 false_negative 计数(例如 -10)?
- c# - 将多个 rdlc 合并到单个 reportviewer 控件中
- django - 如何防止未登录的用户查看 context_processor
- c# - 如何在不使用 C# 中的单击事件(按钮)的情况下计算总数?
- mysql - 外键和 belongsTo 方法有问题