DevOps BootCamp/쿠버네티스

ArgoCD와 Kustomize를 이용해 kubernetes에 배포

cloudmaster 2023. 7. 16. 20:35

Kustomize + ArgoCD

Kustomize

Kustomize는 kustomization 파일을 통해 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경하는(customize) 독립형 도구이다.

 

애플리케이션의 새 버전의 이미지가 배포가 되면 kubernetes 환경에서 새 버전의 이미지로 설정을 변경해서 적용을 시켜야 함.
kustomize의 edit set image를 활용하면 이미지 태그만 변경해서 적용할 수 있음.

 

kubernetes의 manifests 수정하는 여러 방법 중에 simple하게 kustomize를 선택.

kustomize에 edit set image로 애플리케이션 image의 버전을 수정해서 저장소에 commit 하려고 함. 

 

base/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - deployment.yaml
  - service.yaml
  - ingress.yaml

 

overlays/dev/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: 257840391579.dkr.ecr.ap-northeast-2.amazonaws.com/final
  newName: 257840391579.dkr.ecr.ap-northeast-2.amazonaws.com/final
  newTag: "20230628012949"
resources:
- ../../base
patches:
- path: deployment-patch.yaml
- path: service-patch.yaml
- path: ingress-patch.yaml
  target:
    kind: Ingress
    name: mission-link-ingress

 

kustomize 설정확인

kustomize build overlays/dev/
또는
kubectl kustomize overlays/dev/

명령을 입력하면 확인할 수 있습니다.

 

kustomize 적용

kustomize build overlays/dev/ | kubectl apply -f -
또는
kubectl apply -k overlays/dev/

 

이미지 태그변경

cd overlays/dev/
kustomize edit set image ghcr.io/wlgns5376/example-app:latest

ArgoCD

ArgoCD는 Kubernetes 용 선언적 GitOps 지속적 배포 도구

git 저장소에 kubernetes manifests를 올려놓고 ArgoCD에 저장소를 등록해 놓으면 이후 저장소에 변경사항을 확인해서 동기화하는 도구

 

설치

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

기본적으로 Argo CD API 서버는 외부 IP로 노출되지 않음.
API 서버에 액세스하는 3가지 방식이 있으니 https://argo-cd.readthedocs.io/en/stable/getting_started/#3-access-the-argo-cd-api-server 를 확인하고 원하는 방법으로 노출하면 됨.

 

ArgoCD는 https가 기본이라서 브라우저에서 접속하면 아래와 같은 화면이 열림.

 

고급 버튼을 누르면 안전하지 않음으로 무시하고 접속.

 

초기 UI 로그인 계정은 자동으로 생성됩니다.
아이디는 admin이고 패스워드는 아래의 명령을 실행하면 확인할 수 있음.

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

 

설정 등록

기본적인 설정 방법은 https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui를 참고하면 됨.

NEW APP 버튼을 클릭해서 애플리케이션을 등록.

 

기본정보 입력

 

소스 저장소 정보와 Kubernetes 설정

현재 작업코드는 dev branch에 저장되어 있어서Revision을 dev로 설정.
그리고 Path overlays/dev로 설정.
DESTINATION에 namespace는 미리 생성했던 example-app을 입력.

 

 

생성된 화면

마지막으로 CREATE 버튼을 클릭하면 아래와 같이 추가된 화면이 나옴.

상세화면

아직 생성만 했고 동기화되기 전 화면.

 

SYNC 버튼을 누르면 Git 저장소의 내용을 가져와서 kubernetes에 적용.

 

동기화 완료 화면

 

자동 동기화

상단의 APP DETAILS 버튼을 클릭해서 아래 이미지에 보이는 ENABLE AUTO-SYNC 버튼을 누르면 자동 동기화가 활성화되어서 저장소에 수정사항이 자동으로 반영

 

 

References:

블로그 : https://velog.io/@wlgns5376/GitOps-ArgoCD%EC%99%80-Kustomize%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-kubernetes%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

'DevOps BootCamp > 쿠버네티스' 카테고리의 다른 글

젠킨스 CI  (0) 2023.07.06
helm으로 패키징하기  (0) 2023.05.23
인그레스  (0) 2023.05.22
HealthCheck  (0) 2023.05.22
볼륨과 스테이트풀셋  (0) 2023.05.22