kubernetes(GKE)上的Keyclope部署:入口类——nginx VS gce

kubernetes(GKE)上的Keyclope部署:入口类——nginx VS gce,kubernetes,keycloak,google-kubernetes-engine,kubernetes-ingress,nginx-ingress,Kubernetes,Keycloak,Google Kubernetes Engine,Kubernetes Ingress,Nginx Ingress,我正在尝试在google kubernetes引擎上部署Key斗篷,并使用ingress.class typenginx使其正常工作,如下所示 kubernetes.io/ingres.class:nginx 完整的清单可以在这里找到 但是,我的目的是使用ingress.class类型“gce”。为此,我更改了以下入口注释 annotations: ingress.kubernetes.io/ssl-redirect: "true" kubernetes.io/ingres

我正在尝试在google kubernetes引擎上部署Key斗篷,并使用ingress.class typenginx使其正常工作,如下所示

kubernetes.io/ingres.class:nginx

完整的清单可以在这里找到

但是,我的目的是使用ingress.class类型“gce”。为此,我更改了以下入口注释

  annotations:
    ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
以下

kubernetes.io/ingress.allow-http: "false"
annotations: kubernetes.io/ingress.class: gce
在进行上述更改之后,我始终收到一条消息,指示入口具有不健康的后端(0/3)。 我想知道当“nginx”可以毫无问题地运行时,“gce”还需要什么更改

我确保这不是一个防火墙问题,因为应用程序使用的端口都是允许的,我还设置了livenessProbe和readinessProbe

此配置是否还缺少其他内容

我把所有清单文件都放在这里了

谢谢你的帮助

编辑 我添加了注释

kubernetes.io/ingress.allow-http: "false"
对nginx入口进行测试并确保不会导致任何冲突。该应用程序工作正常


另一方面,即使在我删除上述注释时,gce入口也具有相同的行为

您的服务似乎配置为使用HTTP流量,这意味着负载平衡器的运行状况检查也将使用HTTP流量(端口80),而您使用的注释禁用HTTP

kubernetes.io/ingress.allow-http: "false"


我同意你的观察。但是,在这种情况下,我认为这无关紧要,只是为了确保,我在nginx入口中添加了注释,并确保它可以工作(在问题中添加了信息以涵盖这一点)。它与keydepot配置有关,启用了“代理地址转发”,这在为https流量提供服务的loadbalancer后面起作用。但区别在于GCE LB如何使用健康检查。我很确定GCE LB运行状况检查不会立即返回200响应(这是后端正常运行所必需的),通过重定向,运行状况检查最初可能会得到3xx响应,从而导致后端不健康。