gpt4 book ai didi

kubernetes - 从 kubernetes secret 导入数据到配置映射

转载 作者:行者123 更新时间:2023-12-04 12:16:24 25 4
gpt4 key购买 nike

我正在使用一个包含应用程序数据库配置的 kubernetes ConfigMap,并且有一个包含数据库密码的 secret 。
我需要在 ConfigMap 中使用这个 secret ,所以当我尝试在 ConfigMap 中添加环境变量并从 secret 中指定 pod 部署中的值时,我无法使用密码连接到 mysql,因为 ConfigMap 中的值采用了变量的确切字符串。

apiVersion: v1
kind: ConfigMap
metadata:
name: config
data:
APP_CONFIG: |
port: 8080
databases:
default:
connector: mysql
host: "mysql"
port: "3306"
user: "root"
password: "$DB_PASSWORD"

和部署.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app
labels:
app: backend
spec:
replicas: 1
template:
metadata:
labels:
app: backend
spec:
containers:
- name: app
image: simple-app-image
ports:
- name: "8080"
containerPort: 8080
env:
- name: APP_CONFIG
valueFrom:
configMapKeyRef:
name: config
key: APP_CONFIG
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: "mysql-secret"
key: "mysql-root-password"

注意: secret 存在,我可以获得“mysql-root-password”值并用于登录数据库

最佳答案

Kubernetes 无法为您进行替换,您应该在容器的入口点使用 shell 进行替换。

这是一个工作示例。我修改默认入口点以使用该替换创建一个新变量。在此命令之后,您应该添加所需的入口点。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: app
labels:
app: backend
spec:
replicas: 1
template:
metadata:
labels:
app: backend
spec:
containers:
- name: app
image: simple-app-image
command:
- /bin/bash
- -c
args:
- "NEW_APP_CONFIG=$(echo $APP_CONFIG | envsubst) && echo $NEW_APP_CONFIG && <INSERT IMAGE ENTRYPOINT HERE>"
ports:
- name: "app"
containerPort: 8080
env:
- name: APP_CONFIG
valueFrom:
configMapKeyRef:
name: config
key: APP_CONFIG
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: "mysql-secret"
key: "mysql-root-password"

关于kubernetes - 从 kubernetes secret 导入数据到配置映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50452665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com