Kubernetes v1.7新特性解析-Secret加密存儲

v1.7+版本支持將Secret數據加密存儲到etcd中,只需要在apiserver啟動時配置--experimental-encryption-provider-config。加密配置格式為

kind: EncryptionConfignapiVersion: v1nresources:n - resources:n - secretsn providers:n - aescbc:n keys:n - name: key1n secret: c2VjcmV0IGlzIHNlY3VyZQ==n - name: key2n secret: dGhpcyBpcyBwYXNzd29yZA==n - identity: {}n - aesgcm:n keys:n - name: key1n secret: c2VjcmV0IGlzIHNlY3VyZQ==n - name: key2n secret: dGhpcyBpcyBwYXNzd29yZA==n - secretbox:n keys:n - name: key1n secret: YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY=n

其中

  • resources.resources是Kubernetes的資源名
  • resources.providers是加密方法,支持以下幾種
    • identity:不加密
    • aescbc:AES-CBC加密
    • secretbox:XSalsa20和Poly1305加密
    • aesgcm:AES-GCM加密

Secret是在寫存儲的時候加密,因而可以對已有的secret執行update操作來保證所有的secrets都加密

kubectl get secrets -o json | kubectl update -f -n

如果想取消secret加密的話,只需要把identity放到providers的第一個位置即可(aescbc還要留著以便訪問已存儲的secret):

kind: EncryptionConfignapiVersion: v1nresources:n - resources:n - secretsn providers:n - identity: {}n - aescbc:n keys:n - name: key1n secret: c2VjcmV0IGlzIHNlY3VyZQ==n - name: key2n secret: dGhpcyBpcyBwYXNzd29yZA==n

本文已發布到《Kubernetes指南》開源書,歡迎關注。

推薦閱讀:

docker 編排工具 2017最佳選擇是 swarm/kubernetes/Mesos ?
漫畫:小黃人學 Kubernetes Service

TAG:Kubernetes | Docker | 云计算 |