我正在尝试将
keycloak
设置为舵图要求来运行一些集成测试。我可以让它启动并运行它,但我不知道如何设置我需要的领域和客户端。我已经切换到今天发布的 1.0.0 稳定版本:
https://github.com/kubernetes/charts/tree/master/stable/keycloak
我想使用图表中定义的
keycloak.preStartScript
并使用/opt/jboss/keycloak/bin/kcadm.sh
管理脚本来执行此操作,但显然“预启动”意味着在服务器启动之前,因此kcadm.sh
无法进行身份验证。如果我省略了 keycloak.preStartScript
,我可以将其放入 keycloak 容器中,并在启动并运行后运行我想要使用的 kcadm.sh
脚本,但它们作为预启动脚本的一部分会失败。
这是我的图表的
requirements.yaml
:
dependencies:
- name: keycloak
repository: https://kubernetes-charts.storage.googleapis.com/
version: 1.0.0
这是我的图表的
values.yaml
文件:
keycloak:
keycloak:
persistence:
dbVendor: H2
deployPostgres: false
username: 'admin'
password: 'test'
preStartScript: |
/opt/jboss/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password 'test'
/opt/jboss/keycloak/bin/kcadm.sh create realms -s realm=foo -s enabled=true -o
CID=$(/opt/jboss/keycloak/bin/kcadm.sh create clients -r foo -s clientId=foo -s 'redirectUris=["http://localhost:8080/*"]' -i)
/opt/jboss/keycloak/bin/kcadm.sh get clients/$CID/installation/providers/keycloak-oidc-keycloak-json
persistence:
dbVendor: H2
deployPostgres: false
另外一个烦恼是我需要在两个地方定义持久性设置,否则它要么失败,要么除了
postgresql
之外还会显示
keycloak
我也尝试过这个,也遇到了这个问题,所以提出了一个问题。我更喜欢将 -Dimport 与领域 .json 文件一起使用,但您的观点表明 postStartScript 选项是有意义的,因此我将这两个选项都包含在该问题的 PR 中
Keycloak 图表已更新。看看这些 PR:
在 helm 值文件中启用 keycloakconfigcli,并在配置部分下将领域、客户端和其他详细信息添加为 json。然后就不需要运行启动后或启动前脚本。 示例 json:
配置:
领域1.json: |
{
“领域”:“”,
“启用”:“真”,
“允许注册”:错误,
“角色”:{
“领域”:[
{
“姓名”: ””,
“复合”:假,
“客户角色”:假
},
{
“姓名”: ””,
“复合”:假,
“客户角色”:假
}
]
},
“用户”:[
{
“用户名”: ””,
“电子邮件”: ””,
“启用”:正确,
“名”: ””,
“姓”: ””,
“领域角色”:[
””
],
“证书”: [
{
“类型”:“密码”,
“价值”: ””
}
]
}
],
{
“客户端ID”:“”,
“directAccessGrantsEnabled”:真,
“redirectUris”:[“”],
“网络起源”:[“”],
“bearerOnly”:假,
"rootUrl": "http://ip 或域名",
"adminUrl": "http://ip 或域名"
}
]
}