如何利用操作员和外部数据库创建钥匙罩 [英] How to create keycloak with operator and external database

查看:18
本文介绍了如何利用操作员和外部数据库创建钥匙罩的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我关注this,但它不起作用。

我创建了自定义密钥:

apiVersion: v1
kind: Secret
metadata:
    name: keycloak-db-secret
data:
    POSTGRES_DATABASE: ...
    POSTGRES_EXTERNAL_ADDRESS: ...
    POSTGRES_EXTERNAL_PORT: ...
    POSTGRES_HOST: ...
    POSTGRES_USERNAME: ...
    POSTGRES_PASSWORD: ...

和带有外部数据库的密钥罩:

apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
  labels:
      app: keycloak
  name: keycloak
spec:
  externalDatabase:
    enabled: true
  instances: 1
但是,当我检查日志时,KEYCLOAK无法连接到数据库。它是否仍在使用默认值:keycloak-postgresql.keycloak不是在我的自定义密码中定义的值?为什么不使用我来自机密的价值?

更新

当我检查由操作员创建的钥匙斗篷Pod时,我可以看到:

  env:
    - name: DB_VENDOR
      value: POSTGRES
    - name: DB_SCHEMA
      value: public
    - name: DB_ADDR
      value: keycloak-postgresql.keycloak
    - name: DB_PORT
      value: '5432'
    - name: DB_DATABASE
      value: keycloak
    - name: DB_USER
      valueFrom:
        secretKeyRef:
          name: keycloak-db-secret
          key: POSTGRES_USERNAME
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: keycloak-db-secret
          key: POSTGRES_PASSWORD

现在我知道为什么我无法连接到数据库了。它使用不同DB_ADDR。如何使用地址:my-app.postgres(另一个命名空间中的db)。

我不知道为什么密码中的postgres_host不起作用,Pod仍然使用默认服务名称

推荐答案

连接到您可以使用的另一个命名空间中的服务。

<servicename>.<namespace>.svc.cluster.local

假设您的Postgres部署和服务在测试命名空间中运行,将如下所示

postgres.test.svc.cluster.local

这是我正在使用的内容:https://github.com/harsh4870/Keycloack-postgres-kubernetes-deployment/blob/main/keycload-deployment.yaml

我还附上了postgres文件,您可以使用它,但在我的示例中,我在相同的命名空间密钥伪装postgres中都进行了设置,因此工作起来很有魅力。

这篇关于如何利用操作员和外部数据库创建钥匙罩的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆