第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) の例です。
この 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’s value for key `SECRET_KEY
シークレットから ENV_KEY
キーを持つ環境変数が作成されます。現在、Secrets のみがサポートされており、Keycloak CR と同じ namespace に存在する必要があります。
3.1.4. セキュリティーに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
KeycloakRealmImport CR の作成権限または編集権限を持つユーザーは、namespace レベルの管理者である必要があります。
プレースホルダーの置換により、機密性の高い環境変数を含め、すべての環境変数にアクセスできるようになります。