我已经在Google Cloud的Kubernetes集群中创建了一个入口资源。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gordion
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.global-static-ip-name: gordion-ingress
networking.gke.io/managed-certificates: gordion-certificate,gordion-certificate-backend
spec:
rules:
- host: backend.gordion.io
http:
paths:
- path: /
backend:
serviceName: backend
servicePort: 80
一切正常。但是,我还没有创建任何ingress-controller
。 the official docs state必须拥有它。
您必须具有一个入口控制器才能满足入口。只要 创建Ingress资源无效。
那么,如果我的路由确实有效,那么我的入口控制器在哪里?如何查看其配置?
答案 0 :(得分:2)
在GKE中,如果未指定kubernetes.io/ingress.class: nginx
批注,则默认情况下将使用GCE L7负载平衡器控制器(GLBC)(实际上等效于设置kubernetes.io/ingress.class: gce
)。该控制器将自动配置,并将依赖GCP的全局HTTP负载平衡器。
您可以在GLBC GitHub's page和in this How-To article上找到有关此主题的更多信息。
答案 1 :(得分:1)
是的,如果您为它提供NodePort服务和后面的服务,它的入口将像这样工作……但是您只能创建一个LoadBalancer服务并获得相同的结果。
如果您没有任何入口控制器,那么您的某些配置就不好了,因为您正在引用某些nginx入口控制器配置(重写)。
入口控制器的目的是为群集内的多个应用程序平衡HTTP流量,这意味着,您只能为多个域/路径创建一个提供程序(此处为GCP)LB。这样一来,您就可以进行一些操作,而不必为每个应用程序都创建多个公共IP和LB资源。
在您提到的前提条件中发布的文档中,提供了可用解决方案的列表,例如nginx-ingress控制器,traefik。...
如何使用它们:
答案 2 :(得分:1)
在Google Kubernetes Engine(GKE)中,当您创建Ingress对象时,内置的GKE Ingress控制器将负责创建符合您的Ingress及其服务的适当的HTTP(S)负载均衡器。有关更多信息,请查看此Google Cloud Document,有关“使用Ingress进行HTTP(S)负载平衡”。