为没有 sidecar 的应用程序配置证书和密钥
一种通过挂载文件获取和共享应用程序证书和密钥的机制。
Istio sidecar 使用密钥发现服务获取其证书。服务网格中的服务可能不需要(或不想)使用 Envoy sidecar 来处理其流量。在这种情况下,如果该服务想要连接到其他 TLS 或双向 TLS 安全服务,则需要自行获取证书。
对于不需要 sidecar 来管理其流量的服务,仍然可以部署一个 sidecar 仅用于通过 CA 的 CSR 流程提供私钥和证书,然后通过 tmpfs
中的挂载文件与该服务共享证书。我们已使用 Prometheus 作为我们的示例应用程序来演示使用此机制配置证书。
在示例应用程序(即 Prometheus)中,通过将标志 .Values.prometheus.provisionPrometheusCert
设置为 true
(此标志在 Istio 安装中默认设置为 true)将 sidecar 添加到 Prometheus 部署中。此部署的 sidecar 随后将请求并与 Prometheus 共享证书。
为示例应用程序配置的密钥和证书将挂载在目录 /etc/istio-certs/
中。可以通过运行以下命令来列出为应用程序配置的密钥和证书
$ kubectl exec -it `kubectl get pod -l app=prometheus -n istio-system -o jsonpath='{.items[0].metadata.name}'` -c prometheus -n istio-system -- ls -la /etc/istio-certs/
上述命令的输出应包含非空的密钥和证书文件,类似于以下内容
-rwxr-xr-x 1 root root 2209 Feb 25 13:06 cert-chain.pem
-rwxr-xr-x 1 root root 1679 Feb 25 13:06 key.pem
-rwxr-xr-x 1 root root 1054 Feb 25 13:06 root-cert.pem
如果你想使用此机制为自己的应用程序配置证书,请查看我们的 Prometheus 示例应用程序,并简单地按照相同的模式进行操作。