Notice
suyeonme
Kustomize, ArgoCD에 대해서 알아보기 본문
ArgoCD란?
GitOps 방식으로 어플리케이션의 상태를 관리하고 배포하는 도구로, 코드 변환에 따라 자동으로 쿠버네티스 리소스를 관리한다.
예를 들어, git commit hash 또는 git tag가 변경된 경우 자동(또는 수동)으로 이를 감지하고 배포하게 된다.
Kustomize란?
Kubernetes 리소스를 템플릿 없이 선언적으로 관리할 수 있게 해주는 도구이다. ArgoCD와 Kustomize를 함께 사용해서 쿠버네티스 리소스 정의 파일을 렌더링하고 손쉽게 클러스터에 배포할 수 있다.
1) Application 리소스 정의
ArgoCD가 어떤 Git 레포지토리와 브랜치를 추적하고, 어떤 Kustomize를 사용하고 어플리케이션을 어떤 네임스페이스에 배포할지 정의해야한다.
apiVersion: argoproj.io/v1alpha1
kind: Application # 어플리케이션 정의
metadata:
name: [어플리케이션 이름]
namespace: argocd
spec:
project: default
source:
repoURL: [레포지토리 주소]
targetRevision: HEAD
path: [Kustomize 설정 파일이 위치한 경로]
kustomize:
namePrefix: [이름에 사용할 prefix]
destination:
server: [Kubernetes API 서버]
namespace: [리소스가 배포될 네임스페이스]
syncPolicy:
automated:
prune: true # 필요없는 리소스 제거
selfHeal: true
2) Kustomize 설정 정의 (Kustomization.yaml)
ArgoCD가 지정된 경로에서 Kustomize로 어플리케이션 리소스를 생성하는 파일
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: [모든 리소스를 배포할 네임스페이스]
# 리소스 파일 목록
resources:
- deployment-front.yaml
- deployment-server.yaml
...
# 도커 이미지를 새버전으로 치환
images:
- name: [이미지 이름]
newName: [이미지 이름]
newTag: 2.0.0
...
3) 리소스별 설정
# Service 정의
apiVersion: v1
kind: Service
...
# Gateway 정의
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
...
# VirtualService 정의
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
...
deployment
- 파일에 정의된대로 어플리케이션의 인스턴스를 생성한다.
Gateway
- Istio의 리소스로, 클러스터 외부의 트래픽을 수신한다. (트래픽을 적절한 서비스로 라우팅)
- HTTP, HTTPS, TCP 트래픽을 관리하며, 특정 port를 리스닝해서 트래픽을 적적한 서비스로 라우팅
VirtualService
- Istio의 리소스로, 트래픽 라우팅 규칙을 정의한다.
- Gateway와 함께 사용되며 트래픽이 클러스터 내부로 들어온 후, 어떤 서비스로 라우팅될지 결정한다.
Istio란?
MSA를 관리하고 보호하기위한 오픈소스 Service Mesh 플랫폼 마이크로 서비스간의 통신을 제어/추적/보안/인증등의 기능을 제공해서 어플리케이션의 가용성/안정성/보안을 강화한다.
Service(SVC)
- Kubernetes 리소스로 Pod의 고정 네트워크 엔드포인트를 제공한다. (로드밸런싱, 서비스 디스커버리 지원)
'프로그래밍👩🏻💻 > 기타' 카테고리의 다른 글
gRPC, gRPC-gateway란? (0) | 2024.07.19 |
---|---|
데이터 파이프라인이란? (0) | 2024.07.12 |
Makefile이란? (0) | 2024.07.07 |
.envrc 파일로 환경변수 자동으로 설정하기 (0) | 2024.07.07 |
[Nestjs, Axios] Access Token과 Refresh Token으로 인증 구현하기(클라이언트, 서버) (0) | 2024.06.18 |
Comments