반응형
Github와 Argo CD를 Kubernetes에 자동 배포하기 위해서 Argo CD Application을 생성해야 합니다.
(1) argo cd server 사이트에서 application을 생성하는 방법과 (2) yaml 파일을 통해 설정하는 방법이 있습니다.
yaml 파일로 작성하고 추후에 세부 옵션을 설정할 수 있습니다.
argo cd Secret.yaml
apiVersion: v1 # private 저장소에 접근하기 위한 설정
kind: Secret
metadata:
name: private-repo
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
stringData:
url: <Github-URL>
username: <Github-Username>
password: <Github-Access-Token>
Secret 리소스 분석
- kind: 리소스 종류 지정
- metadata
- name: Secret의 이름 지정
- namespace: Secret이 속한 네임스페이스 지정
- labels: Secret에 부착된 레이블입니다. **argocd.argoproj.io/secret-type: repository**는 Argo CD에 이 Secret이 저장소 접근에 사용될 것임을 나타냅니다.
- stringData: Secret 데이터이며, Base64 인코딩 없이 평문으로 데이터를 입력할 수 있습니다.
- url: git 저장소의 url
- username: 저장소에 접근하기 위한 사용자 이름
- password: 저장소에 접근하기 위한 비밀번호 (Github 개인 Access Token)
argo cd application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application # Argo CD Application 리소스 설정
metadata:
name: <name?
namespace: argocd
spec:
project: default
source:
repoURL: <Github-URL>
targetRevision: main <branch>
path: <path> # 실행시킬 파일이 있는 경로 지정
destination: # 목적지 쿠버네티스 클러스터와 네임스페이스 지정
server: https://kubernetes.default.svc
namespace: <실행시킬 namespace>
syncPolicy: # Sync 정책 설정
automated:
prune: true
selfHeal: true
allowEmpty: false
syncOptions:
- CreateNamespace=true
Application 리소스 분석
- apiVersion: argoproj.io/v1 alpha1 Application 리소스의 API 버전을 나타냅니다.
- spec : Application의 스펙을 나타냅니다.
- project : 애플리케이션이 속할 프로젝트 지정
- source : 애플리케이션 소스에 대한 정보입니다.
- repoURL : GIT 레포지토리 URL 지정
- targetRevision : 배포할 GIT 레포지토리의 브랜치 지정
- path : 애플리케이션 소스 코드가 있는 경로 지정
- destination: 애플리케이션이 배포될 대상 클러스터와 네임스페이스를 지정합니다.
- server: Kubernetes API 서버의 URL (기본 클러스터 사용)
- namespace: 애플리케이션이 배포될 네임스페이스입니다.
- syncPolicy: 동기화 정책을 정의합니다.
- automated: 자동 동기화 설정
- prune: 자동 동기화 시 불필요한 리소스 제거
- selfHeal: 실시간 상태를 유지하며, 변경 사항이 감지되면 자동으로 복구합니다.
- allowEmpty: 소스가 비어있으면 동기화하지 않습니다.
- sycnOptions.CreateNamspace: 동기화 중 네임스페이스가 존재하지 않으면 자동으로 생성합니다.
- automated: 자동 동기화 설정
위 yaml 파일은 Argo CD를 사용하여 특정 Github 저장소에 Kubernetes 애플리케이션을 자동으로 동기화하고 배포하는 설정을 정의하고 있습니다.
- Secret을 사용하여 저장소에 접근합니다.
- Application을 통해 저장소의 특정 경로에서 Kubernetes 리소스를 관리하며 자동으로 동기화하고 복구하는 설정을 합니다.
- 위 yaml 파일을 실행하면(apply) Argo CD Server에서 확인할 수 있습니다.
반응형