안녕하세요. 이 글은 Argo CD가 private git repo를 어떻게 관리하는지 설명합니다.
private repo관리 기능은 버전이 낮은 Argo CD에 버그가 있습니다. 높은 버전 Argo CD를 사용하시길 바랍니다.
영상: https://youtu.be/ZKvXEFnWMU8
개념
Git private repo는 허용된 사용만 접근이 가능하므로, ArgoCD는 Private repo에 접근하기 위해 인증을 관리하는 기능이 있습니다.
설정방법
WEB UI, kubectl, argo CLI로 생성할 수 있습니다. 프로토콜은 HTTPS, SSH를 지원하고 세부설정은 username/password, key pair, TLS certificates가 있습니다.
WEB UI 관리
WEB UI에서는 [왼쪽 메뉴 2번째 → Repository]을 클릭하면 설정화면으로 이동합니다.
kubectl 관리
kubectl로 private repo를 관리하려면 secret을 생성하면 됩니다. secret을 정의할 때 annotations에 argocd.argoproj.io/secret-type가 필요합니다.
참고자료: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#repositories
apiVersion: v1
kind: Secret
metadata:
name: private-repo
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
stringData:
type: git
url: git@github.com:argoproj/my-private-repository
sshPrivateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
예제
이 글에서는 SSH방법을 실습합니다. 실습을 진행하기 위해 private git repo와 ssh키 쌍이 필요합니다.
private repo 생성
먼저 private git repo를 생성합니다. 저는 github으로 생성했습니다.
키쌍 생성
ssh-keygen명령어로 키쌍(공개키/개인키)을 생성합니다.
ssh-keygen -f sample
공개키는 sample.pub파이고 개인키는 sample파일입니다.
private repo에 공개키 등록
생성한 공개키를 github private repo에 등록하는 과정입니다. github repo페이지에서 [Settings → Deploy Keys]메뉴에서 키를 등록할 수 있습니다.
Allow write access를 선택해야 합니다. 음… 이유는 잘 모르겠지만 내부로직에서 쓰기권한이 필요한 작업이 있나봐요
Argo CD private repo 생성
github prviate repo를 Argo CD에 등록하는 과정입니다.
WEB UI에서는 [왼쪽 메뉴 2번째 → Repository]을 클릭하면 설정화면으로 이동합니다.
상단 메뉴에서 [CONNECT REPO USING SSH] 버튼을 클릭합니다
아래 그림처럽 입력하고 [Connect]버튼을 클릭합니다.
성공적으로 연결되면 Successful메세지가 뜹니다. 만약 잘 안된다면 argo cd버전을 업데이트 해보세요. argo cd버그로 연결이 안될 수 있습니다.
Application 생성
등록한 private git repo를 이용해서 application을 생성해보겠습니다.
private repo에는 nginx pod를 생성하는 yaml파일을 추가했습니다.
apiVersion: v1
kind: Pod
metadata:
name: private-repo-test
labels:
name: private-repo-test
spec:
containers:
- name: private-repo-test
image: nginx
resources:
limits:
memory: "64Mi"
cpu: "0.2"
ports:
- containerPort: 80
repository는 등록했던 private repository를 선택합니다.
Sync버튼을 클릭하면 private repo에 있는 의도된 상태가 쿠버네티스에 배포됩니다.
'연재 시리즈' 카테고리의 다른 글
ArgoCD 8편 - Non Cascade 삭제 (0) | 2022.10.08 |
---|---|
ArgoCD 7편 - ArgoCD CLI설치 (0) | 2022.09.17 |
ArgoCD 6편 - Phase (0) | 2022.08.30 |
ArgoCD 6편 - Sync 설정 (6) | 2022.08.16 |
ArgoCD 5편 - project (0) | 2022.08.14 |