如何配置单个nginx ingress与letsencrypt和多个bitnami wordpress容器?

51次阅读
没有评论

问题描述

正在使用bitnami/wordpress helm chart创建多个运行在不同域上的网站。他希望自动保护这些网站并使用单个ingress来路由流量。他正在使用这个教程https://docs.bitnami.com/tutorials/secure-wordpress-kubernetes-managed-database-ssl-upgrades/来创建ingress nginx控制器+letsencrypt。路由工作正常,但是SSL仅适用于第一个创建的wordpress容器/域,之后的容器/域没有被保护。他无法弄清楚原因。k8s v1.19.10-gke.1600 helm 3.6.0。

假设我有sub1.domain.com和sub2.domain.com,我有两个sub1.domain.com.values.yaml和sub2.domain.com.values.yaml文件来自定义bitnami/wordpress helm chart。

配置如下:
sub1.domain.com.values.yaml:

ingress:
  enabled: true
  certManager: true
  hostname: sub1.domain.com
  extraTls:
    - hosts:
        - sub1.domain.com
      secretName: wordpress.local-tls
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod

sub2.domain.com.values.yaml:

ingress:
  enabled: true
  certManager: true
  hostname: sub2.domain.com
  extraTls:
    - hosts:
        - sub2.domain.com
      secretName: wordpress.local-tls
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod

我使用以下命令应用它们:

helm install sub1 bitnami/wordpress -f sub1.domain.com.values.yaml
helm install sub2 bitnami/wordpress -f sub2.domain.com.values.yaml

两者都可以通过浏览器访问,但只有sub1.domain.com具有有效的SSL证书,sub2具有kubernetes伪证书。

我做错了什么?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在同一个命名空间中,同一个TLS证书密钥只能映射到一个ingress。它将映射到第一个部署的ingress。为了使其工作,您需要创建一个具有不同名称的相同密钥的证书,并将其映射到另一个ingress。
以下是解决方案的步骤:
1. 在创建ingress之前,创建一个新的TLS证书密钥。
2. 在每个ingress的配置文件中,将新的TLS证书密钥映射到相应的域名。
下面是一个示例:

ingress:
  enabled: true
  certManager: true
  hostname: sub1.domain.com
  extraTls:
    - hosts:
        - sub1.domain.com
      secretName: wordpress.local-tls-1
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
ingress:
  enabled: true
  certManager: true
  hostname: sub2.domain.com
  extraTls:
    - hosts:
        - sub2.domain.com
      secretName: wordpress.local-tls-2
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod

在上面的示例中,我们为每个ingress创建了一个新的TLS证书密钥,并将其映射到相应的域名。这将确保每个域名都有自己的有效SSL证书。

方案2

如果您使用的是bitnami/wordpress helm chart,那么它应该处理这个问题。您可以尝试查看bitnami/wordpress的文档或寻求他们的支持。
如果您使用的是bitnami/wordpress helm chart,那么它应该处理这个问题。您可以尝试查看bitnami/wordpress的文档或寻求他们的支持,以获取更多关于如何正确配置多个域名和SSL证书的信息。

正文完