その他の情報
インストールの詳細
このセクションでは、さまざまなバリアントを含む手順を示し、それらについてもう少し詳しく説明します。また、開発とアップグレードに役立つスタックの一部を段階的に更新できる helm upgrade
コマンドも示します。
VM を使用したデフォルトモードで minikube を起動します。デフォルトでは、2 つの 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 では、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
を使用してスクリプト化されています。可能な場合は、すべてのタスクを正しい順序で並行して実行します。タスク定義が変更された場合、再度実行します。たとえば、minikube をリセットした後などに、すべてのタスクを強制的に再実行するには、task -f
を使用します。
詳細については、ツール task を使用した自動化 を参照してください。
Keycloak のカスタマイズ
Keycloak はモニタリングを有効にしてインストールされています。
keycloak/values.yaml
経由でローカルカスタマイズを追加します
-
モニタリングオプションなしで Keycloak をインストールするには、
monitoring
をfalse
に設定します。 -
Keycloak のストアでキャッシュを無効にするには、
disableCaches
をtrue
に設定します。
一時停止/再開の設定
セットアップは、すべてのポッドを再起動または再インストールせずに、一時停止および再開できます。
停止するには、次のコマンドを実行します
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
をテストします。Keycloak の IP アドレスを調べるには、./isup.sh
スクリプトを使用します。
無効な TLS 証明書で kcadm.sh
を実行する
minikube セットアップには信頼された TLS 証明書が含まれておらず、証明書もホスト名と一致しません。
Java で TLS チェックを無効にする方法の詳細については、たとえば kcadm.sh
を実行する方法の詳細については、モジュール provision/tlsdisableagent
を参照してください。
Gatling の実行
ローカルマシンで Gatling を使用してベンチマークを実行し、minikube の Graphite エクスポーターにメトリクスを転送するには、minikube の IP アドレスを環境変数として渡す必要があります。これは gatling.conf
内で使用されます。
export GRAPHITE_TCP_ADDR=$(minikube ip)
メトリック名やラベルなど、Gatling のメトリクスから Prometheus へのマッピングは graphite_mapping.yaml
で構成されています。テストが実行されると、メトリクスは gatling_users
および gatling_requests
として利用可能になります。
このセットアップは、ロードドライバーが 1 つだけ実行されていることを前提としています。より多くのロードドライバーが実行されている場合は、Gatling の構成の rootPathPrefix
を変更する必要があり、gatling.conf
のセットアップも変更する必要があります。今のところ、1 つの Gatling インスタンスで必要な負荷よりも数桁多い負荷を生成できるため、これは範囲外と見なされます。
Prometheus Gatling エクスポーターは、メトリクスを 5 分間保持してから忘れます。その時までに、Prometheus はすでにそれらをスクレイピングし、値をデータベースに保存しています。
リモートホストで実行されている minikube への接続
リモートホストで minikube を実行する場合、ポートはホストの外部からリモートでアクセスできません。もしアクセスできるとしたら、minikube にデプロイされたアプリケーションや Kubernetes API 自体で使用されるデフォルトのパスワード、またはパスワードが使用されていない場合があるため、セキュリティ上の懸念事項になります。
Keycloak およびその他のサービスにリモートで接続する 1 つの方法は、SSH ポートフォワーディングを使用することです。
Keycloak は構成されたポートと IP アドレスに非常に特化しているため、ポートフォワーディングは minikube 上と同じポートをバインドする必要があります。minikube でポート 443 で実行されているため、ローカルでポート 443 をバインドするには、SSH を root として実行する必要があります。
minikube ip
で取得されたリモートホスト上の minikube の IP アドレスが 192.168.39.19
であると仮定すると、次の手順が有効です。
リモートホスト上の minikube インスタンスが再作成されるたびに、異なる IP アドレスが割り当てられ、コマンドを調整する必要があります。 |
-
minikube のホスト名を指すエントリをローカルの
hosts
ファイルに追加します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 トンネルが確立されている場合、応答時間は少し遅くなるため、ユーザーはローカルマシンで gatling を使用して代表的な負荷テストを実行し、リモートマシンで minikube を実行することはできません。
接続のサーバー側を最適化するには、sshd の MaxSessions
パラメーターを更新することを検討してください。そうしないと、1 つの SSH セッションを介したセッション数が 10 に制限され、ユーザーはブラウザがブロックされているように見える場合があります。推奨される数値は 100 です。