すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:GitOpsアプリケーション用のHPAの設定

最終更新日:Jan 07, 2025

Argo CDは、Gitリポジトリ内のアプリケーションのステータスをクラスター内のアプリケーションと定期的に同期します。 これは、水平ポッドオートスケーリング (HPA) 機能によって実行されるポッドスケーリングアクティビティと競合する可能性があります。 したがって、HPA機能を使用してGitOpsアプリケーションのレプリケートされたポッドの数を制御する場合は、構成の競合を回避する必要があります。 これを行うには、アプリケーションを設定する必要があります。 設定方法は、アプリケーションで使用されるレプリケートポッドのデフォルト数 (1つのレプリケートポッドと複数のレプリケートポッド) によって異なります。

アプリケーションはデフォルトで1つの複製ポッドを使用します

アプリケーションのレプリケートされたポッドの既定の数が1で、HPAを使用してレプリケートされたポッドの数を制御する場合は、Gitリポジトリの対応するデプロイのレプリカパラメーターに注釈を付ける必要があります。

例:

apiVersion: apps/v1
kind: 配置
メタデータ:
  名前: nginx-deployment
spec:
  # レプリカをHPAで制御する場合は、マニフェストにレプリカを含めない
  # レプリカ: 1
  テンプレート:
    仕様:
      containers:
      -画像: nginx:1.7.9
        name: nginx
        ポート:
        -containerPort: 80
... 

アプリケーションはデフォルトで複数の複製ポッドを使用します

アプリケーションがデフォルトで複数のレプリケートされたポッドを使用する場合は、Diffingのカスタマイズに基づいてポッドを構成し、spec.replicasの違いを無視する必要があります。 このように、Argo CDはレプリカ設定を無視し、レプリケートされたポッドの数はHPAによってのみ制御されます。

アプリケーションレベルの設定とシステムレベルの設定の2つの設定方法があります。 詳細については、「Argo CD Diffingのカスタマイズ」をご参照ください。

アプリケーションレベルの構成の違いを無視

アプリケーションレベルの設定は、指定されたアプリケーションのリソースに対してのみ有効になります。 設定. spec.ignoreDifferencesアプリケーション内の変更を無視するspec. レプリカデプロイメントのパラメーターです。

このシナリオで展開を指定するには、展開の名前と名前空間を指定する必要があります。

例:

apiVersion: argoproj.io/v1alpha 1
kind: アプリケーション
メタデータ:
  name: app-test
  名前空間: argocd
spec:
  ignoreDifferences:
  -group: アプリ
    kind: Deployment
    # name: テスト
    # namespace: デフォルト
    jsonPointers:
    - /spec /レプリカ
  ...

システムレベルの構成の違いを無視

システムレベルの設定は、フリートインスタンス全体のリソースに対して有効になります。 マネージャーが管理するKubernetesリソースのspec.replicasパラメーターの変更を無視するように、argocd/argocd-cmを設定します。

マネージャーのcontrolplane-kcmはACK One GitOps用に設定する必要があります。 例:

apiVersion: v1
データ:
  ...
  resource.customizations.ignoreDifferences.all: |
    managedFieldsManagers:
    -kube-controller-manager
    -controlplane-kcm
    jsonPointers:
    - /spec /レプリカ
kind: ConfigMap
メタデータ:
  名前: argocd-cm
  名前空間: argocd 

関連ドキュメント