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