쿠버네티스에서 애플리케이션을 배포하는 것은 특히 초보자에게는 복잡할 수 있습니다. Argo CD는 GitOps를 기반으로하고 쿠버네티스 애플리케이션 배포를 자동화하기 위해 설계된 선언적 도구입니다. 이 워크샵에서는 Argo CD를 설정하고 사용하여 애플리케이션을 원활하게 배포하는 방법을 배우게 됩니다. 완전한 초보자를 위해 단계별로 만들어졌습니다.
학습 내용
- Argo CD 설치 및 구성.
- GitOps 원칙을 사용한 애플리케이션 배포.
- 배포 모니터링 및 문제 해결.
- 롤백 및 애플리케이션 버전 관리.
- 프로덕션 환경에서 Argo CD 보안.
Argo CD의 장점
Argo CD는 쿠버네티스에서 애플리케이션 관리를 간소화하며 매니페스트를 Git 리포지토리에 정의된 대로 지속적으로 동기화합니다. 이에 따른 이점은 다음과 같습니다:
- 선언적 관리: Git에서 원하는 클러스터 상태를 정의합니다.
- 지속적인 배포: 실시간 동기화로 배포를 자동화합니다.
- 버전 관리: 이전 버전으로 쉽게 롤백합니다.
필수 조건
시작하기 전에 다음 사항을 확인하십시오:
- 쿠버네티스 클러스터(Minikube, Kind 또는 GKE, EKS, AKS와 같은 관리형 서비스 사용).
kubectl
이 설치되어 클러스터에 연결되어 있는지 확인하십시오.- GitHub 또는 GitLab 계정을 보유하여 쿠버네티스 매니페스트를 호스팅하십시오.
- YAML 구문에 기본적인 이해도가 있어야 합니다(처음 접하시는 경우 이 워크샵에서 다룹니다).
단계별 안내
1. 쿠버네티스 클러스터 설정
단계 1: Minikube 설치
클러스터가 없는 경우 Minikube를 사용하십시오:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
단계 2: Minikube 시작
시스템에 Minikube를 설치한 후 minikube start
명령을 실행하십시오:
minikube start
단계 3: 클러스터 확인
클러스터가 실행 중인지 확인하십시오:
kubectl cluster-info
kubectl get nodes
2. Argo CD 설치
단계 1: 네임스페이스 생성
Argo CD는 격리를 위해 자체 네임스페이스에서 실행됩니다:
kubectl create namespace argocd
단계 2: Argo CD 설치
공식 매니페스트를 적용하여 Argo CD를 설치하십시오:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
단계 3: 설치 확인
Argo CD 팟을 확인하십시오:
kubectl get pods -n argocd
3. Argo CD UI에 액세스하기
단계 1: Argo CD 노출
argocd-server
를 로컬 머신에 노출하십시오:
kubectl port-forward svc/argocd-server -n argocd 8080:443
단계 2: 관리자 자격 증명 검색
기본 관리자 암호를 가져옵니다:
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
단계 3: UI에 로그인
- 브라우저에서 https://localhost:8080를 엽니다.
- 다음으로 로그인합니다:
- 사용자 이름: admin
- 암호: 이전 단계에서 가져온 것.
4. Argo CD를 Git 리포지토리에 연결
단계 1: Git 리포지토리 준비
- Git 리포지토리를 생성합니다 (예: GitHub에서).
- 쿠버네티스 매니페스트를 리포지토리에 추가합니다. 이 샘플
deployment.yaml
을 사용합니다:
apiVersion apps/v1
kind Deployment
metadata
name nginx-deployment
labels
app nginx
spec
replicas2
selector
matchLabels
app nginx
template
metadata
labels
app nginx
spec
containers
name nginx
image nginx1.19
ports
containerPort80
단계 2: 리포지토리를 Argo CD에 추가
UI에서:
- 설정 > 리포지토리로 이동합니다.
- Git 리포지토리 URL 및 인증 세부 정보 (SSH 또는 HTTPS)를 추가합니다.
또는 CLI를 사용합니다:
argocd repo add <REPO_URL> --username <USERNAME> --password <PASSWORD>
5. 첫 번째 애플리케이션 배포
단계 1: 애플리케이션 생성
Argo CD UI에서:
- 새 앱을 클릭합니다.
-
- 앱 이름: nginx-app
- 프로젝트: default
- 저장소 URL: 귀하의 Git 저장소 URL
- 경로:
deployment.yaml
의 경로 - 클러스터 URL:
https://kubernetes.default.svc
- 네임스페이스: default
단계 2: 애플리케이션 동기화
앱을 만든 후:
- Argo CD UI에서 동기화를 클릭하세요.
- 앱이 Kubernetes 클러스터로 배포되는 것을 확인하세요.
6. 배포 자동화
단계 1: 자동 동기화 활성화
지속적인 동기화를 활성화하세요:
argocd app set nginx-app --sync-policy automated
단계 2: 변경 사항 테스트
- Git의
deployment.yaml
을 수정하세요. - 변경 사항을 저장소에 푸시하세요.
- Argo CD가 변경 사항을 감지하고 자동으로 클러스터로 동기화합니다.
7. 모니터링 및 문제 해결
단계 1: 애플리케이션 상태 모니터링
UI에서 확인하세요:
- 건강: 응용 프로그램이 기대대로 작동하는지를 나타냅니다.
- 동기화 상태: 클러스터 상태가 Git과 일치하는지 확인합니다.
단계 2: 로그 보기
문제가 발생하면:
kubectl logs -n argocd <POD_NAME>
단계 3: 변경 내용 롤백
이전 상태로 롤백:
argocd app rollback nginx-app <REVISION>
8. Argo CD 보안
단계 1: 기본 관리자 비밀번호 변경
명령어 argocd account update-password
를 사용하여 기본 관리자 비밀번호를 변경하십시오:
argocd account update-password
단계 2: SSO 통합
프로덕션 환경에서는 GitHub 또는 LDAP와 같은 단일 로그인(SSO) 솔루션과 통합합니다.
GitOps Best Practices
- 브랜치 전략: 개발, 스테이징 및 프로덕션용으로 별도의 브랜치를 사용합니다.
- 코드 리뷰: 매니페스트 변경에 대한 동료 검토를 강제합니다.
- 감사 로그: 규정 준수 및 디버깅을 위해 Argo CD 로그를 정기적으로 검토합니다.
결론
Argo CD는 GitOps 원칙을 사용하여 Kubernetes 배포를 효율적으로 관리하는 초보자 친화적이면서 강력한 방법을 제공합니다. 이 워크샵은 응용 프로그램을 효율적으로 배포, 모니터링 및 관리할 수 있는 기술을 제공합니다. 이러한 관행을 준수함으로써 Kubernetes 지속적인 전달을 숙달하는 길에 올라설 것입니다.
Source:
https://dzone.com/articles/deploying-applications-in-kubernetes-with-argo-cd