我正在使用一个 Kubernetes ConfigMap,其中包含应用程序的数据库配置,并且有一个秘密,其中包含数据库密码。 我需要在 ConfigMap 中使用此秘密,以便在尝试添加环境变量到 ConfigMap 并从秘密中在 pod 部署中指定值时,我能够连接到密码为该变量的 MySQL 数据库,但是由于 ConfigMap 中的值将变量的确切字符串,因此无法连接到 mysql。
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"
和 deployment.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"
注意:密码存在,我能够获取"mysql-root-password"的值并用它登录到数据库