【发布时间】:2021-11-24 03:43:00
【问题描述】:
我在 Kubernetes 上设置 keycloak 时遇到问题。我设置了一个终止 SSL 的负载平衡器(nginx 入口控制器)。我尝试了许多不同的配置,但是当我尝试 /auth 端点时,我得到的只是 502、503 和 404 错误。这是我的 deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
namespace: default
labels:
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: bitnami/keycloak:13.0.1-debian-10-r79
env:
- name: KEYCLOAK_USER
valueFrom:
secretKeyRef:
name: keycloak-secret
key: keycloak_user
- name: KEYCLOAK_PASSWORD
valueFrom:
secretKeyRef:
name: keycloak-secret
key: keycloak_password
- name: PROXY_ADDRESS_FORWARDING
value: "true"
- name: DB_VENDOR
value: "postgres"
- name: DB_ADDR
value: "my.postgres.host"
- name: DB_DATABASE
value: "keycloak"
- name: DB_USER
valueFrom:
secretKeyRef:
name: keycloak-secret
key: dbuser
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: keycloak-secret
key: dbpassword
- name: KEYCLOAK_LOGLEVEL
value: "DEBUG"
- name: KEYCLOAK_EXTRA_ARGS
value: "-Dkeycloak.frontendUrl=https://my.keycloak.local/auth"
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
---
apiVersion: v1
kind: Service
metadata:
name: keycloak
labels:
app: keycloak
spec:
type: ClusterIP
ports:
- port: 8080
name: http
targetPort: 8080
selector:
app: keycloak
还有我的 ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.org/server-snippets: |
location / {
proxy_set_header X-Forwarded-For $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
name: ingress
spec:
tls:
- hosts:
- my.keycloak.local
rules:
- host: my.keycloak.local
http:
paths:
- path: "/"
pathType: Prefix
backend:
service:
name: keycloak
port:
number: 8080
我不知道我在这里做错了什么。我在 GitHub 上就这个问题进行了一些讨论,但我仍然找不到解决方案。当我访问https://my.keycloak.local/auth 时,我提供的这个特定配置返回 404 not found。
我能说的是,这绝对是 keycloak 的问题——我用 nginx:alpine docker 镜像替换了 keycloak 镜像,一切正常——“欢迎使用 nginx!”页面加载。
如果需要,我很乐意提供更多信息。我的 kubernetes 集群在 AKS 上运行。
【问题讨论】:
-
你能从 keycloak 发布 pod 日志并显示 http 响应吗?
-
pastebin.com/hi5E4qi7 这是您要求的日志。在我提供的这个特定配置中,nginx 为 /auth 端点返回 404。如果我将所有内容更改为通过端口 80,我会得到 502。
标签: nginx kubernetes keycloak kubernetes-ingress nginx-ingress