请注意,我还在学习Kubernetes和Helm .
在运行Docker for Mac(边缘)的本地主机上使用Kubernetes群集在Helm上安装带有Helm的nginx-ingress .
具有以下内容:
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"
你知道它是如何工作的吗?
1 回答
Ingress概念将路由规则的配置外部化 . 这些规则不会将它们放在与代理一起使用的conf文件中,而是被视为在部署应用程序时部署的Kubernetes资源 . 使用@Omer Levi Hevroni指出的example,您可以在其
rules:
部分中拥有包含此规范的Ingress资源:这是一个基于主机的规则,这意味着任何使用请求api.sample.com/(它假定DNS路由指向入口控制器)进入入口控制器的流量都应该发送到服务
hello-world-svc
- 更具体地说到http://hello-world-svc:8080/ .此外,可以添加Ingress resources,或者根据不同的请求主机(例如anotherapi.sample.com这样的子域)或路径(例如api.sample.com/specialpath)将其扩展到不同的服务 . 两者都可以与
rules
规范一起使用,如:哪个会将http://subdomain1.example.com/path1指向内部URL http://s1:80/path1等 . 如果内部URL的最后一部分(在这种情况下为
path1
)不可取,那么rewrite-target annotation可以与nginx入口控制器一起使用,前提是Ingress资源注释为nginx类 .我怀疑你知道所有这一切,因为问题是从不久前开始的,但我认为填写答案会有所帮助 .