[英]How can I expose my kubernetes app in a nice domain name using ingress?
I installed both the nginx-ingress and cassandra helm charts onto AWS. 我将nginx-ingress和cassandra舵图都安装到了AWS上。 I created a Route53 record so I can reach the loadbalancer at a nice DNS name such as
k8s.mydomain.me
. 我创建了Route53记录,以便可以通过一个不错的DNS名称(例如
k8s.mydomain.me
到达负载均衡器。
If I create an ingress record with the following spec: 如果我使用以下规范创建入口记录:
spec:
rules:
- host:
http:
paths:
- path: /cassandra
backend:
serviceName: cassandra
servicePort: 9042
k8s.mydomain.me/cassandra
resolves, but what I'd really want is cassandra.k8s.mydomain.me:9042
to resolve instead. k8s.mydomain.me/cassandra
解析,但是我真正想要的是cassandra.k8s.mydomain.me:9042
代替解析。 How would I get that to work? 我将如何工作?
I believe by default Nginx Ingress uses port 80 and 443. So if you really want to use port 9042 externally, you will need to reconfigure your nginx-ingress 我相信默认情况下Nginx Ingress使用端口80和443。因此,如果您真的想在外部使用端口9042,则需要重新配置nginx入口
Personally I like the fact that my nginx-ingress uses port 80, so that I never have to specify the port. 就我个人而言,我喜欢我的Nginx入口使用端口80的事实,因此我不必指定端口。
Single-Domain 单域
spec:
rules:
- host: 'cassandra.k8s.mydomain.me'
http:
paths:
- path: /
backend:
serviceName: cassandra
servicePort: 9042
Multi-Domain 多域
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
What you need is an ingress rule that is based on the HTTP Host header . 您需要的是基于HTTP Host标头的入口规则。
You'll need to create a CNAME record set on route 53 that point to your load balancer : cassandra.k8s.mydomain.me -> k8s.mydomain.me
您需要在路由53上创建一个指向负载均衡器的CNAME记录集:
cassandra.k8s.mydomain.me -> k8s.mydomain.me
Then create the ingress rule without specifying a path : 然后创建入口规则而不指定路径:
spec:
rules:
- host: 'cassandra.k8s.mydomain.me'
http:
paths:
backend:
serviceName: cassandra
servicePort: 9042
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.