本文將介紹如何存放資訊在 Kubernetes 當中,並且將機密資訊加密,提升安全性

Secrets

Secrets 協助開發者將一些敏感資訊,像是資料庫帳密、訪問其他 server 的 Access Token、 SSH Key 等,用非明碼的方式(opaque)存放在 Kubernetes 中

常用的方法有幾種

基本 YAML file 設定(以將 Secret 當成環境變數為例)

首先要先將要使用的變數以 base64 編碼,在 Linux 系統中,可以直接在 Terminal 輸入以下指令

# Encode
echo -n 'test-secret-key' | base64

output
--------
dGVzdC1zZWNyZXQta2V5
# Decode
echo -n 'dGVzdC1zZWNyZXQta2V5' | base64 -d

output
--------
test-secret-key

接著放入 Secret YAML file 即完成

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  SECRET_KEY: dGVzdC1zZWNyZXQta2V5

Config map

與 Secrets 相似,將配置環境儲存於環境變數中,不同的是如果存放的是機密資訊,將有可能被其他人得知,因此適合存放非機密的部屬與配置資訊

基本 YAML file 設定(以將 config map 當成環境變數為例)

apiVersion: v1
kind: ConfigMap
metadata:
	name: my-configmap
data:
	DEBUG: "True" # 變數寫在以下區域
	DEBUG_TRACE: "True"

使用 Secrets & Config map

如何在 Pod 使用 Sercrets 與 Config map 當作環境變數,實際做法請參考 應用程式啟起來-Deployment 一文