【问题标题】:How can I expose my kubernetes app in a nice domain name using ingress?如何使用 ingress 在一个不错的域名中公开我的 kubernetes 应用程序?
【发布时间】:2019-02-04 19:03:16
【问题描述】:

我在 AWS 上安装了 nginx-ingress 和 cassandra helm 图表。我创建了一个 Route53 记录,这样我就可以通过一个不错的 DNS 名称访问负载均衡器,例如 k8s.mydomain.me

如果我使用以下规范创建入口记录:

spec:
  rules:
  - host: 
    http:
      paths:
      - path: /cassandra
        backend:
          serviceName: cassandra
          servicePort: 9042

k8s.mydomain.me/cassandra 解决了,但我真正想要的是cassandra.k8s.mydomain.me:9042 来解决。我该如何让它发挥作用?

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress


    【解决方案1】:

    您需要的是基于HTTP Host header 的入口规则。

    您需要在指向您的负载均衡器的路由 53 上创建一个 CNAME 记录集:cassandra.k8s.mydomain.me -> k8s.mydomain.me

    然后在不指定路径的情况下创建入口规则:

    spec:
      rules:
      - host: 'cassandra.k8s.mydomain.me'
        http:
          paths:
            backend:
              serviceName: cassandra
              servicePort: 9042
    

    【讨论】:

      【解决方案2】:

      我相信默认情况下 Nginx Ingress 使用端口 80 和 443。所以如果你真的想在外部使用端口 9042,你需要重新配置你的 nginx-ingress

      我个人喜欢我的 nginx-ingress 使用端口 80,这样我就不必指定端口。

      单域

      spec:
        rules:
        - host: 'cassandra.k8s.mydomain.me'
          http:
            paths:
            - path: /
              backend:
                serviceName: cassandra
                servicePort: 9042
      

      多域

      spec:
        rules:
        - host: 'cassandra.k8s.mydomain.me'
          http: &cassandra_svc
            paths:
            - path: /
              backend:
                serviceName: cassandra
                servicePort: 9042
        - host: 'real.cassandra.k8s.mydomain.me'
          http: *cassandra_svc
      

      【讨论】:

      • 我之前尝试过单域方法,但无法让它在我只需要参考cassandra.k8s.mydomain.me 的地方工作。例如。使用 curl 时,我需要指定该域以及负载均衡器的公共 URL。
      • @MikeChen 通常在使用这种方法时,将您的域配置为使用通配符 DNS 是明智的。通常你为 * 输入一条记录并指定托管 nginx-ingress 的 kubernetes 节点的 ip 或负载均衡器 ip
      • @MikeChen 或者,您可以为每个指向托管 nginx-ingress 的集群节点或负载均衡器的子域创建单个 cname 记录
      • 如果您为新域创建了 DNS,有时它需要一段时间才能在 Internet 上传播。您可以通过从 linux 终端运行 host cassandra.k8s.mydomain.medig cassandra.k8s.mydomain.me 来测试您的域是否正常运行
      猜你喜欢
      • 2021-06-05
      • 2021-01-04
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 2022-07-08
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多