ArgoCD를 설치하고 GitOps 환경에서 애플리케이션을 배포하는 과정입니다. ArgoCD를 통해 코드 변경 사항이 자동으로 쿠버네티스 클러스터에 반영되도록 설정해줍니다.
1. ArgoCD 설치 및 설정
1-1. ArgoCD 네임스페이스 생성
먼저 ArgoCD가 배포될 네임스페이스를 생성합니다.
kubectl create namespace argocd
1-2. ArgoCD 설치
공식 ArgoCD YAML 파일을 사용하여 ArgoCD를 설치합니다.
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
이 명령어를 통해 ArgoCD의 기본 구성 요소가 argocd 네임스페이스에 생성됩니다. 설치 후, 모든 ArgoCD Pod가 정상적으로 실행 중인지 확인합니다.
kubectl get pods -n argocd
1-3. ArgoCD 서버에 접근 설정
ArgoCD 대시보드에 외부에서 접근할 수 있도록 서비스를 NodePort로 설정합니다.
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
이후 아래 명령어로 ArgoCD 서버의 외부 접근 가능한 포트를 확인합니다.
kubectl get svc -n argocd
1-4. ArgoCD 초기 비밀번호 확인
설치된 ArgoCD의 초기 비밀번호는 아래 명령어로 확인할 수 있습니다.
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
2. GitOps를 위한 ArgoCD 애플리케이션 설정
2-1. Git 저장소 준비
ArgoCD는 GitOps 방식으로 애플리케이션을 배포합니다. 먼저, 아래처럼 GitHub 저장소에 프로젝트 구조를 설정하고 필요한 파일들을 준비합니다.
cicd
└── manifests
└── sample-cd.yaml
2-2.Golang 애플리케이션 작성
Golang은 애플리케이션 개발 및 빌드에 필요한 런타임 환경과 도구를 제공합니다. 아래 명령어로 Golang을 설치합니다.
sudo apt update
sudo apt install golang
설치 완료 후, 아래 명령어로 설치된 Golang 버전을 확인합니다.
go version
작업 디렉토리를 생성하고 애플리케이션 코드를 작성합니다.
mkdir sample
cd sample
main.go 파일을 생성하고, “Hello, World!” 메시지를 출력하는 간단한 코드를 작성합니다.
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Golang에서 코드를 직접 실행하기 위해 go run 명령어를 사용합니다.
go run main.go
실행 파일을 생성하기 위해 go build 명령어를 사용합니다. 이 명령어는 main이라는 이름의 실행 파일을 생성합니다.
go build main.go
생성된 실행 파일을 실행하여 프로그램이 잘 작동하는지 확인합니다.
./main
2-3. Dockerfile 작성
애플리케이션을 컨테이너로 빌드하기 위해 Dockerfile을 준비합니다.
# Dockerfile
FROM golang:1.16
WORKDIR /app
COPY main.go .
RUN go build -o main main.go
CMD ["./main"]
3. ArgoCD 애플리케이션 파일 작성
ArgoCD를 통해 배포할 애플리케이션의 설정 파일 sample-cd.yaml을 작성합니다. ArgoCD는 이 파일을 참고하여 Git 저장소의 변경 사항을 모니터링하고 자동으로 클러스터에 반영합니다.
3-1. sample-cd.yaml 작성
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sample-cd
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/ahyeon-github/cicd.git
targetRevision: 1st-edition
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated:
prune: true
selfHeal: true
• repoURL: 애플리케이션을 배포할 Git 저장소 URL
• path: 애플리케이션 매니페스트 경로
• syncPolicy: 자동 배포 설정으로, 변경 사항 발생 시 클러스터에 자동 반영되도록 설정
3-2. ArgoCD 애플리케이션 배포
ArgoCD 애플리케이션을 생성하여 쿠버네티스 클러스터에 sample-cd.yaml 파일을 적용합니다.
kubectl apply -f sample-cd.yaml
4. 애플리케이션 실행 및 확인
ArgoCD를 통해 애플리케이션이 배포되었으면, 애플리케이션 Pod가 정상적으로 실행되었는지 확인합니다.
kubectl get pods -n default
애플리케이션이 잘 실행되었는지 확인하기 위해 아래 명령어로 로그를 확인하여 “Hello, World!” 메시지가 출력되는지 확인합니다.
kubectl logs <pod-name> -n default
'BackEnd > DEVOPS' 카테고리의 다른 글
[AWS] AWS ECS와 ECR을 활용한 CI/CD 구현 (1) | 2024.11.18 |
---|---|
[Kubernetes] Master Node, Worker Node 연결 (0) | 2024.11.15 |
[Kubernetes] Spring Boot 애플리케이션 배포: CNI, SDN, NodePort 서비스 설정 (1) | 2024.10.29 |
[Kubernetes] 쿠버네티스 클러스터 구성 및 관리 (0) | 2024.10.29 |
[Docker] Dockerfile 작성 및 이미지 빌드 (5) | 2024.10.16 |