TL;DR
- ArgoCD で HPA を設定した場合、常に OutOfSync となり、pods の増加・減少が繰り返されてしまう
- 特に AverageValue の場合、関係ない値 spec.metrics[].object.target.value が HPA によって差し込まれてしまう問題がある
- 上記含め、HPA が変更する箇所は ignore してやる必要がある
- ドキュメント
個別設定
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
namespace: argocd
name: hogehoge
spec:
ignoreDifferences:
- group: apps
kind: Deployment
jqPathExpressions:
- .spec.replicas
- group: autoscaling
kind: HorizontalPodAutoscaler
jqPathExpressions:
- .spec.metrics[].object.target | select(.type == "AverageValue") | .value
...
グローバル設定
- グローバルに設定しておけば個別に設定しなくてよい。
apiVersion: v1
kind: ConfigMap
metadata:
namespace: argocd
name: argocd-cm
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
resource.customizations.ignoreDifferences.apps_Deployment: |
jqPathExpressions:
- .spec.replicas
resource.customizations.ignoreDifferences.autoscaling_HorizontalPodAutoscaler: |
jqPathExpressions:
- .spec.metrics[].object.target | select(.type == "AverageValue") | .value