公司專屬應用程式部署涉及大量組態管理,寫入程式碼配置導致環境耦合,需為每個環境單獨構建鏡像。ConfigMap通過配置與應用解耦,實現同一鏡像適配多環境,專門儲存非敏感配置資料;Secret則用于敏感資料並提供安全保護。
選型參考
資料卷掛載(推薦):配置以檔案形式提供,支援自動同步和熱更新。適用於完整設定檔管理和需要動態更新的情境。
環境變數注入:配置直接注入到容器環境中。適用於簡單的運行參數、功能開關等情境。
建立配置項
示範如何建立配置項,以用於後續部署nginx樣本。
控制台
登入Container Service管理主控台,選擇叢集列表。單擊目的地組群名稱,選擇。
建立樣本配置項。選擇命名空間為
default,單擊建立。輸入配置項名稱,然後單擊+添加,填寫配置項名稱和值,最後單擊確定。
配置項名稱: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
建立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 )"查看Configmap,輸出結果
DATA:1,說明配置項建立成功。kubectl get configmap app-config
使用配置項
在工作負載中使用配置項時,工作負載與配置項需處於同一叢集和命名空間中。
方式一:資料卷掛載
控制台配置
登入Container Service管理主控台,選擇叢集列表。單擊目的地組群名稱,選擇。
建立Deployment應用。
在無狀態頁面,單擊使用鏡像建立。
在應用基本資料設定精靈頁面,配置應用的基本資料。
應用程式名稱為
nginx-volume-demo;命令空間為default。副本數量為
2;類型為無狀態(Deployment)。
然後單擊下一步,進入容器配置嚮導頁面。
配置鏡像名稱和連接埠。
鏡像名:
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6容器連接埠:80,協議為TCP。
重要拉取此鏡像前,叢集需具備公網訪問能力。若在建立叢集時已勾選為專用網路配置 SNAT(預設開啟),則無需額外配置。否則,請參見為叢集開啟訪問公網的能力進行設定。
在資料卷地區,單擊增加本機存放區,新增掛載配置項。配置好相應資訊後,單擊下一步。
儲存卷類型為配置項;名稱為
nginx-config;掛載源為app-config;容器路徑為/etc/nginx/conf.d。
在進階配置頁面,按需設定訪問、伸縮、調度和標籤註解後,單擊最下方的建立。
在建立完成頁面,查看應用任務。
在建立應用任務已提交面板,單擊查看應用詳情,查看容器應用狀態是否為
Running。
驗證Configmap檔案是否掛載成功。
選擇需要登入的容器(例如nginx-volume-demo-7xxxxxx****),單擊操作列的終端,選擇nginx登入容器。
輸出結果包含nginx.conf檔案,說明配置項掛載成功。
ls -la /etc/nginx/conf.d/驗證檔案內容是否正確。
cat /etc/nginx/conf.d/nginx.conf輸出內容與配置項內容一致,表明資料卷掛載方式已成功使應用訪問到配置項資料。
kubectl配置
建立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建立Deployment應用。
kubectl apply -f nginx-volume-demo.yaml查看Deployment應用,Pod為
Running狀態,說明應用建立成功。kubectl get pods -l app=nginx-volume -n default輸出結果包含nginx.conf檔案,說明配置項掛載成功。
kubectl exec deployment/nginx-volume-demo -n default -- ls -la /etc/nginx/conf.d/驗證檔案內容是否正確。
kubectl exec deployment/nginx-volume-demo -n default -- cat /etc/nginx/conf.d/nginx.conf輸出內容與配置項內容一致,表明資料卷掛載方式已成功使應用訪問到配置項資料。
方式二:環境變數注入
控制台配置
登入Container Service管理主控台,選擇叢集列表。單擊目的地組群名稱,選擇。
建立Deployment應用。
在無狀態頁面,單擊使用鏡像建立。
在應用基本資料設定精靈頁面,配置應用的基本資料。
應用程式名稱為
nginx-env-demo;命令空間為default。副本數量為
2;類型為無狀態(Deployment)。
然後單擊下一步,進入容器配置嚮導頁面。
配置鏡像名稱和連接埠。
鏡像名:
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6容器連接埠:80,協議為TCP。
重要拉取此鏡像前,叢集需具備公網訪問能力。若在建立叢集時已勾選為專用網路配置 SNAT(預設開啟),則無需額外配置。否則,請參見為叢集開啟訪問公網的能力進行設定。
在環境變數地區,單擊新增。配置好相應資訊後,單擊下一步。
類型為配置項;名稱為
CONFIG_;變數/變數引用為app-config。
在進階配置頁面,按需設定訪問、伸縮、調度和標籤註解後,單擊最下方的建立。
在建立完成頁面,查看應用任務。
在建立應用任務已提交面板,單擊查看應用詳情,查看容器狀態是否為
Running。
驗證環境變數是否注入成功。
選擇需要登入的容器(例如nginx-env-demo-7xxxxxx****),單擊操作列的終端,選擇nginx登入容器。
env | grep CONFIG_輸出內容與配置項內容一致,表明環境變數注入方式已成功使應用訪問到配置項資料。
kubectl配置
建立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建立Deployment應用。
kubectl apply -f nginx-env-demo.yaml查看Deployment應用,輸出Pod為
Running狀態,說明應用建立成功。kubectl get pods -l app=nginx-env -n default驗證環境變數是否注入成功。
kubectl exec deployment/nginx-env-demo -n default -- env | grep CONFIG_輸出內容與配置項內容一致,表明環境變數注入方式已成功使應用訪問到配置項資料。
管理配置項
配置項建立完成後,可以在配置項頁面進行以下操作:
操作 | 說明 |
編輯配置項 | 單擊目標配置項右側操作列下的編輯,可修改配置項的名稱和值。 重要 修改正在使用的配置項將直接影響關聯應用的運行狀態,導致服務重啟或功能異常。建議在變更前充分評估影響範圍,並在業務低峰期執行操作。 |
刪除配置項 | 單擊目標配置項右側操作列下的刪除,刪除不再使用的配置項。 重要 請勿刪除叢集自動產生的系統配置項,這些配置項位於 kube-system 和 kube-public 命名空間下(如 CoreDNS Configuration),刪除後可能影響叢集正常運行。 |
相關文檔
Pod異常問題排查,查看Pod異常的診斷流程、排查方法、常見問題及對應的解決方案。
建立無狀態工作負載Deployment,查看如何在ACK叢集中通過控制台及kubectl建立無狀態應用。
Kubernetes 官方文檔配置項,查看更多關於配置項的資訊。