在 Kubernetes 中部署自訂 Keycloak 映像檔

使用外部登錄檔中的自訂映像檔或在本機建置的映像檔,並在 Kubernetes 中執行。先決條件是已執行 Minikube 上的 KeycloakOpenShift 上的 Keycloak

概述

根據使用的 Operator,它會從 Keycloak 的 Quay.io 登錄檔提取預設映像檔。當執行 Keycloak 的每日 Operator 時,它會使用 Keycloak 的每日建置版本。特定版本的 Operator (例如 20.0.0) 將會使用 Keycloak 的 20.0.0 版本。

此設定不會在自訂資源中使用 image 屬性,因為這樣會忽略建置時選項和映像檔的重新擴增。相反地,它會使用 podTemplate 中的 image 屬性來覆寫映像檔。此設定應該能讓開發人員更輕鬆地試用他們在本機建置的映像檔。

使用遠端登錄檔中可用的自訂映像檔

若要變更此設定,請編輯環境檔案 .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