Kubernetes Helm Nginx-ingress正在打“默认后端 - 404”

时间:2018-01-18 17:24:56

标签: nginx kubernetes-helm

注意,我还在学习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"

你知道它是如何运作的吗?

1 个答案:

答案 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类开始。

我怀疑您已经知道所有这一切,因为问题来自不久前,但我认为填写答案会有所帮助。