7.4.2 插入证书和密钥

创建一个名为cacert的保密字典secret,其中包含所有输入文件ca-cert.pem、ca-key.pem、root-cert.pem以及cert-chain.pem:


kubectl create secret generic cacerts -n istio-system --from-file=ca-cert.pem \
  --from-file=ca-key.pem --from-file=root-cert.pem --from-file=cert-chain.pem

使用Helm重新部署Citadel,其中global.mtls.enabled设置为true,security.selfSigned设置为false。Citadel将从secret-mount文件中读取证书和密钥:


helm template install/kubernetes/helm/istio --name istio --namespace istio-system 
-x charts/security/templates/deployment.yaml \
--set global.mtls.enabled=true --set security.selfSigned=false > citadel-plugin-
cert.yaml
kubectl apply -f citadel-plugin-cert.yaml

运行之后,istio-citadel部署中容器citadel的参数---self-signed-ca=true被修改为:


- --self-signed-ca=false
- --signing-cert=/etc/cacerts/ca-cert.pem
- --signing-key=/etc/cacerts/ca-key.pem
- --root-cert=/etc/cacerts/root-cert.pem
- --cert-chain=/etc/cacerts/cert-chain.pem

为了确定工作负载获取了正确的证书,删除Citadel生成的secret(命名为istio.*)。在本例中就是istio.default。Citadel会签发新的证书给工作负载。