第3章 レルムインポートの自動化
Operator を使用してレルムのインポートを自動化します。
3.1. Red Hat build of Keycloak レルムのインポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Keycloak Operator を使用すると、Keycloak デプロイメントのレルムのインポートを実行できます。
- Red Hat build of Keycloak に同じ名前のレルムがすでに存在する場合、上書きされません。
- Realm Import CR は、新しいレルムの作成のみをサポートし、それらの更新や削除は行いません。Red Hat build of Keycloak で直接実行されたレルムへの変更は、CR に同期されません。
3.1.1. レルムインポートカスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下は、レルムインポートカスタムリソース (CR) の例です。
apiVersion: k8s.keycloak.org/v2alpha1
kind: KeycloakRealmImport
metadata:
name: my-realm-kc
spec:
keycloakCRName: <name of the keycloak CR>
realm:
...
この CR は、フィールド keycloakCRName で定義された Keycloak デプロイメント CR と同じ namespace に作成する必要があります。realm フィールドには完全な RealmRepresentation を指定できます。
RealmRepresentation を取得するには、エクスポート機能 レルムのインポートとエクスポート を利用することを推奨します。
- レルムを単一のファイルにエクスポートします。
- JSON ファイルを YAML に変換します。
-
取得した YAML ファイルをコピーして
realmキーのボディーとして貼り付け、インデントが正しいことを確認します。
3.1.2. Realm Import CR の適用 リンクのコピーリンクがクリップボードにコピーされました!
oc を使用して、正しいクラスター namespace に 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
変更を適用します。
oc apply -f example-realm-import.yaml
実行中のインポートのステータスを確認するには、次のコマンドを入力します。
oc 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:
3.1.3. プレースホルダー リンクのコピーリンクがクリップボードにコピーされました!
インポートでは、環境変数を参照するプレースホルダーがサポートされます。詳細は、レルムのインポートとエクスポート を参照してください。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_NAME’s value for key `SECRET_KEY シークレットから ENV_KEY キーを持つ環境変数が作成されます。現在、Secrets のみがサポートされており、Keycloak CR と同じ namespace に存在する必要があります。
3.1.4. セキュリティーに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
KeycloakRealmImport CR の作成権限または編集権限を持つユーザーは、namespace レベルの管理者である必要があります。
プレースホルダーの置換により、機密性の高い環境変数を含め、すべての環境変数にアクセスできるようになります。