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



