简体   繁体   English

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

[英]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.

相关问题 如何使用 nginx-ingress 将我的外部域“uat.test.com”添加到我的 kubernetes 集群? - How can I add my external domain “uat.test.com ” to my kubernetes cluster by using nginx-ingress? 使用 Ingress Kubernetes 公开流量 - Expose traffic using Ingress Kubernetes 如何为Kubernetes集群部署入口控制器 - How can I deploy an ingress controller for my Kubernetes cluster 如何查看kubernetes的入口端点? - How can I see the ingress endpoints of kubernetes? 如何通过入口中的 HTTP 在多个端口上公开服务? - How can I expose a service on multiple ports over HTTP in ingress? 我的测试Web应用程序显示错误,我在Dockerfile中使用Nginx-kubernetes minikube中的入口 - My test web app is showing up error, I am using nginx in Dockerfile - ingress in kubernetes minikube 如何使用 Docker 桌面为 Windows Kube.netes 和 ingress-nginx 公开 postgres tcp 端口 - How to expose postgres tcp port using Docker Desktop for Windows Kubernetes and ingress-nginx 一个域使用 CNAME 指向另一个 kubernetes 入口主机域 - One domain points to another kubernetes ingress host domain using CNAME 如何在 kubernetes 中创建多个 nginx 入口控制器 - How can i create mutiple nginx ingress controller in kubernetes 如何将域名连接到wordpress网站? - How can I connect my domain name to my wordpress site?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM