Notice
Recent Posts
Recent Comments
Link
관리 메뉴

look-forest

Argo CD, 프로메테우스/그라파나 본문

Infra/Kubernetes

Argo CD, 프로메테우스/그라파나

studyHub 2026. 7. 17. 20:13

Argo CD

  • GitOps 방식(gitd을 중심으로 한 서버 운영)의 CD(Continuous Delivery) 도구
    • k8s의 상태를 Git 저장소로부터 가져와 자동으로 Kubernetes에 배포
  • github의 yml과 실제 클러스터가 sync가 안맞으면 argocd가 github기준으로 강제 sync
    • 다만, 이때 github에 없는 리소스를 누가 만들었다고해서 삭제하지는 않음

git 중심으로 쿠버네티스 리소스를 관리하겠다.

장점

  • 모든 Kubernetes 리소스 상태를 Git에서 관리하여 이력을 관리하고, 누군가 수동으로 클러스터 상태를 바꿔도 k8s자원 유지
    • 개발자가 임의로 kubectl로 자원을 조작할 경우, 이력도 남지않고 히스토리 관리도 안된다.
      -> 사람이 만지지마라. 이력을 만들어라. => 인프라 안정성 확보
  • 웹 UI를 통해 애플리케이션 상태, 배포 이력, Sync 상태를 시각적으로 확인 가능

설치 및 환경 구성

  1. argocd관련 네임스페이스 생성
  2. argocd 자원 생성(인터넷에 있는거 그대로, 환경 설정은 3에서)
  3. argocd 관련 application 자원 생성
    Argo CD에게 어떤 Git 저장소의 어떤 경로에 있는 K8s 자원을 바라봐야 할지 알려주는 선언

웹 UI 접속

  • 로컬 대시보드 접속
    • kubectl port-forward svc/argocd-server -n argocd 8080:443
      포트포워딩으로 8080 포트와 argocd 서비스의 443 포트 매핑
  • public 대시보드 접속
    • https 관련 스크립트 수정 필요
      • ingress에서 이미 복호화 함. 백엔드까지 암호화된 채로 전달하는 HTTPS → HTTPS는 불가
      • argocd 서버는 내부적으로 https로 default 실행되므로 http로 변경
        kubectl edit deployment argocd-server -n argocd

프로메테우스/그라파나

Prometheu

  • CPU 사용률, 메모리 등 시스템 정보 수집 시스템
  • 각종 자원을 수집해주는 exporter들(process-exporter, nginx-exporter 등)과 연결하여 데이터 정제해 사용
  • 대표적으로 Node Exporter는 노드(서버) 리소스 상태를 수집하여 Prometheus가 읽을 수 있게 변환해주는 프로그램
    • 프로메테우스 파드에서 노드 내부의 노드 익스포터 파드에 접근 시, 서비스를 통하지 않고 노드 포트로 직접 연결하도록 포트 매핑
      (서비스는 라운드 로빈으로 로드밸런싱하므로)
    • 프로메테우스가 노드에 접근할 수 있도록 RBAC 기반 권한 부여(prometheus-rbac)

Grafana

  • Prometheus 등의 데이터 소스로부터 시각화를 제공하는 대시보드 도구
  • Grafana에서 Prometheus 연동 -> 화면 접속 후 연결 설정
  • 각 export 별 적절한 대시보드 템플릿 UI 선택

EKS 내 같은 네임스페이스 내 서비스끼리는 통신 가능
URI에 있는 숫자가 각 대시보드의 id이다. 이 id를 입력해서 대시보드를 생성하면 된다.


참고 자료 & 이미지 출처
EKS를 활용한 Spring 운영서버 배포 (feat. devops의 모든 것)