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
関連ドキュメント
アプリケーションのHPAを有効にする方法の詳細については、「水平ポッド自動スケーリングの実装」をご参照ください。
HPAの実行に使用されるアルゴリズムの詳細については、「アルゴリズムの詳細」をご参照ください。