在 Kubernetes 中使用自定义 Keycloak 镜像进行部署

使用自定义镜像(外部注册表或本地构建的镜像)并在 Kubernetes 中运行它。需要先运行一个 在 Minikube 上的 Keycloak在 OpenShift 上的 Keycloak 版本。

概述

根据使用的操作符的不同,它将从 Keycloak 的 Quay.io 注册表中拉取默认镜像。在运行 Keycloak 的夜间操作符时,它使用 Keycloak 的夜间构建版本。特定版本的操作符(例如 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