web-dev-qa-db-ja.com

KubernetesでのKeycloakデータのエクスポート/インポートのベストプラクティス

Keycloakバージョン3.3.0.CR1のインポート/エクスポートのベストプラクティスを理解しようとしています。 keycloakの公式ページ import/export にあるように、彼らは戦略について説明しました。ここでは、単一ファイルjsonへのエクスポートの例を示します。/keycloak/binフォルダーに移動し、これを実行します。

./standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=keycloak-export.json

K8sポッドにログインしました。このコマンドを実行した後、エラーが発生します。

12:23:32,045 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
    ("core-service" => "management"),
    ("management-interface" => "http-interface")
]) - failure description: {
    "WFLYCTL0080: Failed services" => {"org.wildfly.management.http.extensible" => "Java.net.BindException: Address already in use /127.0.0.1:9990"},
    "WFLYCTL0288: One or more services were unable to start due to one or more indirect dependencies not being available." => {
        "Services that were unable to start:" => ["org.wildfly.management.http.extensible.shutdown"],
        "Services that may be the cause:" => ["jboss.remoting.remotingConnectorInfoService.http-remoting-connector"]
    }
}

ご覧のとおり、Keycloakサーバーは同じポートで実行されているため、バックアップスクリプトを実行しました。ここでhelm/keycloak values.yml:

Service:
  Name: keycloak
  Port: 8080
  Type: ClusterIP

Deployment:
  Image: jboss/keycloak
  ImageTag: 2.5.1.Final
  ImagePullPolicy: IfNotPresent
  ContainerPort: 8080
  KeycloakUser: Admin
  KeycloakPassword: Admin

したがって、このスクリプトを実行する前にサーバーを停止する必要がありますか?入力によってポッドが閉じられ、新しいポッドが作成されるため、ポッド内のキークロークプロセスを停止できません。データをエクスポート/インポート(バックアップ/復元)する他の方法について何か提案はありますか?または私は何かが欠けていますか?

P.S. UIのインポート/エクスポートも試しました。エクスポートはうまく機能し、すべてのデータが表示されます。しかし、インポートは途中で機能しました。彼は私にすべての「クライアント」をもたらしましたが、私の「レルム」と「ユーザーフェデレーション」は持っていませんでした。出来ますか?

7
muzafarow

基本的に、メインインスタンスとは異なるポートでKeycloakインスタンスのエクスポートを開始する必要があります。私は今このようなものを使用しました:

_bin/standalone.sh -Dkeycloak.migration.action=export -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file=keycloak-export.json -Djboss.http.port=8888 -Djboss.https.port=9999 -Djboss.management.http.port=7777_

重要な部分はすべてのポートです。さらにエラーメッセージが表示される場合は、プロパティを追加する必要があるかもしれません(_grep port standalone/configuration/standalone.xml_はプロパティ名を見つけるための友達です)が、最終的にはすべてのエラーメッセージが停止し、代わりに次のメッセージが表示されます。

09:15:26,550 INFO [org.keycloak.exportimport.singlefile.SingleFileExportProvider] (ServerService Thread Pool -- 52) Exporting model into file /opt/jboss/keycloak/keycloak-export.json [...] 09:15:29,565 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: Keycloak 3.2.0.Final (WildFly Core 2.0.10.Final) started in 12156ms - Started 444 of 818 services (558 services are lazy, passive or on-demand)

これで、サーバーを停止できます。 Ctrl-C、コンテナを終了し、エクスポートファイルを_kubectl cp_でコピーします。

12