1 of 11

ArgoCD & Vault를 이용한 CI/CD 파이프라인

ArgoCD 멘티 정찬영

2 of 11

GitOps

Kubernetes Manifest파일을 Git에서 관리하고, 배포할 때에도 Git에 저장된 Manifest로 클러스터에 배포하는 일련의 과정

3 of 11

GitOps

4 of 11

CD Pipeline

AsIs

ToBe

5 of 11

AsIs

환경변수 관리

  1. GitHub Secret 에 환경변수들을 미리 설정
  2. GitHub Action에서 빌드하는 시점에 환경변수 주입

문제점

GitHub Secret은 현재 value를 확인 할 수 없음 -> 슬랙/노션 같은 다른 도구로 추가 관리필요

이걸 GitOps라고 할수 있을까..?

이미지 빌드 시점에 환경변수가 주입되기 때문에 이미지에 민감한 정보가 포함됨

  • Private registry 라는 추가적인 관리 포인트 발생

6 of 11

Runtime Env

빌드 타임 환경변수 vs 런타임 환경변수

대부분은 런타임 환경변수

런타임 환경변수는 컨테이너 시작시점에 주입이 가능하다

-----------------------------------

환경변수를 제외한 이미지를 만들고 컨테이너 시작 시점에 환경변수를 주입하면 되지 않을까..?

ArgoCD는 이런 상황을 위한 Plug-In 제공

7 of 11

ArgoCD Secret

https://argo-cd.readthedocs.io/en/stable/operator-manual/config-management-plugins/

  1. ConfigMap으로 스크립트 실행
  2. argocd-cmp-server enrtypoint를 가지는

커스텀 사이드카 컨테이너 실행

Argocd는 sidecar 방식을 권장

동작 원리

https://argocd-vault-plugin.readthedocs.io/en/stable/howitworks/

8 of 11

ArgoCD Secret

https://argo-cd.readthedocs.io/en/stable/operator-manual/config-management-plugins/

  1. ConfigMap으로 스크립트 실행
  2. argocd-cmp-server enrtypoint를 가지는

커스텀 사이드카 컨테이너 실행

Argocd는 sidecar 방식을 권장

동작 원리

https://argocd-vault-plugin.readthedocs.io/en/stable/howitworks/

9 of 11

Vault?

10 of 11

ToBe

1. Public Code Repository & Public Image Repository

2. Secret 접근 권한 분리

3. 현재 Secret 확인 가능

아쉬운점..

Secret Hot-Reloading 불가능 -> 완벽한 선언적 방식은 아님

11 of 11

Practice

1. ArgoCD Config Repository 생성

2. Kustomize 생성 (deployment에 secret 을 통한 env 주입 설정)

3. Vault Secret 생성

4. Secret.yaml 에 vault 형식 지정