如何使用具有客户端角色而非服务器角色的Kubernetes Pod使用SSL证书

时间:2018-07-13 15:39:29

标签: docker ssl-certificate

我有一个在Kubernetes Pods中运行的应用程序。它需要对某些外部服务进行https调用。并且此外部服务要求提供SSL证书。我了解如果没有Kubernetes,则可以在Linux机器上的某个位置下载证书,该机器上的应用程序通过路径引用该证书。但是如何为Kubernetes集群安装证书?最佳做法是什么?

以下是我通过在线搜索收集的一些信息,如果我输入错了,请更正我。但只是找不到我的问题的答案。

  1. 很多指南/博客/文档都在谈论签名 从Kubernetes提供服务时向其他客户端提供证书, 但就我而言,这是另一种方式---呼叫外部 Kubernetes提供的带有ssl证书的服务。
  2. 我想到了在群集中预先安装ssl证书 机器。但是

    1)可以自动在 安全的方式?

    2)看起来是从主机共享文件的Pod是 反模式,甚至可能不受Kubernetes支持,尤其是 在Google Kubernetes Engine(我们使用GKE)中。

因此,我们将不胜感激任何见解或建议。谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您的问题不是关于Kubernetes的问题,而是关于如何在打包容器映像的方式中添加证书(可能使用Docker)。

您可以通过运行以下命令轻松地将CA证书安装到容器映像中:

  • 如果您使用的是基于debian / ubuntu的映像:

    apt-get install -qqy ca-certificates
    
  • 如果您使用的是基于高山的图像:

    apk add --no-cache ca-certificates
    

这将确保您的容器具有用于验证公共网站/服务提供的TLS证书的有效性的最新根CA证书。

答案 1 :(得分:0)

您可以通过3种方式完成此操作,根据您的方便选择仅一个

1.via仅通过应用程序中的几行代码更改-this leads burden on developer

2.via仅在构建容器时在Dockerfile中很少有其他行图像-this set responsibility on either developer or devops based on who owns dockercontainer creation.

  1. 最佳方法-仅通过 Kubernetes部署yaml /头盔图可以在部署Pod时更改,方法是将证书放入映射到pod的CA根目录的配置映射中。 -this is one time activity put entire responsibility on dev ops and will automatically apply on all future apps.

关于每个步骤的详细步骤,包括优点和缺点,示例在这里:

https://medium.com/@paraspatidar/add-self-signed-or-ca-root-certificate-in-kubernetes-pod-ca-root-certificate-store-cb7863cb3f87