メインコンテンツまでスキップ

Azure Kubernetes Service (AKS)

このページは ステップ 1 の前にお読みください。Azure Kubernetes Service (AKS) に固有の内容を扱います。それ以外は標準のインストール手順に従います。

始める前に​

次の推奨事項に沿ってクラスターを計画します。

項目推奨事項
KubernetesLTS プランなしで 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 です。

Application Gateway Ingress Controller は使用しない

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 ServerAzure SQL Database(単一データベースまたは Elastic Pool)または SQL Managed InstanceSQL_HOST=<server>.database.windows.net、SQL_ENCRYPT=True。サーバーのファイアウォールで NAT ゲートウェイの IP を許可するか、プライベートエンドポイントを使用します。
RedisAzure Managed Redis または Azure Cache for RedisREDIS_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 にお問い合わせください。
MongoDBMongoDB Atlas(プライベートエンドポイントまたはピアリング)、またはクラスター内の MongoDBAzure Cosmos DB for MongoDB はサポートされていません。
Azure Managed Redis: non-clustered を使用する

クラスター化されたポリシーでは、複数のキーにまたがるコマンドが、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 を許可していません。

ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。