注意,我还在学习Kubernetes和Helm。
使用Helm在运行Docker for Mac(边缘)的localhost上安装带有Helm的nginx-ingress,并使用Kubernetes集群。
以下内容:
helm install --name my-release stable/nginx-ingress
我从curl localhost
default backend - 404
这是个好消息,但从哪里开始。我想打一个服务/群集IP。 Nginx中的Normaly我会把它放在conf文件中。在Helm Chart值中,我可以看到它指的是:
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"
你知道它是如何运作的吗?
答案 0 :(得分:2)
Ingress概念将路由规则的配置外部化。规则没有被放在与代理一起放置的conf文件中,而是被视为在部署应用程序时部署的Kubernetes资源。使用example指向的@Omer Levi Hevroni,您可以在其rules:
部分中拥有一个包含此规范的Ingress资源:
- host: api.sample.com
http:
paths:
- path: /
backend:
serviceName: hello-world-svc
servicePort: 8080
这是一个基于主机的规则,这意味着使用请求api.sample.com/(假定DNS路由指向入口控制器)到达入口控制器的任何流量都应发送到服务{ {1}}-更具体地说是http://hello-world-svc:8080/。
还可以添加另外的Ingress resources或将其扩展为根据不同的请求主机(例如,诸如anotherapi.sample.com之类的子域)或路径(例如api.sample.com/specialpath)路由到其他服务。两者都可以与hello-world-svc
规范一起使用,例如:
rules
将http://subdomain1.example.com/path1定向到内部URL http://s1:80/path1等。如果内部URL的最后一部分(在这种情况下为 - 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
)不理想,则{{3} }可以与nginx入口控制器一起使用,前提是Ingress资源的注释从nginx类开始。
我怀疑您已经知道所有这一切,因为问题来自不久前,但我认为填写答案会有所帮助。