创建一个名为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会签发新的证书给工作负载。