我正在kubernetes minikube集群中设置Keycloak。
我以为设置工作,因为我可以使用keycloak,但当我连接到postgresql数据库,我看不到任何表。我一直在阅读类似的问题,如这个Unable to see Keycloak Tables in Postgres。在我的情况下,似乎Keycloak只连接到H2,而不是postgresql。在日志中,我看不到它做任何尝试连接到数据库中指定的yaml文件。
以下是显示它连接到H2的日志摘录:
default keycloak-7bdc548789-tknc2 keycloak 2023-04-10 02:14:15,634 TRACE [liquibase.database.core.H2Database] (main) Connected to SA@jdbc:h2:file:/opt/keycloak/bin/../data/h2/keycloakdb
default keycloak-7bdc548789-tknc2 keycloak 2023-04-10 02:14:15,634 TRACE [liquibase.database.core.H2Database] (main) Setting auto commit to false from true
default keycloak-7bdc548789-tknc2 keycloak 2023-04-10 02:14:15,634 DEBUG [org.keycloak.quarkus.runtime.storage.legacy.liquibase.QuarkusLiquibaseConnectionProvider] (main) Using changelog file META-INF/jpa-changelog-master.xml and changelogTableName DATABASECHANGELOG
default keycloak-7bdc548789-tknc2 keycloak 2023-04-10 02:14:15,635 DEBUG [liquibase.database.core.H2Database] (main) Set default schema name to PUBLIC
以下是Kubernetes yaml配置文件:
Keycloak的Yaml:
---
apiVersion: v1
kind: Service
metadata:
name: keycloak
labels:
app: keycloak
spec:
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app: keycloak
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
labels:
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: quay.io/keycloak/keycloak:21.0.2
args: ["start-dev --log-level=TRACE"]
env:
- name: KEYCLOAK_ADMIN
value: "admin"
- name: KEYCLOAK_ADMIN_PASSWORD
value: "admin"
- name: KC_PROXY
value: "edge"
- name: DB_VENDOR
value: "POSTGRES"
- name: DB_ADDR
value: "keycloak-db"
- name: DB_DATABASE
value: "keycloak"
- name: KEYCLOAK_FRONTEND_URL
value: "http://devtest-ingress.info/api/keycloak/"
- name: DB_USER
valueFrom:
secretKeyRef:
name: postgres-creds
key: user
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-creds
key: password
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /realms/master
port: 8080
Postgresql的Yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: keycloak-db
replicas: 1
template:
metadata:
labels:
app: keycloak-db
spec:
containers:
- name: keycloak-db
image: postgres:13
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: postgres-creds
key: user
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: postgres-creds
key: password
- name: POSTGRES_DB
value: keycloak
ports:
- name: keycloak-db
containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: Service
metadata:
name: keycloak-db
spec:
selector:
app: keycloak-db
ports:
- name: keycloak-db
port: 5432
type: ClusterIP
1条答案
按热度按时间bhmjp9jg1#
下面的yaml与上面的有点不同。它不工作的主要原因是环境变量在最近的keycloak版本中被更改了,下面是一个工作的yaml