我是k8s的新手。因此,如果有任何建议,我将不胜感激。我们在AKS中有多个k8s名称空间。
我正在创建一个cronjob,它将在多个命名空间中的多个PostgreSQL pod上运行脚本。我创建了一个机密文件,以便在默认名称空间中安全地执行到单个目标POD的cronjob。这是我的秘密文件:
apiVersion: v1
kind: Secret
metadata:
name: db-secrets
type: Opaque
data:
"POSTGRES_PASSWORD": <encoded_password>
"POSTGRES_USER": <encoded_username>
stringData:
"DATABASE_HOST": postgres-db-postgresql-0.postgres-db-postgresql-headless.default.svc.cluster.local
有人能建议我去吗
- 如何使用我的机密文件DATABASE_HOST部分中目标PostgreSQL POD DNS的动态字符串,以便在k8s集群中部署后,每个cronjob都会动态获取目标POD DNS,并连接到自己命名空间中的POD
- 是否可以使用变量之类的东西来动态获取POD DNS
我在某个地方读到可以使用HELM,但是,我还没有时间使用HELM。
您可以结合使用Downward API和相互依赖的环境变量来构建名称空间特定的数据库主机名:
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: test
command:
- sh
- -c
- sleep 1000
image: busybox
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: DATABASE_HOST
value: "postgres-db-postgresql-0.postgres-db-postgresql-headless.$(POD_NAMESPACE).svc.cluster.local"