問題
HPA を使うとOut of Sync状態のままになる
spec: maxReplicas: 30 metrics: - resource: name: cpu target: averageUtilization: 70 type: Utilization type: Resource - resource: name: memory target: averageUtilization: 70 type: Utilization type: Resource
原因
HPAがmanifestに設定した値を入れ替えてしまうために、GitOps系やDiffツールで差分が発生してしまう。
- HPA controller reorders the spec.metrics list · Issue #74099 · kubernetes/kubernetes
- HPA objects can always be OutOfSync · Issue #1079 · argoproj/argo-cd
解消方法は以下のいずれか。
- ArgoCDの差分無視を使用する
- HPAで並び替えられた後の設定で書く
ArgoCDの差分無視を使用する
Applicationのリソースに以下を指定する。
ignoreDifferences: - group: autoscaling kind: HorizontalPodAutoscaler jsonPointers: - /spec/metrics
HPAで並び替えられた後の設定で書く
spec: maxReplicas: 30 metrics: - resource: name: memory target: averageUtilization: 70 type: Utilization type: Resource - resource: name: cpu target: averageUtilization: 70 type: Utilization type: Resource
先にメモリを書くようにする。