You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从挂载文件为Kubernetes MariaDB部署设置环境变量值

从挂载文件设置MariaDB环境变量的解决方案

你的需求是把挂载卷中/etc/gsm/key.pem文件的内容赋值给MARIADB_ROOT_PASSWORD环境变量,直接设置文件路径是无效的。由于Secret和ConfigMap方案不可用,可以通过修改容器启动命令的方式实现:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb-deployment
  namespace: readonly-ns
spec:
  replicas: 1  # 补充原配置缺失的副本数
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      volumes:
        - name: cert-volume
          emptyDir: {}
      serviceAccountName: readonly-sa
      initContainers:
        - name: init
          image: google/cloud-sdk:slim
          command: ["/bin/sh"]
          args:
            - -c
            - >-
                gcloud secrets versions access "latest" --secret=bq-readonly-key > /etc/gsm/key.pem
          volumeMounts:
           - name: cert-volume
             mountPath: /etc/gsm/
      containers:
      - name: mariadb
        image: mariadb
        ports:
        - containerPort: 3306
        # 通过启动命令读取文件内容注入环境变量
        command: ["/bin/sh", "-c"]
        args:
          - >-
              export MARIADB_ROOT_PASSWORD=$(cat /etc/gsm/key.pem) &&
              docker-entrypoint.sh mysqld
        volumeMounts:
         - name: cert-volume
           mountPath: /etc/gsm/

修改说明

  1. 补充了spec.replicas的数值(K8s Deployment必须明确副本数量)
  2. 移除原env字段,改用容器启动命令读取文件内容并设置环境变量
  3. 通过export MARIADB_ROOT_PASSWORD=$(cat /etc/gsm/key.pem)将文件中的密码内容注入环境变量,再执行MariaDB官方镜像的默认启动脚本docker-entrypoint.sh mysqld,保证服务正常启动

内容的提问来源于stack exchange,提问作者Krikor Garabed Kafalian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:55:23