kubernetes - K8s的秘密组成
问题描述
我正在使用 helm/k8s 部署第三方(prisma)容器。容器需要一个 yaml 形式的环境变量,类似于
port: 4466
managementApiSecret: $PRISMA_SECRET
databases:
default:
connector: postgres
host: postgresql
port: 5432
user: postgres
password: $PG_SECRET
migrations: true
我可以访问 postgres 密码和 managementApiSecret 作为单独密钥中的值。我正在尝试创建获取两个秘密并使用它们来创建环境变量的 pod。我目前对解决方案的尝试如下所示。
containers:
- name: prisma
image: 'prismagraphql/prisma:1.14'
ports:
- name: prisma-4466
containerPort: 4466
env:
- name: PG_SECRET
valueFrom:
secretKeyRef:
name: postgresql
key: postgres-password
- name: PRISMA_CONFIG
value: |
port: 4466
managementApiSecret: $PRISMA_SECRET
databases:
default:
connector: postgres
host: postgresql
port: 5432
user: postgres
password: $PG_SECRET
migrations: true
这似乎不起作用(因为秘密是在 kubectl apply 时评估的?)。是否有另一种方法可以使用秘密信息创建环境变量?
解决方案
来自 envvar 文档:https ://kubernetes.io/docs/reference/generated/kubernetes-api/v1.12/#envvar-v1-core
变量引用 $(VAR_NAME) 使用容器中先前定义的环境变量和任何服务环境变量进行扩展。
您的第二个 envvar 可以使用早期 envvar 的值作为$(PG_SECRET)
推荐阅读
- reactjs - 刷新页面时总是出错...(REACT.JS)
- javascript - 如何在 nodejs 服务器上使用 HTTP POST 数据?
- r - R使用formattable更改数据框/ HTML表中文本的颜色
- python - /proc/*/fd 中的那些异步文件是什么
- node.js - Mongoose 填充到静态数组
- angular - Angular 代理无法处理对同一路径的两个并行调用
- javascript - 加载相同的 util,js 两次
- c++ - 在 C++ 中从外部文件输入/输出,而不在主文件中添加额外的代码
- javascript - Javascript列表视图到网格视图问题
- asp.net - 跨域请求被阻止:同源策略不允许读取远程资源?