デフォルトでは、Alibaba Cloud Service Mesh (ASM) がコントロールプレーンを通じて ASM ゲートウェイの Deployment レプリカ数を管理します。レプリカ数に対する手動変更は、同期処理時に上書きされます。ASM ゲートウェイに対して Horizontal Pod Autoscaler(HPA)、CronHPA、または手動スケーリングを適用するには、ゲートウェイ定義にアノテーションを追加して、デフォルトのレプリカ同期機能を無効化してください。
仕組み
ASM ゲートウェイを作成すると、コントロールプレーンはデータプレーンクラスターの istio-<gateway-name> という名前の Deployment を istio-system 名前空間内に作成します。ASM はこの Deployment を管理し、定期的に構成を再同期するため、レプリカ数に対する手動変更はすべて上書きされます。
カスタムスケーリングをサポートするため、ASM v1.19 以降ではアノテーション asm.alibabacloud.com/replicas-managed-by-asm: false が導入されました。このアノテーションにより、コントロールプレーンは当該ゲートウェイ Deployment のレプリカ数同期処理をスキップします。その他のゲートウェイパラメーターは、引き続き ASM によって管理されます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
v1.19 以降の ASM インスタンスが実行中であること
ASM インスタンスに少なくとも 1 つのクラスターが追加済みであること
クラスター内に ASM イングレスゲートウェイがデプロイ済みであること
ASM によるレプリカ管理の無効化
asm.alibabacloud.com/replicas-managed-by-asm: false アノテーションを IstioGateway リソースに追加します。
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
name: "ingressgateway"
namespace: "istio-system"
annotations:
# ASM によるレプリカ同期を無効化
asm.alibabacloud.com/replicas-managed-by-asm: false
spec:
......
ports:
- name: http
port: 80
targetPort: 80
......この変更を適用後、ASM コントロールプレーンは当該ゲートウェイ Deployment のレプリカ数を上書きしなくなります。
スケーリングの設定
ASM によるレプリカ管理を無効化した状態では、以下のいずれかの方法でゲートウェイのレプリカ数を管理できます。