Search

ArgoCD 환경구축

0. Argo CD란?

1. Argo CD 설치

eks를 설치한 인스턴스에서 명령어를 통해 argo cd를 설치
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
YAML
복사

2. Argo와 git 연결

Argo CD UI 접속

a.
보안그룹 설정(managed-server) - 8080포트를 열기
b. 포트 포워딩( 터미널에서)
kubectl port-forward --address 0.0.0.0 svc/argocd-server -n argocd 8080:443
YAML
복사
c. argo cd 접속
https://<EC2의-Public-IP-주소>:8080 —> 주소창에 입력하여 접속 —> id는 admin 패스워드는 터미널에서 아래 명령어를 입력
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
YAML
복사

Argo CD와 git 연결

왼쪽 메뉴에서 setting -Repositories - +CONNECT REPO 이동
Connection Method: HTTPS
Repository URL: https://github.com/<자신의 github 유저이름>/my-web-app-manifests.git
Username: 자신의 GitHub 사용자 이름을 입력
password : github에서 아래의 과정을 통해 token을 얻어옴
CONNECTION STATUS 가 Successful이면 성공

3. Argo CD yaml 파일 작성

vi argo.yaml
# argo.yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: # Argo CD UI에 표시될 애플리케이션 이름 name: deploy-test # Argo CD가 설치된 네임스페이스 namespace: argocd spec: project: default source: # 1단계에서 만든 Manifest 리포지토리 주소 repoURL: 'https://github.com/<GitHub-사용자이름>/my-web-app-manifests.git' # 감시할 브랜치 targetRevision: HEAD # YAML 파일들이 있는 경로 path: k8s destination: # 배포할 대상 클러스터 (클러스터 내부를 의미) server: 'https://kubernetes.default.svc' # 배포할 네임스페이스 namespace: argo-test # 동기화 정책 설정 syncPolicy: automated: prune: true # Git에서 사라진 리소스는 클러스터에서도 자동 삭제 selfHeal: true # 클러스터 상태가 Git과 다르면 자동으로 Git 상태로 복구 syncOptions: - CreateNamespace=true # 'argo-test' 네임스페이스가 없으면 자동 생성
YAML
복사

4. 실행 및 확인

kubectl apply -f argo.yaml 명령어로 실행하면 Argo CD가 리포지토리의 내용을 가져와 배포한다.
실행 후 kubectl get all -n argo-test yaml파일에서 작성한 네임스페이스 를 통해 확인
deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: app-deploy spec: selector: matchLabels: app: webui replicas: 3 template: metadata: labels: app: webui spec: containers: - image: nginx:1.14 name: web ports: - containerPort: 80
YAML
복사

4. 기타 명령어

pause 상태로 바꿈
argocd app set deploy-test --sync-policy automated