ArgoCD Sharding Method
Techchallengearena
ArgoCD application controller는 주기적으로 app을 싱크하는 역할을 하는 ArgoCD의 주요 컴포넌트입니다. application의 변경사항을 추적하는 역할을 하는만큼, 그 수가 증가하면 부하가 심해지게 되는데, ArgoCD는 HA를 위해 샤딩을 지원합니다.
1. Application Controller는 기본적으로 Statefulset으로 배포됩니다. 만약 HA를 위해 파드를 늘려야 한다면, spec.replicas를 늘림과 동시에 ARGOCD_CONTROLLER_REPLICAS라는 환경변수도 세팅을 해야합니다.
2. ARGOCD_CONTROLLER_REPLICAS 값은 내부적으로 샤드를 구성하는데 사용됩니다. 샤딩 알고리즘은 다음과 같습니다.
- legacy: hash 값을 기반으로 작업을 분배하는 알고리즘 (기본값)
- RoundRobin: 순차적으로 하나씩 작업을 균등하게 분배하는 방식
- ConsistentHashing: Consistent Hashing을 기반으로 분배하는 방식(출시 X)
3. 파드 증설을 위해서 ARGOCD_CONTROLLER_REPLICAS 값을 변경하면, statefulset은 모든 파드를 다시 재시작하면서 다시 샤드를 구성합니다. 만약 파드 재시작 없이 동적으로 파드를 늘리고 싶다면, ARGOCD_ENABLE_DYNAMIC_CLUSTER_DISTRIBUTION 환경변수를 true로 설정하시면 됩니다.
4. Dynamic Distribution이 활성화되면, 내부적으로 configmap에 샤드 매핑 정보를 저장합니다. 그리고 각 파드의 Readiness Check 시에 샤드를 재분배하도록 합니다. 기본적으로 10초에 한번씩 업데이트를 진행합니다.
버전 업그레이드나 클러스터 마이그레이션 등 ArgoCD 파드를 옮길 때, 가용성을 위해서 2대 이상을 띄우려고 보니 실제로는 샤딩이 되는 구조였습니다. 혹시나 HA를 고민하고 계신 분이 있다면, 한번쯤 동작 방식을 확인해보시면 좋을 것 같습니다!
https://blog.techchallengearena.com/p/argocd-sharding-method
#devops #argocd #kubernetes
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 7월 1일 오후 7:47
AI 시대를 맞이하면서 우리는 다양한
... 더 보기‘혁신 과장형’ 프로젝트의 스폰서는 성장욕구가 강하고 프로젝트가 조직에 미치는 영향력이 크다. 조직에 영향력이 큰 가짜 프로젝트를 리딩하기 위해서는 똑똑하고 조직에서 잘 나가는 사람이 그런 스폰서가 될 가능성이 높다. 똑똑하고 욕망이 강한 스폰서는 PM에게 매우 위험하다. 왜냐하면 그 스폰서에게 프로젝트는 본인의 성공을 위한 수단이기 때문에 PM을 논리적이면서도 강하게 밀어붙이기 때문이다.
... 더 보기클
... 더 보기올
... 더 보기