ConfigMap and Secret
ConfigMap 與 Secret 的區別
ConfigMap 和 Secret 是 Kubernetes 中兩種重要的資源類型,用於管理應用程式的配置信息和敏感資訊。它們使得在不同環境中部署和運行應用程式更加靈活和安全。通過使用它們,你可以有效地分離配置和敏感資訊,並確保這些資訊的管理和存取符合最佳實踐和安全要求。
特性 | ConfigMap | Secret |
---|---|---|
數據類型 | 非機密數據 | 機密數據 |
存儲方式 | 明文存儲在 etcd 中 | 加密存儲在 etcd 中 |
用途 | 存儲應用程式的配置設置、環境變數、命令行參數 | 存儲應用程式的機密數據,如密碼、API 金鑰等 |
訪問權限 | 所有用戶都可以訪問 | 只有授權的用戶可以訪問 |
更新策略 | 可以動態更新 | 可以動態更新 |
用途場景 | 配置設置、環境變數、命令行參數 | 密碼、API 金鑰、TLS 證書等 |
ConfigMap 範例
- 創建 ConfigMap
這個 ConfigMap 包含了兩個鍵值對,key1: value1
和 key2: value2
。你可以通過這些鍵值對來定義應用程式的配置設置、環境變數、命令行參數等。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
key1: value1
key2: value2
```
- 使用 ConfigMap
這個 Pod 會將 ConfigMap my-configmap
中的所有鍵值對作為環境變數注入到容器中。這樣,你的應用程式就可以通過這些環境變數來訪問配置設置和其他數據。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
envFrom:
- configMapRef:
name: my-configmap
Secret 範例
- 創建 Secret
這個 Secret 包含了兩個機密數據,username
和 password
。這些數據是 Base64 編碼的,以保護其機密性。
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque # 這裡指定了 Secret 的類型為 Opaque,表示它是一個通用的 Secret,可以存儲 任意類型的數據。
data:
username: dXNlcm5hbWU=
password: cGFzc3dvcmQ=
```
- 使用 Secret
這個 Pod 會將 Secret my-secret
中的所有機密數據作為環境變數注入到容器中。這樣,你的應用程式就可以通過這些環境變數來訪問密碼、API 金鑰等機密數據。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
envFrom:
- secretRef:
name: my-secret