Kubernetes 應用配置管理
本篇文章來自《華爲云云原生王者之路訓練營》黃金系列課程第 8 課,由華爲云云原生開源團隊核心成員 Rambo Ren (@RainbowMango) 主講,詳細介紹 Kubernetes ConfigMap 和 Secret 基本概念和使用場景。
上節課我們介紹了 kubernetes 服務對外暴露的方式,通過 Service、通過 Ingress,Service 和 Ingress 解決的是服務暴露問題,具體的服務實現還需要 Pod 來完成。Pod 的運行通常需要爲其提供配置。
接下來的課程我們將爲大家介紹 kubernetes ConfigMap 和 Secret 基本概念和使用場景。
應用配置管理概念
應用配置管理概述
應用配置
-
數據庫配置
-
證書配置
-
應用自定義配置
Kubernetes 應用配置
-
ConfigMap:一般性配置
-
Secret: 敏感信息配置
ConfigMap 介紹
ConfigMap 概述
ConfigMap 是一種存儲非敏感數據的資源對象:
- 以形式存儲配置數據
ConfigMap 設計要素
-
解耦應用程序 (鏡像) 和配置參數
-
不用於存儲大塊數據(<=1MB)
ConfigMap 主要服務於 Pod
-
爲容器提供環境變量
-
爲容器提供命令行參數
-
爲容器提供配置文件
ConfigMap 資源對象
API 設計:
- 沒有 Spec 字段
Data 字段:
-
用來保存 UTF-8 字節序列
-
鍵名不能與 BinaryData 重疊
BinaryData:
-
用來保存二進制數據(base64 編碼)
-
鍵名不能與 Data 重疊
Immutable(v1.19 版本):
-
不可變更(禁止修改)
-
保護應用,免受意外更新帶來負面影響
-
提升性能(減輕監視負擔)
ConfigMap 創建
通過命令行創建
Pod 中使用 ConfigMap
使用 ConfigMap 配置環境變量:
使用 ConfigMap 掛載配置文件:
ConfigMap 使用小節
-
ConfigMap 用於存儲非敏感應用配置
-
每個 ConfigMap 大小限制爲 1MB
-
ConfigMap 必須先於 Pod 創建,否則 Pod 無法啓動
-
Pod 只能使用同 Namespace 下的 ConfigMap
-
使用 ConfigMap 掛載配置文件,會自動更新
-
使用 ConfigMap 配置環境變量時,不會自動更新
Secret 介紹
Secret 概述
Secret 是一種資源對象:
- 以形式存儲敏感數據(密碼,token 等)
Secret 設計要素
-
數據採用 base-64 編碼保存(非加密)
-
通常結合 RBAC rules 來加強安全性
Secret 主要服務於 Pod
-
爲容器提供環境變量
-
爲容器提供鏡像倉庫密鑰 (由 kubelet 使用)
-
爲容器提供配置文件
Secret 資源對象
API 設計:
- 沒有 Spec 字段
Data 字段:
- 用來保存 UTF-8 字節序列
StringData:
- 任意字符串(write-only)
Immutable(v1.19 版本):
-
不可變更(禁止修改)
-
保護應用,免受意外更新帶來負面影響
-
提升 kube-apiserver 性能(減輕監視負擔)
Secret 類型 (檢查和限制有所區別)
-
Opaque: 任意數據
-
kubernetes.io/service-account-token
Secret 創建
- 通過命令行創建:
Pod 中使用 Secret
使用 Secret 配置環境變量:
使用 Secret 掛載配置文件:
Secret 使用小節
1)Secret 用於存儲敏感配置(區別於 ConfigMap)
2)每個 Secret 大小限制爲 1MB
3)Pod 只能使用同 Namespace 下的 Secret
4)Secret 數據使用 Base64 編碼,本身不提供數據加密
-
由於 Secret 會以純文本方式存儲在 ETCD,需要限制 ETCD 的訪問權限
-
爲 Secret 設置嚴格的 RBAC 規則,限制資源訪問
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/tcWedkrECYMrIchXsFDp8Q