Argo Rollouts 설치하기ArgoCD와 ArgoCD Image Updater 설치와 마찬가지로 helm 레포와 차트를 다운받는다.이후 차트 내부에 values-dev.yaml 파일을 생성해 아래 내용을 추가한다.controller: replicas: 1dashboard: enabled: true service: type: NodePort portName: dashboard port: 3100 targetPort: 3100 nodePort: 30003 이후 아래 helm 명령어로 설치를 수행한다. 마찬가지로 kubeconfig는 제외 가능.helm upgrade argo-rollouts ./argo/helm/argo-rollouts-f ./argo/helm/argo-..
배포를 새로 해야하는 상황은 다음과 같다.리소스 스펙 변경App 버전 업그레이드1번은 담당자가 수작업으로 변경해 yaml이나 helm의 values 파일에서의 항목을 수정해주어야 한다.하지만 2번은 컨테이너 이미지 변경, 즉 이미지의 tag를 변경하는 사항인데 이를 ArgoCD Image Updater를 이용하여 자동화할 수 있다. 특히 개발서버에서 App의 기능사항을 지속적으로 개발 업데이트하며 변경사항을 확인하는 경우가 잦아지는데, 이 때 직접 배포파일을 수정하지 않고 자동으로 업데이트 되기 때문에 굉장히 편리하고 유용하다. 배포 방식에 대한 차이점Image Updater의 유용성을 알기 위해 App 컨테이너 이미지 업데이트 시 각 배포 방식에 따른 차이점을 알아보도록 하자.Jenkins 배포소스 빌..
Repository 관리 방법repository 분리의 장점은 접근 유저별로 권한 관리가 가능하고, 불필요한 코드 다운을 방지한다는 점이다.App 소스 전용: App의 기능을 위한 코드의 저장소.1명 이상의 개발자가 공유하며 CI/CD 서버에서 해당 코드를 다운받아 배포한다.App 배포 전용: App을 배포하기 위한 release 파일들의 저장소. 관리 주체는 DevOps 엔지니어이지만 개발자도 자신의 코드를 배포할 수 있다.Addon 설치 전용: Argo나 Prometheus 같이 서비스를 운영하는데 필요한 소스들의 저장소. 운영자가 관리.ArgoCD 설치Argo Project는 Helm repo를 추가하여 간편하게 각 제품별로 설치할 수 있다.자신의 배포 전용서버에서 편한 위치에 argo 디렉토리를 ..
Argo Project 제품 설명CD: 쿠버네티스 전용 배포 툴. Release 파일 저장소로 Git repository가 필요하다.Image Updater: ArgoCD의 추가 기능. Docker Hub의 컨테이너 이미지 변경을 감지하여 배포를 수행한다.Rollouts: 고급 배포 지원 (Blue/Green, Canary).Events: Kafka와 같은 이벤트 버스 아키텍처에 대한 솔루션.Workflow: Airflow, Kubeflow 같은 워크플로우 관리도구.Argo 제품으로 다음과 같은 아키텍처가 만들어질 수 있다.ArgoEvents가 시스템들 간의 이벤트를 주고받는 메인 통로 역할.이 중 Workflow로 보내지는 이벤트가 발생. Workflow는 이벤트를 받고 내부 값에 의해 특정 작업을 실..
이번 포스팅은 kubernetes app을 다양한 환경에서 배포할 수 있도록 Helm화 한 뒤Jenkins로 배포하는 과정에서 어떻게 Helm 패키지를 생성하고 배포하는지 정리한 글이다.Helm 설치# Helm 설치curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.shHelm 템플릿 생성 (init)# jenkins 유저로 전환su - jenkins -s /bin/bash# 템플릿 생성helm create api-tester당장 필요없는 내용 삭제하기 (deleting) 헬름 템플릿을 생성하면 위와 같은 구조의 차트 directory..
Helm vs Kustomize 비교 정리공통점: 마이크로서비스 환경에서 App 종류가 많아지고, 다양한 배포 환경에 대해 중복 관리를 최소화 하기 위하여 사용한다.차이점차이점HelmKustomize배포 편의기능 갯수200개10개패키지당 활용 범위마이크로 서비스 AND 다양한 배포 환경마이크로 서비스 OR 다양한 배포 환경사용 목적프로젝트 관리 패키지용 + 기업 제품 패키지용프로젝트 관리 패키지용Usecase대형 프로젝트App 종류 - 5개 이상간단한 프로젝트App 종류 - 5개 미만 쿠버네티스를 도입하게 되면 여러 오픈소스를 도입하고, 이 오픈소스들은 대부분 Helm 형태로 배포가 된다.따라서 처음에는 어렵지만 Helm을 먼저 사용한다면 Kustomize는 사용할 필요 없다.다만 소규모 프로젝트나 빠른..
CI/CD 파이프라인을 구성할 때 고려해야 하는 요소관리 담당: 소스 빌드 → 컨테이너 빌드 → 배포 단계의 CI/CD를 구성한다고 할 때, 한 명이 jenkins pipeline으로 모두 관리하면 기능적으로 편리하다. 하지만 실무에서는 각 단계를 책임지는 담당자가 존재한다. 예를 들어 개발자가 소스 빌드를 담당하고, 나머지를 devops 엔지니어가 담당할 수 있다. 기능적인 측면 vs 관리적인 측면을 고려해야 한다.운영 정책: jenkins로 소스와 컨테이너 빌드를 수행하고 ArgoCD로 배포를 수행한다. 인프라 환경에는 개발과 운영환경이 존재하는데, 이 때 ArgoCD 배포와 인프라를 1:N 형태로 설정할 수 있고, 아니면 인프라 환경마다 ArgoCD를 두어 1:1로 구축할 수 있다. 전자는 Argo..