kubernetes - 如何从多个 ConfigMap 资源构建 DSN env?
问题描述
为了服务工作,它需要一个名为的环境变量DSN
,它打印到类似postgres://user:password@postgres.svc.cluster.local:5432/database
. 我用ConfigMap
资源建立的这个值:
apiVersion: v1
kind: ConfigMap
metadata:
name: idp-config
namespace: diary
data:
DSN: postgres://user:password@postgres.svc.cluster.local:5432/database
此 ConfigMap 作为环境变量安装在我的服务 Pod 中。由于值与 and 不同,user
并且password
这些 PostgreSQL 凭据位于另一个 k8s 资源(aSecret
和 a ConfigMap
)中,我如何才能DSN
在 k8s 资源 yaml 中正确构建此环境,以便我的服务可以连接到数据库?
解决方案
深入研究我找到的 Kubernetes Docs。根据为容器定义环境变量:
您在 Pod 的配置中定义的环境变量可以在配置的其他地方使用,例如在您为 Pod 的容器设置的命令和参数中。在下面的示例配置中,GREETING、HONORIFIC 和 NAME 环境变量分别设置为 Warm greetings to、The Most Honorable 和 Kubernetes。然后在传递给 env-print-demo 容器的 CLI 参数中使用这些环境变量。
apiVersion: v1
kind: Pod
metadata:
name: print-greeting
spec:
containers:
- name: env-print-demo
image: bash
env:
- name: GREETING
value: "Warm greetings to"
- name: HONORIFIC
value: "The Most Honorable"
- name: NAME
value: "Kubernetes"
command: ["echo"]
args: ["$(GREETING) $(HONORIFIC) $(NAME)"]
推荐阅读
- c# - C#:使用 LINQ to Datatable 获取动态列名的值
- javascript - Graphql查询只解析_id字段,其他字段为空
- chart.js - 使用 chart.js 的年龄金字塔图
- php - 在 Laravel 中构建控制器时接口不可实例化
- python - 如何使用 pyWikiBot 创建或编辑页面
- google-analytics - 突然出现错误:配额组“默认”超出配额并限制“每天查询”
- kapacitor - 全局死机警报方法的提示
- flutter - Flutter:注册后如何从用户那里获取更多信息?
- java - Drools 7 + Spring Boot 2:预编译 drools kiemodule(由 maven kie 扫描仪加载)
- visual-studio-code - 如何显示/创建 vscode 的内联框?