Kubernetes

在 Kubernetes 上开始使用 Keycloak

开始之前

请确保您的机器或容器平台可以为 Keycloak 的预期使用提供足够的内存和 CPU。有关如何开始进行生产环境容量规划的更多信息,请参阅CPU 和内存资源容量规划概念

请确保您已安装 Minikube,最好启用 Ingress 插件。

要检查是否已启用 Ingress 插件,请输入以下命令

minikube addons list

如果 Ingress 插件未启用,请输入以下命令启用它

minikube addons enable ingress

启动 Keycloak

Keycloak QuickStarts 仓库包含一些示例文件,以帮助将 Keycloak 部署到 Kubernetes。

第一步,通过输入以下命令创建 Keycloak 部署和服务

kubectl create -f https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/refs/heads/main/kubernetes/keycloak.yaml

此命令在 Kubernetes 上启动 Keycloak,并创建一个初始管理员用户,用户名为 admin,密码为 admin

如果您最终需要多个服务器副本,请参阅扩容指南。

通过启用 Ingress 插件访问 Keycloak

现在通过输入以下命令为 Keycloak 创建 Ingress

wget -q -O - https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/refs/heads/main/kubernetes/keycloak-ingress.yaml | \
sed "s/KEYCLOAK_HOST/keycloak.$(minikube ip).nip.io/" | \
kubectl create -f -

如果 wgetsed 不可用,请下载该文件并手动编辑该文件,将 KEYCLOAK_HOST 替换为 keycloak.<minikube ip address>.nip.io

输入以下命令查看 Keycloak URL

KEYCLOAK_URL=https://keycloak.$(minikube ip).nip.io &&
echo "" &&
echo "Keycloak:                 $KEYCLOAK_URL" &&
echo "Keycloak Admin Console:   $KEYCLOAK_URL/admin" &&
echo "Keycloak Account Console: $KEYCLOAK_URL/realms/myrealm/account" &&
echo ""

在没有 Ingress 的情况下访问 Keycloak

如果未启用 Ingress 插件,请在单独的 shell 中输入以下命令

minikube tunnel

您现在可以从以下 URL 访问 Keycloak

KEYCLOAK_URL=http://$(minikube ip):$(kubectl get services/keycloak -o go-template='{{(index .spec.ports 0).nodePort}}') &&
echo "" &&
echo "Keycloak:                 $KEYCLOAK_URL" &&
echo "Keycloak Admin Console:   $KEYCLOAK_URL/admin" &&
echo "Keycloak Account Console: $KEYCLOAK_URL/realms/myrealm/account" &&
echo ""

请记住这些 URL。当您按照本指南中的说明进行操作时,您需要它们。帐户控制台的 URL 尚无法工作,因为您需要先创建 realm。

登录到管理控制台

  1. 转到 Keycloak 管理控制台。

  2. 使用您之前创建的用户名和密码登录。

创建 realm

Keycloak 中的 realm 相当于租户。每个 realm 都允许管理员创建隔离的应用程序和用户组。最初,Keycloak 包含一个名为 master 的 realm。仅使用此 realm 管理 Keycloak,而不要用于管理任何应用程序。

使用以下步骤创建第一个 realm。

  1. 打开 Keycloak 管理控制台。

  2. 单击当前 realm旁边的 创建 Realm

  3. Realm 名称 字段中输入 myrealm

  4. 单击 创建

Add realm
图 1. 添加 realm

创建用户

最初,realm 没有用户。使用以下步骤创建用户

  1. 确认您仍然在 myrealm realm 中,它位于 当前 realm 旁边。

  2. 单击左侧菜单中的 用户

  3. 单击 创建新用户

  4. 使用以下值填写表单

    • 用户名: myuser

    • 名字: 任意名字

    • 姓氏: 任意姓氏

  5. 单击 创建

Create user
图 2. 创建用户

此用户需要密码才能登录。要设置初始密码

  1. 单击页面顶部的 凭据

  2. 设置密码 表单中填写密码。

  3. 临时 切换为 关闭,以便用户在首次登录时无需更新此密码。

Set password
图 3. 设置密码

登录到帐户控制台

您现在可以登录到帐户控制台以验证此用户配置正确。

  1. 打开 Keycloak 帐户控制台。

  2. 使用 myuser 和您之前创建的密码登录。

作为帐户控制台中的用户,您可以管理您的帐户,包括修改您的个人资料、添加双因素身份验证以及添加身份提供商帐户。

Keycloak Account Console

保护第一个应用程序

要保护第一个应用程序,您首先需要向您的 Keycloak 实例注册该应用程序

  1. 打开 Keycloak 管理控制台。

  2. 单击 当前 realm 旁边的 myrealm

  3. 单击 客户端

  4. 单击 创建客户端

  5. 使用以下值填写表单

    • 客户端类型: OpenID Connect

    • 客户端 ID: myclient

      Add client
      图 4. 添加客户端
  6. 单击 下一步

  7. 确认 标准流程 已启用。

  8. 单击 下一步

  9. 登录设置 下进行以下更改。

    • 有效的重定向 URI 设置为 https://keycloak.java.net.cn/app/*

    • Web origins 设置为 https://keycloak.java.net.cn

  10. 单击 保存

Update client
图 5. 更新客户端]

要确认客户端已成功创建,您可以使用 Keycloak 网站上的 SPA 测试应用程序。

  1. 打开 https://keycloak.java.net.cn/app/

  2. Keycloak URL 更改为您的 Keycloak 实例的 URL。

  3. 单击 保存

  4. 单击 Sign in 以使用您之前启动的 Keycloak 服务器对该应用程序进行身份验证。

下一步

在生产环境中运行 Keycloak 之前,请考虑以下操作

  • 切换到生产就绪的数据库,例如 PostgreSQL。

  • 使用您自己的证书配置 SSL。

  • 将管理员密码切换为更安全的密码。

有关更多信息,请参阅服务器指南

本页内容