
_和-,且不能以 KMS- 开头。本文以 tke-kms 为例。 
SecretId、SecretKey。如下图所示:

tke-kms-plugin.yaml 内容。如下所示:{{REGION}}:KMS 密钥所在地域,有效值可参见 地域列表。 {{KEY_ID}}:输入 创建 KMS 密钥并获取 ID 步骤中所获取的 KMS 密钥 ID。 {{SECRET_ID}} 和 {{SECRET_KEY}}:输入 创建并获取访问密钥 步骤中创建的 SecretID 和 SecretKey。 images: ccr.ccs.tencentyun.com/tke-plugin/tke-kms-plugin:1.0.0:tke-kms-plugin 镜像地址。当您需要使用自己制作的 tke-kms-plugin 镜像时,可自行进行更换。apiVersion: apps/v1kind: DaemonSetmetadata:name: tke-kms-pluginnamespace: kube-systemspec:selector:matchLabels:name: tke-kms-plugintemplate:metadata:labels:name: tke-kms-pluginspec:nodeSelector:node-role.kubernetes.io/master: "true"hostNetwork: truerestartPolicy: Alwaysvolumes:- name: tke-kms-plugin-dirhostPath:path: /var/run/tke-kms-plugintype: DirectoryOrCreatetolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulecontainers:- name: tke-kms-pluginimage: ccr.ccs.tencentyun.com/tke-plugin/tke-kms-plugin:1.0.0command:- /tke-kms-plugin- --region={{REGION}}- --key-id={{KEY_ID}}- --unix-socket=/var/run/tke-kms-plugin/server.sock- --v=2livenessProbe:exec:command:- /tke-kms-plugin- health-check- --unix-socket=/var/run/tke-kms-plugin/server.sockinitialDelaySeconds: 5failureThreshold: 3timeoutSeconds: 5periodSeconds: 30env:- name: SECRET_IDvalue: {{SECRET_ID}}- name: SECRET_KEYvalue: {{SECRET_KEY}}volumeMounts:- name: tke-kms-plugin-dirmountPath: /var/run/tke-kms-pluginreadOnly: false
vim /etc/kubernetes/encryption-provider-config.yaml
apiVersion: apiserver.config.k8s.io/v1kind: EncryptionConfigurationresources:- resources:- secretsproviders:- kms:name: tke-kms-plugintimeout: 3scachesize: 1000endpoint: unix:///var/run/tke-kms-plugin/server.sock- identity: {}
apiVersion: v1kind: EncryptionConfigresources:- resources:- secretsproviders:- kms:name: tke-kms-plugintimeout: 3scachesize: 1000endpoint: unix:///var/run/tke-kms-plugin/server.sock- identity: {}
vi /etc/kubernetes/manifests/kube-apiserver.yaml
args。 kube-apiserver.yaml 移出 /etc/kubernetes/manifests 目录,编辑完成之后再移入。 --encryption-provider-config=/etc/kubernetes/encryption-provider-config.yaml
--experimental-encryption-provider-config=/etc/kubernetes/encryption-provider-config.yaml
/var/run/tke-kms-plugin/server.sock 添加 Volume 指令,其中添加位置及内容如下所示:/var/run/tke-kms-plugin/server.sock 是 tke kms server 启动时监听的一个 unix socket,kube apiserver 会通过访问该 socket 来访问 tke kms server。 volumeMounts: 添加以下内容:- mountPath: /var/run/tke-kms-pluginname: tke-kms-plugin-dir
volume: 添加以下内容:- hostPath:path: /var/run/tke-kms-pluginname: tke-kms-plugin-dir
/etc/kubernetes/manifests/kube-apiserver.yaml 文件,等待 kube-apiserver 重启完成。kubectl create secret generic kms-secret -n default --from-literal=mykey=mydata
kubectl get secret kms-secret -o=jsonpath='{.data.mykey}' | base64 -d
mydata,即与创建 Secret 的值相同,则表示 Secret 已正确解密。如下图所示:

文档反馈