在nginx入口控制器后启用tls时,keycloak停止工作。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在nginx入口控制器后启用tls时,keycloak停止工作。相关的知识,希望对你有一定的参考价值。
我需要建议如何在eks kubernetes上用TLS配置nginx ingress控制器和keycloak。
我的第一次尝试是让keycloak在没有TLS的情况下工作。这样做很好。但是当我在 ingress 定义中添加 TLS 时,keycloak 给出了一个 无效参数:redirect_uri 错误。
这是工作样本。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: keycloak-tls-test
namespace: keycloak-tls-test
spec:
rules:
- host: keycloak.test.myhops.com
http:
paths:
- backend:
serviceName: keycloak
servicePort: 80
当我添加tls部分时,我得到了上述的错误。见下面的yaml文件。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: keycloak-tls-test
namespace: keycloak-tls-test
spec:
tls:
- hosts:
- keycloak.test.myhops.com
secretName: test-myhops-tls
rules:
- host: keycloak.test.myhops.com
http:
paths:
- backend:
serviceName: keycloak
servicePort: 80
有什么建议可以解决这个问题吗?有一个网上的建议是添加 https:/keycloak.test.myhops.com。* 到主域中安全管理控制台客户端的有效重定向URL。这解决了无效的重定向_uri错误,但我只得到了空白页面。我在keycloak日志中找不到提示。
我想明白了是什么导致了这个问题。似乎当keycloak在一个终止TLS的反向代理后面使用时,那么keycloak需要设置proxy-address-forwarding。对于docker容器来说,这意味着env var PROXY_ADDRESS_FORWARDING=true就可以了。所以Ingress是正确的,keycloak部署需要一个额外的环境变量。
请不要以为 ingress-nginx 已经设置了正确的头文件来工作。
- X -Forwarded -For
- X-Forwarded-Proto
以上是关于在nginx入口控制器后启用tls时,keycloak停止工作。的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes NGINX 入口控制器未获取 TLS 证书
具有多个入口资源对象的 Kubernetes nginx 入口控制器