tech

ArgoCD OSS - 다음 페이즈로 넘어가는 회고 (feat. 그동안 작업한 내용)

downfa11 2025. 8. 29. 14:04

재밌어서 하고 있지만 만만치 않다. 슬슬 걸음마를 뗐다고 생각하고, CNCF Slack에 가입하면서 회고를 작성한다.

 

https://github.com/argoproj

 

다음 페이즈로 넘어가는 레벨업 단계라고 받아들이는 좋은 터닝 포인트가 되었다.

이제 슬랙에서 PR 봐달라고 올리고 거기서 토론하는 수준까지 나아가겠다.

 

2Phase에서는 Slack에서 메인테너들과 직접 소통하는 수준까지 가는 것을 생각하고 있다.

최종적으로는 올해 안에 ArgoProj 멤버가 되는 것을 마지막 페이즈로 목표하고 있다.

 

 

지금까지는 PR이나 이슈를 통해서만 대화하고 주제에 대해서 이야기를 나눴었다.

 

일단 다른 사람들에 비해서 코멘트 수가 많아지니 이목이 집중돼서 부담스럽다.

그리고 코멘트만으로는 사실 무슨 의도인지 이해하기 어려운 경우가 많아서 채팅 형식의 포럼이 필요했다.

 

 

1페이즈에서는 argocd의 동작 원리를 이해하고, 각 컴포넌트별 작업을 맡으면서 기본적인 토대를 쌓고자 했다.

 

 

(document) argocd repo get 명령어에 대한 도움말 예제 추가

cmd의 help 커맨드에서 보여지는 argocd repo get 명령어에 대한 예제를 추가했다.

가장 기초적이고 처음 기여를 시작하는 베이비들을 위한 이슈였다.

 

그래서 그런지 금방 Merge되었지만 아래의 작업들은 아직 오픈된 상태이다.

 

(server) cmd의 argocd-server --request-timeout 기능 구현

시작부터 기능 구현이라니 좀 허들이 높긴 했다. 

기존 도움말에는 문서화되어 있지만 실제 구현이 안되어 있는 request-timeout 옵션을 직접 구현해봤다.

 

이를 통해서 argocd-server 디버깅과 테스트코드를 검증해보는 경험을 했다. 

telepresence를 통해서 디버깅하는 방법도 배웠는데, 여러번 디버깅하다보니 나만의 사짜 방법이 생겼다..

 

로컬에서 unit, e2e 테스트 처리하는거 이외에 codegen이나 lint 검사 등에 대해서 정말 많이 배웠다.

 

(controller) auto-sync 비활성화가 동작하지 않는 오류 해결

오류 상황에 대한 이슈를 발견했지만, 재현하는 과정에서 의문이 들어서 'auto-sync 비활성화가 동작하지 않는다는걸 어떻게 확인한거죠?' 라고 코멘트 남겨봤는데 답장이 없었다. 

 

그래서 그냥 시작했다. 근데 재현해보니 argocd cli에서도 동작안하고 Web UI에서도 'auto-sync is enabled'로 떴다.

하지만 알고보니 argocd cli는 로컬에서 돌린게 아니라 원래 컴퓨터 깔려 있던 녀석이라 헷갈렸고, 나중에 cli만 따로 빌드하도록 해서 비활성화가 잘 작동하는걸 확인했다.

 

아무튼 졸지에 프론트엔드도 고쳐야 하게 되었다. 논리적으로 auto-sync 상태를 검증하는 코드를 개선해야 했다.

argocd 컴포넌트를 로컬에서 실행하고, ui도 로컬로 띄우는 방식의 디버깅을 경험했다.

 

 

CLI에서도 안뜨는걸 보고, grpc 통신 과정에서 생긴 백엔드 문제라 판단했다. 그래서 열심히 디버깅하다가 json 직렬화/역직렬화 과정에서 실제로 protobuf간의 데이터 일관성이 틀린걸 찾아냈다. (enable → enabled)

 

심각한 오류를 낼 수 있으니 되돌려라. → revert하고 UI만 올리겠습니다.  → 다시 생각해보니 고치는게 맞다. → 야

 

(ui) Application Details에서 보여지는 auto-sync 기능의 중복

auto-sync 다루다보니 보이는 문제점이 많아서 같이 해결했다.

 

좌측처럼 enable auto-sync가 중복된 상태(button, checkbox)였는데 오른쪽과 같이 개선 

 

 

(ui) List 형태의 애플리케이션 목록에 application-sync-order에 따른 정렬 구현

 난 app-of-apps 방식으로까지 복잡한 배포를 해본적 없어서 sync 순서에 따른 정렬의 필요성을 모르겠다.

 

하지만 테이블 형태로 조회하는데 정렬 기능이 없어서야 되겠는가?

다른 컬럼값에 대한 정렬도 필요할지 몰라서 일단 이슈를 남겨서 의견 구하고 있다.