1. 證墨客成與發表
1.1 抉擇合適的東西
在Kubernetes(K8s)集群中,證墨客成平日利用OpenSSL或cfssl等東西。OpenSSL是功能富強的開源東西,而cfssl供給了一套完全的命令行東西,便利證書的生成跟簽名。
1.2 生成證書內容
證墨客成包含公鑰跟私鑰,私鑰必須嚴格保密,僅限可托人員拜訪。以下是一個利用OpenSSL生成證書的示例代碼:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
1.3 證書發表
證書發表平日由證書發表機構(CA)停止。可能抉擇自簽名CA或第三方CA停止證書籤發。
cfssl gencert -initca ca-csr.json cfssljson -bare ca
2. 證書存儲與拜訪把持
2.1 證書存儲
證書平日存儲在節點上的特定目錄,如/var/lib/kubelet/pki/
。確保遵守命名標準,便利管理跟查找。
2.2 拜訪把持
確保只有受權的用戶跟過程可能拜訪證書跟密鑰。可能利用Kubernetes的Secrets或ConfigMap來存儲證書跟密鑰。
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /var/lib/kubelet/pki/ca.pem
server: https://kubernetes.default.svc
users:
- name: kubelet
user:
token: <token>
context:
cluster: kubernetes
user: kubelet
current-context: kubernetes
3. 證書披發
3.1 利用Kubernetes Secrets
將證書跟密鑰存儲在Kubernetes Secrets中,並經由過程卷掛載或情況變數的方法轉達給須要利用證書的Pod。
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: kubernetes.io/token
data:
token: <base64-encoded-token>
3.2 利用ConfigMap
將證書跟密鑰存儲在ConfigMap中,實用於不須要直接拜訪證書跟密鑰的場景。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
ca.crt: |
<base64-encoded-ca-certificate>
server.crt: |
<base64-encoded-server-certificate>
server.key: |
<base64-encoded-server-key>
4. 證書續期
4.1 主動續期
利用如Cert-Manager等東西實現證書的主動續期,確保證書壹直有效。
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-certificate
spec:
secretName: my-secret
issuerRef:
name: my-issuer
kind: Issuer
5. 證書打消
5.1 撤消證書
當發明證書被泄漏或被合法利用時,應及時撤消證書,並更新集群中的證書存儲。
cfsslctl revoke -ca ca.pem -cert my-certificate.pem -key ca.key
經由過程以上五大年夜關鍵步調,可能有效管理K8s集群中的證書,保證集群的保險牢固運轉。