[英]Kubernetes Helm Nginx-ingress is hitting “default backend - 404”
注意,我仍在学习Kubernetes和Helm。
在运行Kubernetes集群的Mac(Edge)Docker的本地主机上安装带有Helm的Nginx-ingress。
具有以下内容:
helm install --name my-release stable/nginx-ingress
我从curl localhost
得到以下答复
default backend - 404
这是个好消息,但是从这里去哪里。 我想打一个服务/集群IP。 通常在Nginx中,我会将其放在conf文件中。 在舵图值中,我可以看到它指的是:
controller:
5 name: controller
6 image:
7 repository: k8s.gcr.io/nginx-ingress-controller
…
183 enabled: true
184
185 name: default-backend
186 image:
187 repository: k8s.gcr.io/defaultbackend
188 tag: "1.3"
你知道它是如何工作的吗?
入口概念将路由规则的配置外部化。 规则没有被放在与代理一起放置的conf文件中,而是被视为在部署应用程序时部署的Kubernetes资源。 使用@Omer Levi Hevroni指向的示例 ,您可以拥有一个Ingress资源,该资源的rules:
中包含此规范rules:
部分:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: hello-world-svc
servicePort: 8080
这是基于主机的规则,这意味着使用请求api.sample.com/到达入口控制器的任何流量(假定DNS路由指向入口控制器)都应发送到Service hello-world-svc
更具体地说是http:// hello-world-svc:8080 / 。
可以添加其他Ingress资源,也可以扩展此Ingress资源 ,以根据不同的请求主机(例如,诸如anotherapi.sample.com之类的子域)或路径(例如api.sample.com/specialpath)路由到不同的服务。 两者都可以与rules
规范一起使用,例如:
- host: subdomain1.example.com
http:
paths:
- path: /path1
backend:
serviceName: s1
servicePort: 80
- path: /path1
backend:
serviceName: s2
servicePort: 80
- host: subdomain2.example.com
http:
paths:
- path: /path1
backend:
serviceName: s3
servicePort: 80
- path: /path2
backend:
serviceName: s4
servicePort: 80
它将直接将http://subdomain1.example.com/path1定向到内部url http:// s1:80 / path1等。如果不需要内部url的最后一部分(在这种情况下为path1
),则需要重写-target批注可以与nginx入口控制器一起使用,只要从nginx类开始对Ingress资源进行注释。
我怀疑您已经知道所有这一切,因为问题是前一段时间的,但是我认为填写答案会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.