apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
name: my-realm-kc
spec:
keycloakCRName: <name of the keycloak CR>
realm:
...
使用 Keycloak 操作符,您可以对 Keycloak 部署执行领域导入。
|
以下是一个领域导入自定义资源 (CR) 的示例
apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
name: my-realm-kc
spec:
keycloakCRName: <name of the keycloak CR>
realm:
...
此 CR 应在与 Keycloak 部署 CR 相同的命名空间中创建,该命名空间在 keycloakCRName
字段中定义。realm
字段接受完整的 RealmRepresentation。
获取 RealmRepresentation
的推荐方法是利用导出功能 导入和导出领域。
将领域导出到单个文件。
将 JSON 文件转换为 YAML。
将获得的 YAML 文件复制并粘贴为 realm
键的主体,确保缩进正确。
使用 kubectl
在正确的集群命名空间中创建 CR
创建 YAML 文件 example-realm-import.yaml
apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
name: my-realm-kc
spec:
keycloakCRName: <name of the keycloak CR>
realm:
id: example-realm
realm: example-realm
displayName: ExampleRealm
enabled: true
应用更改
kubectl apply -f example-realm-import.yaml
要检查正在运行的导入的状态,请输入以下命令
kubectl get keycloakrealmimports/my-realm-kc -o go-template='{{range .status.conditions}}CONDITION: {{.type}}{{"\n"}} STATUS: {{.status}}{{"\n"}} MESSAGE: {{.message}}{{"\n"}}{{end}}'
导入成功完成后,输出将类似于以下示例
CONDITION: Done
STATUS: true
MESSAGE:
CONDITION: Started
STATUS: false
MESSAGE:
CONDITION: HasErrors
STATUS: false
MESSAGE:
导入支持引用环境变量的占位符,有关更多信息,请参见 导入和导出领域。KeycloakRealmImport
CR 允许您通过 spec.placeholders
节来利用此功能,例如
apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
name: my-realm-kc
spec:
keycloakCRName: <name of the keycloak CR>
placeholders:
ENV_KEY:
secret:
name: SECRET_NAME
key: SECRET_KEY
...
在上面的示例中,将启用占位符替换,并且将从密钥 SECRET_KEY
的 Secret SECRET_NAME
的值创建具有密钥 ENV_KEY
的环境变量。目前仅支持 Secret,并且它们必须位于与 Keycloak CR 相同的命名空间中。