其他信息
更深入的安装见解
本节展示了不同的步骤及其变体,并对其进行更详细的解释。它还展示了可以增量更新堆栈各个部分的 helm upgrade
命令,这有助于开发和升级。
在默认模式下使用 VM 启动 minikube。默认情况下,它使用两个 CPU,这可以调整。
minikube start
使用自定义设置启动。
minikube stop
minikube delete
minikube start --memory 8192 --cpus 4
根据驱动程序的不同,调整设置可能适用于已创建的 minikube 实例。
minikube stop
minikube config set memory 8192
minikube config set cpus 4
minikube start
在 Linux 上使用 Podman 驱动程序启动 minikube。这可以实现更快的启动时间、更少的内存使用量,并且对 CPU 使用率没有限制。
minikube start --driver=kvm2 --container-runtime=cri-o --docker-opt="default-ulimit=nofile=102400:102400"
这需要 libvirtd 运行。
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo usermod -a -G libvirt $USER
# now relogin, for usermod to become effective
对于当今无法扩展到 3-5 个以上 Keycloak 实例的轻量级安装
minikube start --driver=podman --container-runtime=cri-o
在 Linux 上,允许通过 sudo 使用 Podman 和 crio
-
运行
sudo visudo
-
将以下内容添加到 sudoer 文件
username ALL=(ALL) NOPASSWD: /usr/bin/podman username ALL=(ALL) NOPASSWD: /usr/bin/crictl
添加 Ingress
minikube addons enable ingress
所有其他安装都使用 task
脚本化。它以正确的顺序并行运行所有任务(如果可能)。如果任务定义发生更改,它将再次运行该任务。使用 task -f
强制再次运行所有任务,例如在重置 minikube 后。
有关更多信息,请查看 使用工具 task 进行自动化。
自定义 Keycloak
Keycloak 在安装时启用了监控。
通过 keycloak/values.yaml
添加本地自定义设置
-
将
monitoring
设置为false
以在不使用监控选项的情况下安装 Keycloak。 -
将
disableCaches
设置为true
以禁用 Keycloak 存储中的缓存。
暂停/恢复设置
可以暂停和恢复设置,而无需重启或重新安装所有 pod。
要停止,请运行以下命令
minikube stop
要恢复,请运行以下命令。
minikube start
在 minikube 重新启动后,Ingress 的 IP 地址可能会有所不同。因此,需要更新所有 Ingress。为此,请运行 task
。
将 Provider 部署到 minikube
Keycloak 可以通过 Provider 进行扩展。此设置也支持这一点。
所有 Provider JAR 都需要放置在 keycloak/providers
中。
更新这些文件后,运行 task
。Keycloak 将重启,然后 Provider 即可用。由于这使用 ConfigMap 将所有信息放置在 Kubernetes 中可用,因此所有 Provider 编码为 base64 的最大组合大小为 1 MiB。
默认情况下部署了 dataprovider 模块。
要测试 dataprovider 模块是否已部署,请测试 URL https://keycloak-keycloak.xx.xx.xx.xx.nip.io/realms/master/dataset/status
。使用 ./isup.sh
脚本来查找 Keycloak 的 IP 地址。
使用无效 TLS 证书运行 kcadm.sh
minikube 设置不包含受信任的 TLS 证书,并且证书也不匹配主机名。
要禁用 Java 中的 TLS 检查,请参阅模块 provision/tlsdisableagent
,以了解如何运行例如 kcadm.sh
。
运行 Gatling
要在本地计算机上使用 Gatling 运行基准测试并将指标转发到 minikube 中的 Graphite 导出器,您需要传递 minikube 的 IP 地址作为环境变量,该变量随后在 gatling.conf
中使用。
export GRAPHITE_TCP_ADDR=$(minikube ip)
Gatling 指标到 Prometheus 的映射(包括指标名称和标签)在 graphite_mapping.yaml
中配置。测试运行后,指标将以 gatling_users
和 gatling_requests
的形式提供。
此设置假定只有一个负载驱动程序正在运行。如果运行了更多负载驱动程序,则 Gatling 配置中的 rootPathPrefix
以及 gatling.conf
设置需要更改。目前,这被认为超出范围,因为一个 Gatling 实例可以生成比所需负载大几个数量级的负载。
Prometheus Gatling 导出器将指标保留 5 分钟,然后忘记它们。到那时,Prometheus 已经抓取了它们并将值存储在其数据库中。
连接到运行 minikube 的远程主机
当在远程主机上运行 minikube 时,端口无法从主机外部远程访问。如果可以,这将是一个安全问题,因为 minikube 上部署的应用程序以及 Kubernetes API 本身使用了默认密码,有时甚至没有密码。
要远程连接到 Keycloak 和其他服务,一种方法是使用 SSH 端口转发。
由于 Keycloak 对配置的端口和 IP 地址非常敏感,因此端口转发需要绑定与 minikube 上相同的端口。由于它在 minikube 上以端口 443 运行,因此这需要以 root 用户身份运行 SSH,以便它可以本地绑定端口 443。
假设通过 mininkube ip
检索到的远程主机上 minikube 的 IP 地址为 192.168.39.19
,则以下步骤有效。
每当远程主机上的 minikube 实例被重新创建时,它都会收到不同的 IP 地址,并且需要调整命令。 |
-
在本地
hosts
文件中添加一个条目,将 minikube 的主机名指向该条目127.0.0.1 kubebox.192.168.39.19.nip.io grafana.192.168.39.19.nip.io keycloak.192.168.39.19.nip.io
-
将当前用户的 SSH 密钥放在 root 用户的
/root/.ssh
中,以便sudo ssh
可以访问它们。 -
运行带有端口转发的 SSH
sudo ssh -L 443:192.168.39.19:443 user@remotehost
现在像往常一样将浏览器指向 https://keycloak-keycloak.192.168.39.19.nip.io 以与应用程序交互。在 SSH 隧道就位的情况下,响应时间会稍慢一些,因此用户无法在其本地计算机上运行具有代表性的负载测试,而 minikube 在远程计算机上运行。
为了优化连接的服务器端,请考虑更新 sshd 中的 MaxSessions
参数,否则通过一个 SSH 会话的会话数将限制为 10,用户可能会看到浏览器阻塞。建议的数字为 100。