其他信息

更多关于安装的见解

本节展示了带有变体的不同步骤,并对其进行了更详细的解释。 它还展示了 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

使用 Podman 驱动程序在 Linux 上启动 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 上,允许使用 Podman 和 crio 通过 sudo

  1. 运行 sudo visudo

  2. 将以下内容添加到 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

重置测试系统 (Keycloak)

这将清除数据库并重新启动 Keycloak 实例。 完成后,它将重新初始化用于 Gatling 的用户。

task reset-keycloak

将提供程序部署到 minikube

Keycloak 可以通过提供程序扩展。 此设置也支持此功能。

所有提供程序 JAR 都需要放在 keycloak/providers 中。

在更新那里的文件后,运行 task。 Keycloak 重新启动,然后提供程序可用。 由于这使用 ConfigMap 来放置所有 Kubernetes 信息,因此所有提供程序作为 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_usersgatling_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 地址,并且需要调整命令。

  1. 在本地 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
  2. 将当前用户的 SSH 密钥放入 root 用户,以便 sudo ssh 可以访问它们。

  3. 运行带有端口转发的 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。