在 kubernetes 中将证书放在容器中的最佳方法是什么?
What is the best approach to having the certs inside a container in kubernetes?
我看到通常会创建一个新映像,即 dockerfile,但是通过环境变量传递证书是一个好习惯吗?有一批捡起它并将其放入容器中
我看到的另一种方法是将证书挂载到卷上。
对于所有环境都有一个图像的最佳近似值是多少?
我的意思是,就像软件制品所发生的那样。
为每个环境或更新创建一个新图像我觉得很乏味,但如果必须这样...
云原生方法是不让您的应用程序处理证书,而是将其完全外化到不同的机制。
您可以看看服务网格。他们主要使用 sidecar 模式,其中一个 sidecar 容器在 pod 中 运行,它处理你的流量 en-/decryption。 pod 内的 iptables 以某种方式配置,所有流量都必须通过 sidecar。
根据您的要求,您可以查看 istio and linkerd 作为服务网格解决方案。
如果服务网格不是一个选项,我会建议将您的证书存储为秘密并将其作为卷装载到您的容器中。
绝对不将证书烘焙到图像中。
因为你用 azure-aks
标记了你的问题,我建议使用 Secrets Store CSI Driver 从 Key Vault 安装你的证书。
- 见plugin project page on GitHub
- 另请参阅此文档 Getting Certificates and Keys using Azure Key Vault Provider
- 即使您不使用 nginx ingress 控制器,此文档也更好、更透彻且值得一读 Enable NGINX Ingress Controller with TLS
因此,对于不同的环境,您会从一个或多个密钥库中提取不同的证书并将它们安装到您的集群中。还请记住使用不同的 credentials/identities 来获取这些证书。
我看到通常会创建一个新映像,即 dockerfile,但是通过环境变量传递证书是一个好习惯吗?有一批捡起它并将其放入容器中
我看到的另一种方法是将证书挂载到卷上。
对于所有环境都有一个图像的最佳近似值是多少? 我的意思是,就像软件制品所发生的那样。
为每个环境或更新创建一个新图像我觉得很乏味,但如果必须这样...
云原生方法是不让您的应用程序处理证书,而是将其完全外化到不同的机制。
您可以看看服务网格。他们主要使用 sidecar 模式,其中一个 sidecar 容器在 pod 中 运行,它处理你的流量 en-/decryption。 pod 内的 iptables 以某种方式配置,所有流量都必须通过 sidecar。
根据您的要求,您可以查看 istio and linkerd 作为服务网格解决方案。
如果服务网格不是一个选项,我会建议将您的证书存储为秘密并将其作为卷装载到您的容器中。
绝对不将证书烘焙到图像中。
因为你用 azure-aks
标记了你的问题,我建议使用 Secrets Store CSI Driver 从 Key Vault 安装你的证书。
- 见plugin project page on GitHub
- 另请参阅此文档 Getting Certificates and Keys using Azure Key Vault Provider
- 即使您不使用 nginx ingress 控制器,此文档也更好、更透彻且值得一读 Enable NGINX Ingress Controller with TLS
因此,对于不同的环境,您会从一个或多个密钥库中提取不同的证书并将它们安装到您的集群中。还请记住使用不同的 credentials/identities 来获取这些证书。