在 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 镜像
-
使用
mvn clean install -DskipTests -am -pl quarkus/dist
构建,以在/quarkus/dist/target
文件夹中创建一个keycloak-999.0.0-SNAPSHOT.tar.gz
文件。 -
配置 minikube 环境以使用本地构建的镜像。
.env
文件中的示例条目KC_CONTAINER_IMAGE=localhost/keycloak:local
要了解有关
.env
文件的更多信息,请参阅 自定义部署。 -
构建容器,可以使用 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
-
像往常一样运行
task
来部署镜像。task
为 OpenShift 构建自定义 Keycloak 镜像
-
使用
mvn clean install -DskipTests -am -pl quarkus/dist
构建,以在/quarkus/dist/target
文件夹中创建一个keycloak-999.0.0-SNAPSHOT.tar.gz
文件。 -
使用 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
-
配置 OpenShift 环境以使用自定义镜像。
provision/openshift/.env
文件中的示例条目KC_CONTAINER_IMAGE=image-registry.openshift-image-registry.svc:5000/<namespace>/keycloak:latest
要了解有关
.env
文件的更多信息,请参阅 自定义部署。 -
像往常一样运行
task
来部署镜像。task
为通用 Kubernetes 构建自定义 Keycloak 镜像
-
使用
mvn clean install -DskipTests -am -pl quarkus/dist
构建,以在/quarkus/dist/target
文件夹中创建一个keycloak-999.0.0-SNAPSHOT.tar.gz
文件。 -
构建容器,可以使用 Podman 或 Docker。
在以下示例中,将
quay.io
和quay.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
-
配置 OpenShift 环境以使用自定义镜像。
在以下示例中,将
quay.io/namespace/repository:tag
替换为您正在使用的注册表和镜像名称。provision/openshift/.env
文件中的示例条目KC_CONTAINER_IMAGE=quay.io/namespace/repository:tag
要了解有关
.env
文件的更多信息,请参阅 自定义部署。 -
像往常一样运行
task
来部署镜像。task
进一步阅读
一旦镜像被部署,就可以进行调试。有关详细信息,请参阅 调试 Keycloak。