其他資訊

深入了解安裝

本節顯示具有不同變體的不同步驟,並稍微說明。它還顯示了可以增量更新堆疊部分的 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

  1. 執行 sudo visudo

  2. 將以下內容新增至 sudoer 的檔案中

    username ALL=(ALL) NOPASSWD: /usr/bin/podman
    username ALL=(ALL) NOPASSWD: /usr/bin/crictl

新增入口

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 重新啟動後,入口的 IP 位址可能不同。因此,需要更新所有入口。執行此操作,執行 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。

假設遠端主機上的 minikube IP 位址由 mininkube 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。