如何使用Ingress在一个不错的域名中公开我的kubernetes应用程序?

时间:2018-08-29 22:13:12

标签: nginx kubernetes kubernetes-ingress

我将nginx-ingress和cassandra舵图都安装到了AWS上。我创建了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可以解决。我将如何使用它?

2 个答案:

答案 0 :(得分:0)

我相信默认情况下Nginx Ingress使用端口80和443。因此,如果您真的想在外部使用端口9042,则需要重新配置nginx入口

我个人喜欢我的nginx入口使用端口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

答案 1 :(得分:0)

您需要的是基于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