ArgoCD & Vault를 이용한 CI/CD 파이프라인
ArgoCD 멘티 정찬영
GitOps
Kubernetes Manifest파일을 Git에서 관리하고, 배포할 때에도 Git에 저장된 Manifest로 클러스터에 배포하는 일련의 과정
GitOps
CD Pipeline
AsIs
ToBe
AsIs
환경변수 관리
문제점
GitHub Secret은 현재 value를 확인 할 수 없음 -> 슬랙/노션 같은 다른 도구로 추가 관리필요
이걸 GitOps라고 할수 있을까..?
이미지 빌드 시점에 환경변수가 주입되기 때문에 이미지에 민감한 정보가 포함됨
Runtime Env
빌드 타임 환경변수 vs 런타임 환경변수
대부분은 런타임 환경변수
런타임 환경변수는 컨테이너 시작시점에 주입이 가능하다
-----------------------------------
환경변수를 제외한 이미지를 만들고 컨테이너 시작 시점에 환경변수를 주입하면 되지 않을까..?
ArgoCD는 이런 상황을 위한 Plug-In 제공
ArgoCD Secret
https://argo-cd.readthedocs.io/en/stable/operator-manual/config-management-plugins/
커스텀 사이드카 컨테이너 실행
Argocd는 sidecar 방식을 권장
동작 원리
https://argocd-vault-plugin.readthedocs.io/en/stable/howitworks/
ArgoCD Secret
https://argo-cd.readthedocs.io/en/stable/operator-manual/config-management-plugins/
커스텀 사이드카 컨테이너 실행
Argocd는 sidecar 방식을 권장
동작 원리
https://argocd-vault-plugin.readthedocs.io/en/stable/howitworks/
Vault?
ToBe
1. Public Code Repository & Public Image Repository
2. Secret 접근 권한 분리
3. 현재 Secret 확인 가능
아쉬운점..
Secret Hot-Reloading 불가능 -> 완벽한 선언적 방식은 아님
Practice
1. ArgoCD Config Repository 생성
2. Kustomize 생성 (deployment에 secret 을 통한 env 주입 설정)
3. Vault Secret 생성
4. Secret.yaml 에 vault 형식 지정