Keycloak 領域匯入

如何使用 Operator 執行自動化的 Keycloak 領域匯入

匯入 Keycloak 領域

使用 Keycloak Operator,您可以對 Keycloak 部署執行領域匯入。

  • 如果 Keycloak 中已存在相同名稱的領域,則不會覆寫它。

  • 領域匯入 CR 僅支援建立新的領域,不支援更新或刪除這些領域。直接在 Keycloak 上執行的領域變更不會同步回 CR。

建立領域匯入自訂資源

以下是一個領域匯入自訂資源 (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 的建議方式是利用匯出功能匯入和匯出領域

  1. 將領域匯出到單一檔案。

  2. 將 JSON 檔案轉換為 YAML。

  3. 複製並貼上取得的 YAML 檔案作為 realm 鍵的值,確保縮排正確。

套用領域匯入 CR

使用 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 SECRET_NAME 中,鍵為 SECRET_KEY 的值建立一個鍵為 ENV_KEY 的環境變數。目前僅支援 Secret,它們必須與 Keycloak CR 位於相同的命名空間中。

本頁內容