Azure Kubernetes Service (AKS)
このページは ステップ 1 の前にお読みください。Azure Kubernetes Service (AKS) に固有の内容を扱います。それ以外は標準のインストール手順に従います。
始める前に
次の推奨事項に沿ってクラスターを計画します。
| 項目 | 推奨事項 |
|---|---|
| Kubernetes | LTS プランなしで AKS がサポートするバージョン(az aks get-versions で確認) |
| ノード | AKS アドオン用のシステムプールと、OpenLM Platform 用のユーザープール。標準セットの場合: ユーザープールに 3 × Standard_D8s_v5(8 vCPU / 32 GiB)。より大規模なサイトの場合: サイジング を参照してください。 |
| ネットワーク | Azure CNI Overlay。送信トラフィックは 静的パブリック IP を持つ NAT ゲートウェイ を経由させ、Azure SQL と Redis のファイアウォールでその IP を許可できるようにします |
| API アクセス | API サーバーへのアクセスを許可された IP 範囲に制限する場合は、NAT ゲートウェイの IP を含めてください。含めないと、ノードが参加できません(K8SAPIServerConnFail) |
Ingress
Azure Standard Load Balancer の背後に ingress-nginx(または Traefik)をインストールします。
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress --create-namespace \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
--set controller.config.proxy-body-size=50m
kubectl -n ingress get service ingress-nginx-controller # EXTERNAL-IP for your DNS A record
ワークシートで INGRESS_CLASS=nginx を設定します。AKS の application routing add-on(マネージド nginx)も使用できます。そのクラスは webapprouting.kubernetes.azure.com です。
AGIC は、独自の証明書の扱いとアノテーションを使って Application Gateway で TLS を終端します。OpenLM Platform の Ingress はこれに対応していません。代わりに、クラスター内に ingress-nginx または Traefik を配置してください。そのコントローラーの 前段 に Application Gateway や Front Door を置く構成は、Host ヘッダーを渡し、同じ DOMAIN の証明書を使用していれば動作します。
ストレージ
managed-csi(Azure Disk、disk.csi.azure.com)を使用します。クラスターの既定であっても、OpenLM Platform のボリュームやクラスター内で実行するデータベースに Azure Files のクラスを使用しないでください。
ノード設定
ファイル監視の上限 は、DaemonSet で設定するか、AKS のバージョンがこれらのキーをサポートしている場合はノードプールのカスタムノード構成(linuxOSConfig.sysctls)で設定します。
ノードプール
任意の ノード配置 を使用するには、ラベルとテイントを付けてプールを作成します。
az aks nodepool add -g <rg> --cluster-name <aks> -n openlmmain \
--node-vm-size Standard_D4s_v5 --node-count 4 \
--labels openlm.com/role=main --node-taints openlm.com/role=main:NoSchedule
az aks nodepool add -g <rg> --cluster-name <aks> -n openlmspark \
--node-vm-size Standard_D4s_v5 --node-count 1 \
--labels openlm.com/role=spark --node-taints openlm.com/role=spark:NoSchedule
プール名は 12 文字以内です。ラベルの値は正確に main と spark です。
values の設定
AKS では、ステップ 4 で用意する values 以外に必要な values はありません。ラベル付きのプールを使用する場合は、global.affinity.enabled: true と global.taints.enabled: true も設定してください。
データサービス
データサービスには、次の Azure サービスまたは独自のものを使用します。
| サービス | Azure の選択肢 | ワークシートの設定 |
|---|---|---|
| SQL Server | Azure SQL Database(単一データベースまたは Elastic Pool)または SQL Managed Instance | SQL_HOST=<server>.database.windows.net、SQL_ENCRYPT=True。サーバーのファイアウォールで NAT ゲートウェイの IP を許可するか、プライベートエンドポイントを使用します。 |
| Redis | Azure Managed Redis または Azure Cache for Redis | REDIS_TLS=true。Azure Managed Redis: ポート 10000、クラスタリングポリシーは non-clustered。Azure Cache for Redis: ポート 6380。REDIS_PASSWORD にはアクセスキーを使用します。 |
| Kafka | 独自の Kafka(クラスター内または VM 上)、または Confluent Cloud | ネットワーク内のプレーンテキストのリスナーが標準です。OpenLM は、Azure Event Hubs(Kafka エンドポイント)を OpenLM Platform で検証していません。Confluent Cloud には SASL が必要なため、事前に OpenLM にお問い合わせください。 |
| MongoDB | MongoDB Atlas(プライベートエンドポイントまたはピアリング)、またはクラスター内の MongoDB | Azure Cosmos DB for MongoDB はサポートされていません。 |
クラスター化されたポリシーでは、複数のキーにまたがるコマンドが、API ゲートウェイとサービスのバックグラウンドジョブで CROSSSLOT エラーになり失敗します。キャッシュの作成時に non-clustered ポリシーを選択してください。
Azure SQL では、ステップ 2 の名前のとおりに、ポータル、az sql db create、または Elastic Pool で 4 つのデータベースを作成します。ステップ 2 の sqlcmd のループも、master データベースに接続すれば使用できます。Azure SQL Database には SQL Agent もデータベース間クエリもありませんが、OpenLM Platform はどちらも必要としません。
AKS 固有の確認
次のコマンドで AKS の設定を確認します。
kubectl get nodes -L openlm.com/role: ノードがReadyで、ラベルが意図したとおりであること。kubectl -n ingress get service: コントローラーにパブリック(または内部)IP があること。- Pod から SQL Server と Redis が応答すること(ステップ 2 の確認)。タイムアウトする場合、通常はファイアウォールが NAT ゲートウェイの IP を許可していません。
ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。