【问题标题】:How do you supply your Applications with TLS Certificates centrally in Openshift?您如何在 Openshift 中集中为您的应用程序提供 TLS 证书?
【发布时间】:2020-03-12 17:10:15
【问题描述】:

我目前正在努力完成以下任务。我不想在我的模板中包含我的 TLS 证书,因为

  1. 我不想在仍然签入模板的同时签入代码管理中的凭据

  2. 我正在使用具有相同证书的多个应用程序,我不想仅仅因为我可能分发另一个证书而更新存储库

现在我的方法是这样的。我将 Jenkins 用于我的构建管道。我有一个仅用于证书管理的回购。它会在更新时运行,并将证书和私钥分发到各种集群上的 Openshift Secrets。

在运行应用程序的模板时,我正在从密钥中检索信息并设置路由中的值。这就是事情变得棘手的地方。我只能使用单行值,因为

  1. Openshift 模板将不接受带有 oc 进程的多行参数
  2. 秘密不会存储多行值

所以解决方案似乎很简单。只需使用 \n 存储证书并将其设置在 Route 中,如下所示。但是 Openshift 将不接受导致错误的单行证书

spec.tls.key:无效值:“编辑的密钥数据”:tls:在 PEM 中找到证书而不是私钥

现在解决方案可能是将证书作为多行直接插入到模板文件中,然后再处理并将其应用到集群,但这对我来说似乎有点笨拙。所以我的问题是

您如何集中管理您的应用程序的 TLS 证书并在您应用的模板中正确设置它们?

【问题讨论】:

  • 您可以查看这篇博文:blog.openshift.com/…。您将能够为您的所有应用颁发通配符证书,并在使用边缘+重定向 TLS 配置创建路由时使用它们。

标签: ssl kubernetes openshift


【解决方案1】:

秘密可以是多行。您可以使用证书文件创建密钥,并将该密钥作为文件挂载到您的容器中。请参阅此处了解如何从文件中创建机密:

https://kubernetes.io/docs/concepts/configuration/secret/

使用 openshift 命令行工具代替 kubectl。

对于证书,有一个叫做 cert-manager:

https://docs.cert-manager.io/en/latest/

这将根据需要生成证书。你可能想看看。

【讨论】:

  • 将它安装到容器中没有问题,但我需要在路由中使用它,并且我需要将它作为 oc cli 的参数放入其中。将仔细研究证书管理器
【解决方案2】:

为了集中管理应用程序的 TLS 证书,您可以创建一个通用密钥并通过卷安装使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2016-12-26
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多