第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 に同期されません。
- レルムをインポートした後は、関連する Kubernetes ジョブと Pod リソースをクリーンアップするために Realm Import CR を削除する必要があります。
3.1.1. レルムインポートカスタムリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
以下は、レルムインポートカスタムリソース (CR) の例です。
この 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 を作成します。
変更を適用します。
oc apply -f example-realm-import.yaml
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}}'
oc get keycloakrealmimports/my-realm-kc -o go-template='{{range .status.conditions}}CONDITION: {{.type}}{{"\n"}} STATUS: {{.status}}{{"\n"}} MESSAGE: {{.message}}{{"\n"}}{{end}}'
インポートが正常に完了すると、出力は次の例のようになります。
3.1.3. プレースホルダー リンクのコピーリンクがクリップボードにコピーされました!
インポートでは、環境変数を参照するプレースホルダーがサポートされます。詳細は、レルムのインポートとエクスポート を参照してください。KeycloakRealmImport CR を使用すると、spec.placeholders スタンザを介してこの機能を利用できます。次に例を示します。
上記の例では、プレースホルダーの置き換えが有効になり、SECRET_NAME という名前のシークレットに含まれる SECRET_KEY キーの値から、ENV_KEY キーを持つ環境変数が作成されます。現在、Secrets のみがサポートされており、Keycloak CR と同じ namespace に存在する必要があります。
3.1.4. セキュリティーに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
KeycloakRealmImport CR の作成権限または編集権限を持つユーザーは、namespace レベルの管理者である必要があります。
プレースホルダーの置換により、機密性の高い環境変数を含め、すべての環境変数にアクセスできるようになります。