【问题标题】:keycloak deployment on kubernetes (GKE) : Ingress class -- nginx VS gcekubernetes (GKE) 上的 keycloak 部署:入口类 -- nginx VS gce
【发布时间】:2019-03-24 16:22:35
【问题描述】:

我正在尝试在 google kubernetes 引擎上部署 keycloak,并使用 ingress.class 类型 nginx 使其工作,如下所示

kubernetes.io/ingress.class: nginx

完整的清单可以在这里找到 https://github.com/vsomasvr/keycloak-gke/blob/master/keycloak-gke-ingress/ingress.yaml

但是,我的意图是使用 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 设置。

这个配置还有什么遗漏的吗?

我把所有的清单文件放在这里 https://github.com/vsomasvr/keycloak-gke/tree/master/keycloak-gke-ingress

感谢任何帮助

编辑

我已经添加了注释

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

到 nginx 入口,经过测试并确保它不会引起任何冲突。该应用程序运行正常。

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

【问题讨论】:

    标签: kubernetes keycloak google-kubernetes-engine kubernetes-ingress nginx-ingress


    【解决方案1】:

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

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

    【讨论】:

    • 我同意你的看法。但是,在这种情况下,我认为没关系,只是为了确保,我将该注释添加到 nginx-ingress 并确保它有效(在问题中添加了信息以涵盖这一点)。它与 keycloak 配置有关,启用“代理地址转发”,它在为 https 流量提供服务的负载均衡器后面工作。
    • 不同之处在于 GCE LB 如何使用健康检查。我很确定 GCE LB 健康检查不会立即返回 200 响应(这是后端被认为是健康的必要条件),通过重定向,健康检查最初可能会收到 3xx 响应,这会导致不健康的后端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2017-11-19
    • 2021-04-13
    • 2018-07-17
    相关资源
    最近更新 更多