使用nginx-ingress替代ingress-nginx后Keycloak出现502错误求助
Keycloak Ingress 502 Bad Gateway 问题解决
问题原因
新Ingress配置中注释掉了nginx.ingress.kubernetes.io/backend-protocol: HTTPS注解,而Keycloak的keycloak-kc-service服务暴露的8443端口使用的是HTTPS协议。nginx-ingress默认会用HTTP协议转发请求到后端,导致和Keycloak的HTTPS端口通信失败,返回502错误。
修复步骤
- 恢复
nginx.ingress.kubernetes.io/backend-protocol: HTTPS注解,明确告诉nginx-ingress后端服务使用HTTPS协议 - 应用修改后的Ingress配置
修改后的完整Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: cert-manager.io/cluster-issuer: letsencrypt-prod kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/backend-protocol: HTTPS # 恢复该注解,关键修复点 labels: app: keycloak app.kubernetes.io/managed-by: keycloak-operator name: keycloak-kc-ingress namespace: default spec: defaultBackend: service: name: keycloak-kc-service port: number: 8443 rules: - host: accounts.example.com http: paths: - backend: service: name: keycloak-kc-service port: number: 8443 path: / pathType: Prefix tls: - hosts: - accounts.example.com secretName: keycloak-tls-secret
验证方法
- 应用配置:
kubectl apply -f keycloak-ingress.yaml - 检查Ingress状态:
kubectl get ingress keycloak-kc-ingress -n default,确认ADDRESS字段正常 - 查看nginx-ingress pod日志:
kubectl logs -n nginx-ingress $(kubectl get pods -n nginx-ingress -l app=nginx-ingress -o name),确认无SSL握手失败类错误 - 访问
https://accounts.example.com,验证Keycloak服务正常响应
内容的提问来源于stack exchange,提问作者portableunit
相关产品推荐
相关产品推荐

