首页 > 解决方案 > 单个 NGINX 入口控制器,用于在不同命名空间中具有资源的子域

问题描述

谁能向我解释如何使用我目前拥有的配置设置一个单一的nginx 入口控制器,如下所示:

我在这里见过

https://github.com/nginxinc/kubernetes-ingress/tree/v1.7.0/examples-of-custom-resources/cross-namespace-configuration

这似乎在正确的轨道上,但它适用于路径“/cafe”。当我需要它是“a.my-site.com”时。

我想这样做的主要原因是我不想为我们拥有的每个客户端(命名空间)安装入口控制器。

标签: nginxkubernetesgoogle-kubernetes-enginekubernetes-ingressnginx-ingress

解决方案


所以我想通了,默认的 HELM nginx-ingress 控制器安装在没有 SSL 证书的情况下工作正常。NGINX 控制器实际上确实可以处理来自各种命名空间的入口资源。

*.domain.com使用安装了我的证书和密钥

kubectl create secret tls {SECRET_NAME} --key {KEY_FILE} --cert {CERT_FILE}

然后在 nginx-ingress-controller 部署中我添加了:

-args:
 - --default-ssl-certificate=tenancy/whatevername-wildcard={NAMESPACE}/{SECRET_NAME}

入口位于命名空间中。例如:

命名空间 A:入口 ->Host: a.domain.com

命名空间 B:入口与host: b.domain.com

入口控制器的注释中列出的唯一内容是 kubernetes.io/ingress.class: "nginx"

所有域都指向 nginx 负载均衡器 IP。

现在它完美地工作了。非常简单,但是通过文档搜索也很不清楚。


推荐阅读