Argo CD와 k3d로 쿠버네티스에 애플리케이션 배포하기

개발새발·2023년 12월 11일
3

Cloud Native

목록 보기
6/6
post-thumbnail

k3d 란

k3d는 도커에서 단일 노드 및 다중 노드 k3s 클러스터를 쉽게 생성할 수 있게 설계된 유틸리티이다. k3d를 사용하면 쿠버네티스의 로컬 개발 등을 위해 도커에서 단일 노드 및 다중 노드 k3s 클러스터를 매우 쉽고 빠르게 생성할 수 있다. 이를 통해 개발자들은 로컬에서 쿠버네티스를 사용하면서 더 빠르게 테스트하고 개발할 수 있다. k3d는 Docker를 기반으로 동작하며, Docker 컨테이너를 사용하여 쿠버네티스 클러스터를 관리한다.

Argo CD 란

Argo CD는 쿠버네티스에서 동작하는 GitOps 도구 중 하나로, 애플리케이션의 배포 및 관리를 자동화하는 데 사용된다. Argo CD는 Git 리포지토리에 정의된 Manifest(YAML) 파일의 변경사항을 감시하며, 이를 기반으로 애플리케이션을 배포하고, 실제 클러스터의 현재 상태를 정의된 상태와 일치시킨다. 이를 통해 CI/CD 프로세스를 효율적으로 관리할 수 있다. 한 마디로 Argo CD는 쿠버네티스를 위한 CD(Continuous Delivery) 툴이라고 할 수 있다. Argo CD는 쿠버네티스 자원을 추적하고 변경 사항을 감지하여 지속적으로 애플리케이션을 유지보수하고 최신 상태로 유지하는 데 도움이 된다.

GitOps는 DevOps의 실천 방법 중 하나로, 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리(Operation) 한다는 뜻이다.

정리하자면 쿠버네티스의 구성 요소들을 관리 및 배포하기 위해서는 Manifest 파일을 구성하여 실행해야 하는데, 이런 파일들은 계속해서 변경되기 때문에 지속적인 관리가 필요하다. 이를 간편하게 Git으로 관리하는 방식이 GitOps이고, GitOps를 실현시키며 쿠버네티스에 배포까지 해주는 툴이 바로 Argo CD인 것이다. 동작 방식은 다음과 같다.

Argo CD 설치 및 외부 접근 설정 및 로그인

# argocd namespace 생성
kubectl create namespace argocd
# argocd를 kubernetes cluster에 배포
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 정상적으로 배포되었는지 확인
kubectl get all -n argocd
# argocd CLI 설치
sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
# argocd 설치 시, 기본적으로 API 서버는 외부 주소로 노출되지 않는다.
# API 서버를 외부에서 접속하게 해주는 방법
# 1. Service Type을 Load Balancer로 설정
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
# 2. Service Type을 NodePort로 설정
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
# 3. Ingress 설정
# https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/
# 4. Port Forwarding 설정 (http://localhost:8080 으로 서버에 접속)
kubectl port-forward svc/argocd-server -n argocd 8080:443
# 외부 접근 설정 후 IP 주소 및 포트를 확인하여 접속
kubectl describe svc argocd-server -n argocd
# argocd 로그인 계정은 admin, 암호는 다음 명령으로 확인
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

Reference

profile
블록체인 개발 어때요

0개의 댓글