在 Kubernetes 中部署自定义 Keycloak 镜像

使用外部注册表中的自定义镜像或本地构建的镜像,并在 Kubernetes 中运行。在 minikube 上运行的 Keycloak 版本或在 OpenShift 上运行的 Keycloak 版本是先决条件。

概览

根据所使用的 Operator,它将从 Keycloak 的 Quay.io 注册表中拉取默认镜像。当运行 Keycloak 的 nightly Operator 时,它使用 Keycloak 的 nightly 构建版本。特定版本的 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