KubernetesへのデプロイメントにカスタムKeycloakイメージを使用する

カスタムイメージ、外部レジストリ、またはローカルでビルドされたイメージを使用し、Kubernetesで実行します。minikube上のKeycloakまたはOpenShift上のKeycloakの実行バージョンが前提条件です。

概要

使用されているオペレーターに応じて、KeycloakのQuay.ioレジストリからデフォルトイメージをプルします。Keycloakのナイトリーオペレーターを実行すると、Keycloakのナイトリービルドを使用します。たとえば、20.0.0のような特定のバージョンのオペレーターは、Keycloakのバージョン20.0.0を使用します。

このセットアップでは、カスタムリソースのimageプロパティを使用しません。これは、ビルド時のオプションとイメージの再オーグメンテーションを無視するためです。代わりに、podTemplateimageプロパティを使用してイメージを上書きします。このセットアップにより、開発者がローカルでビルドしたイメージを試すのが簡単になるはずです。

リモートレジストリで利用可能なカスタムイメージを使用する

これを変更するには、環境ファイル.envを編集して以下を含めます

.envファイルの入力例
KC_CONTAINER_IMAGE=quay.io/keycloak/keycloak:20.0.1

minikube用のカスタムKeycloakイメージの構築

  1. KeycloakのGitリポジトリを確認してください。

  2. mvn clean install -DskipTests -am -pl quarkus/distを使用してビルドし、/quarkus/dist/targetフォルダーにkeycloak-999.0.0-SNAPSHOT.tar.gzを作成します。

  3. ローカルでビルドされたイメージを使用するようにminikube環境を構成します。

    .envファイルの入力例
    KC_CONTAINER_IMAGE=localhost/keycloak:local

    .envファイルの詳細については、デプロイメントのカスタマイズを参照してください。

  4. コンテナーをPodmanまたはDockerのいずれかでビルドします。

    Podmanを実行する場合
    cd quarkus/container
    cp ../dist/target/keycloak-*.tar.gz .
    podman build --build-arg KEYCLOAK_DIST=$(ls keycloak-*.tar.gz) . -t keycloak:local
    podman image save keycloak:local | minikube image load --overwrite=true -
    Dockerを実行する場合
    cd quarkus/container
    cp ../dist/target/keycloak-*.tar.gz .
    eval $(minikube docker-env)
    docker build --build-arg KEYCLOAK_DIST=$(ls keycloak-*.tar.gz) . -t localhost/keycloak:local
  5. 通常どおりtaskを実行してイメージをデプロイします。

    task

OpenShift用のカスタムKeycloakイメージの構築

  1. KeycloakのGitリポジトリを確認してください。

  2. mvn clean install -DskipTests -am -pl quarkus/distを使用してビルドし、/quarkus/dist/targetフォルダーにkeycloak-999.0.0-SNAPSHOT.tar.gzを作成します。

  3. OpenShiftのバイナリビルドを使用してコンテナーをビルドします。

    cd quarkus/container
    cp ../dist/target/keycloak-*.tar.gz .
    oc project <namespace>
    # delete build config and imagestream in case they exist from a previous run
    oc delete buildconfig keycloak || true
    oc delete imagestream keycloak || true
    oc new-build --strategy docker --binary --image registry.access.redhat.com/ubi9 --name keycloak --build-arg=KEYCLOAK_DIST=$(ls keycloak-*.tar.gz)
    oc start-build keycloak --from-dir . --follow
  4. カスタムイメージを使用するようにOpenShift環境を構成します。

    provision/openshift/.envファイルの入力例
    KC_CONTAINER_IMAGE=image-registry.openshift-image-registry.svc:5000/<namespace>/keycloak:latest

    .envファイルの詳細については、デプロイメントのカスタマイズを参照してください。

  5. 通常どおりtaskを実行してイメージをデプロイします。

    task

汎用Kubernetes用のカスタムKeycloakイメージの構築

  1. KeycloakのGitリポジトリを確認してください。

  2. mvn clean install -DskipTests -am -pl quarkus/distを使用してビルドし、/quarkus/dist/targetフォルダーにkeycloak-999.0.0-SNAPSHOT.tar.gzを作成します。

  3. コンテナーをPodmanまたはDockerのいずれかでビルドします。

    次の例では、quay.ioquay.io/namespace/repository:tagを使用しているレジストリとイメージ名に置き換えてください。

    Podmanを実行する場合
    cd quarkus/container
    cp ../dist/target/keycloak-*.tar.gz .
    IMAGE_NAME=quay.io/namespace/repository:tag
    podman build --build-arg KEYCLOAK_DIST=$(ls keycloak-*.tar.gz) . -t $IMAGE_NAME
    podman login quay.io
    podman push $IMAGE_NAME
    Dockerを実行する場合
    cd quarkus/container
    cp ../dist/target/keycloak-*.tar.gz .
    IMAGE_NAME=quay.io/namespace/repository:tag
    docker build --build-arg KEYCLOAK_DIST=$(ls keycloak-*.tar.gz) . -t $IMAGE_NAME
    docker login quay.io
    docker push $IMAGE_NAME
  4. カスタムイメージを使用するようにOpenShift環境を構成します。

    次の例では、quay.io/namespace/repository:tagを使用しているレジストリとイメージ名に置き換えてください。

    provision/openshift/.envファイルの入力例
    KC_CONTAINER_IMAGE=quay.io/namespace/repository:tag

    .envファイルの詳細については、デプロイメントのカスタマイズを参照してください。

  5. 通常どおりtaskを実行してイメージをデプロイします。

    task

さらに読む

イメージがデプロイされたら、デバッグできます。詳細については、Keycloakのデバッグを参照してください。