【发布时间】:2021-02-24 08:30:48
【问题描述】:
按照下面 Keycloak 文档站点上的说明,我正在尝试将 Keycloak 设置为在 Kubernetes 集群中运行。我设置了一个入口控制器,它成功地适用于一个简单的测试页面。 Cloudflare 将域指向入口控制器 IP。
Keycloak 部署成功 (Admin console listening on http://127.0.0.1:9990),但在访问域时,我收到一条来自 NGINX 的消息:503 Service Temporarily Unavailable。
https://www.keycloak.org/getting-started/getting-started-kube
这是 Kubernetes 配置:
apiVersion: v1
kind: Service
metadata:
name: keycloak-cip
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
name: keycloak
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
service.beta.kubernetes.io/linode-loadbalancer-default-protocol: https
service.beta.kubernetes.io/linode-loadbalancer-port-443: '{ "tls-secret-name": "my-secret", "protocol": "https" }'
spec:
rules:
- host: my.domain.com
http:
paths:
- backend:
serviceName: keycloak-cip
servicePort: 8080
tls:
- hosts:
- my.domain.com
secretName: my-secret
---
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: quay.io/keycloak/keycloak:12.0.3
env:
- name: KEYCLOAK_USER
value: "admin"
- name: KEYCLOAK_PASSWORD
value: "admin"
- name: PROXY_ADDRESS_FORWARDING
value: "true"
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
readinessProbe:
httpGet:
path: /auth/realms/master
port: 8080
initialDelaySeconds: 90
periodSeconds: 5
failureThreshold: 30
successThreshold: 1
revisionHistoryLimit: 1
编辑:
TLS 应该由入口控制器处理。
--
编辑 2:
如果我使用 kubectl exec 进入控制器,我可以使用 curl -L http://127.0.0.1:8080/auth 成功检索页面:
<title>Welcome to Keycloak</title>。所以我确定keycloak正在运行。只是流量没有到达pod,或者keycloak没有响应。
如果我改用 ClusterIP 但保持上面的调用不变,我会得到一个Connection timed out。我尝试了 80 和 8080 端口,结果相同。
【问题讨论】:
标签: docker ssl kubernetes network-programming keycloak