全部產品
Search
文件中心

Container Service for Kubernetes:使用配置項ConfigMap

更新時間:Oct 14, 2025

公司專屬應用程式部署涉及大量組態管理,寫入程式碼配置導致環境耦合,需為每個環境單獨構建鏡像。ConfigMap通過配置與應用解耦,實現同一鏡像適配多環境,專門儲存非敏感配置資料;Secret則用于敏感資料並提供安全保護。

選型參考

  • 資料卷掛載(推薦):配置以檔案形式提供,支援自動同步和熱更新。適用於完整設定檔管理和需要動態更新的情境。

  • 環境變數注入:配置直接注入到容器環境中。適用於簡單的運行參數、功能開關等情境。

建立配置項

示範如何建立配置項,以用於後續部署nginx樣本。

控制台

  1. 登入Container Service管理主控台,選擇叢集列表單擊目的地組群名稱,選擇組態管理 > 配置項

  2. 建立樣本配置項。選擇命名空間default,單擊建立

  3. 輸入配置項名稱,然後單擊+添加,填寫配置項名稱,最後單擊確定

    • 配置項名稱:app-config

    • 添加配置項:填寫配置項名稱和配置項的值。也可單擊從檔案匯入JSON檔案建立配置項。

      nginx.conf

      server {
          listen 80;
          location / {
              root /usr/share/nginx/html;
              index index.html;
          }
          location /health {
              return 200 "healthy\n";
              add_header Content-Type text/plain;
          }
      }

kubectl

  1. 通過kubectl工具串連叢集

  2. 建立ConfigMap。

    kubectl create configmap app-config \
      --namespace=default \
      --from-literal=nginx.conf="$(cat <<'EOF'
    server {
        listen 80;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
        location /health {
            return 200 "healthy\n";
            add_header Content-Type text/plain;
        }
    }
    EOF
    )" 
  3. 查看Configmap,輸出結果DATA:1,說明配置項建立成功。

    kubectl get configmap app-config

使用配置項

在工作負載中使用配置項時,工作負載與配置項需處於同一叢集和命名空間中。

方式一:資料卷掛載

控制台配置

  1. 登入Container Service管理主控台,選擇叢集列表單擊目的地組群名稱,選擇工作負載 > 無狀態

  2. 建立Deployment應用。

    1. 無狀態頁面,單擊使用鏡像建立

    2. 應用基本資料設定精靈頁面,配置應用的基本資料。

      • 應用程式名稱nginx-volume-demo命令空間default

      • 副本數量2類型無狀態(Deployment)

      然後單擊下一步,進入容器配置嚮導頁面。

    3. 配置鏡像名稱連接埠

      • 鏡像名:anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • 容器連接埠:80,協議為TCP。

      重要

      拉取此鏡像前,叢集需具備公網訪問能力。若在建立叢集時已勾選為專用網路配置 SNAT(預設開啟),則無需額外配置。否則,請參見為叢集開啟訪問公網的能力進行設定。

    4. 資料卷地區,單擊增加本機存放區,新增掛載配置項。配置好相應資訊後,單擊下一步

      • 儲存卷類型配置項名稱nginx-config掛載源app-config容器路徑/etc/nginx/conf.d

    5. 進階配置頁面,按需設定訪問、伸縮、調度和標籤註解後,單擊最下方的建立

    6. 建立完成頁面,查看應用任務。

      建立應用任務已提交面板,單擊查看應用詳情查看容器應用狀態是否為Running

  3. 驗證Configmap檔案是否掛載成功。

    選擇需要登入的容器(例如nginx-volume-demo-7xxxxxx****),單擊操作列的終端,選擇nginx登入容器。

    1. 輸出結果包含nginx.conf檔案,說明配置項掛載成功。

      ls -la /etc/nginx/conf.d/
    2. 驗證檔案內容是否正確。

      cat /etc/nginx/conf.d/nginx.conf

      輸出內容與配置項內容一致,表明資料卷掛載方式已成功使應用訪問到配置項資料。

kubectl配置

  1. 建立nginx-volume-demo.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-volume-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-volume
      template:
        metadata:
          labels:
            app: nginx-volume
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: nginx-config
              mountPath: /etc/nginx/conf.d
          volumes:
          - name: nginx-config
            configMap:
              name: app-config
              items:
              - key: nginx.conf
                path: nginx.conf
  2. 建立Deployment應用。

    kubectl apply -f  nginx-volume-demo.yaml
  3. 查看Deployment應用,Pod為Running狀態,說明應用建立成功。

    kubectl get pods -l app=nginx-volume -n default
  4. 輸出結果包含nginx.conf檔案,說明配置項掛載成功。

    kubectl exec deployment/nginx-volume-demo -n default -- ls -la /etc/nginx/conf.d/
  5. 驗證檔案內容是否正確。

    kubectl exec deployment/nginx-volume-demo -n default -- cat /etc/nginx/conf.d/nginx.conf

    輸出內容與配置項內容一致,表明資料卷掛載方式已成功使應用訪問到配置項資料。

方式二:環境變數注入

控制台配置

  1. 登入Container Service管理主控台,選擇叢集列表單擊目的地組群名稱,選擇工作負載 > 無狀態

  2. 建立Deployment應用。

    1. 無狀態頁面,單擊使用鏡像建立

    2. 應用基本資料設定精靈頁面,配置應用的基本資料。

      • 應用程式名稱nginx-env-demo命令空間default

      • 副本數量2類型無狀態(Deployment)

      然後單擊下一步,進入容器配置嚮導頁面。

    3. 配置鏡像名稱連接埠

      • 鏡像名:anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • 容器連接埠:80,協議為TCP。

      重要

      拉取此鏡像前,叢集需具備公網訪問能力。若在建立叢集時已勾選為專用網路配置 SNAT(預設開啟),則無需額外配置。否則,請參見為叢集開啟訪問公網的能力進行設定。

    4. 環境變數地區,單擊新增配置好相應資訊後,單擊下一步

      • 類型為配置項;名稱CONFIG_變數/變數引用app-config

    5. 進階配置頁面,按需設定訪問、伸縮、調度和標籤註解後,單擊最下方的建立

    6. 建立完成頁面,查看應用任務。

      建立應用任務已提交面板,單擊查看應用詳情查看容器狀態是否為Running

  3. 驗證環境變數是否注入成功。

    選擇需要登入的容器(例如nginx-env-demo-7xxxxxx****),單擊操作列的終端,選擇nginx登入容器。

    env | grep CONFIG_

    輸出內容與配置項內容一致,表明環境變數注入方式已成功使應用訪問到配置項資料。

kubectl配置

  1. 建立nginx-env-demo.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-env-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-env
      template:
        metadata:
          labels:
            app: nginx-env
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            # 批量注入ConfigMap
            envFrom:
            - prefix: CONFIG_
              configMapRef:
                name: app-config
    
  2. 建立Deployment應用。

    kubectl apply -f nginx-env-demo.yaml
  3. 查看Deployment應用,輸出Pod為Running狀態,說明應用建立成功。

    kubectl get pods -l app=nginx-env -n default
  4. 驗證環境變數是否注入成功。

    kubectl exec deployment/nginx-env-demo -n default -- env | grep CONFIG_

    輸出內容與配置項內容一致,表明環境變數注入方式已成功使應用訪問到配置項資料。

管理配置項

配置項建立完成後,可以在配置項頁面進行以下操作:

操作

說明

編輯配置項

單擊目標配置項右側操作列下的編輯,可修改配置項的名稱

重要

修改正在使用的配置項將直接影響關聯應用的運行狀態,導致服務重啟或功能異常。建議在變更前充分評估影響範圍,並在業務低峰期執行操作。

刪除配置項

單擊目標配置項右側操作列下的刪除,刪除不再使用的配置項。

重要

請勿刪除叢集自動產生的系統配置項,這些配置項位於 kube-system 和 kube-public 命名空間下(如 CoreDNS Configuration),刪除後可能影響叢集正常運行。

相關文檔