[Kubernetes] Argo Rollouts를 이용한 배포 - Blue/Green, Canary
·
Kubernetes
Argo RolloutsArgo Rollouts는 ArgoCD와 다른 독립적인 솔루션으로, ArgoCD 없이도 사용할 수 있다.이는 ArgoCD의 의존성인 Git 없이도 사용할 수 있다는 것을 의미한다. Argo Rollouts 자체적으로 대시보드도 제공하고,단지 ArgoCD가 있으면 ArgoCD에서도 Argo Rollouts를 실행할 수 있는 버튼이 생길 뿐이다. 쿠버네티스는 자체 리소스도 있지만, 누구나 커스텀 리소스를 만들 수 있는 CRD라는 기능을 제공한다.Argo Rollouts를 쿠버네티스에 설치하면 이를 통해 Rollout이라는 컨트롤러를 만들 수 있게 된다. Deployment의 배포 전략에 Recreate와 Rolling Update가 있는 것처럼,Rollout의 배포 전략에는 Blue/..
[Kubernetes] ArgoCD Image Updater를 이용한 이미지 자동 배포
·
Kubernetes
ArgoCD Image Updater란?ArgoCD Image Updater는 컨테이너 이미지가 변경되면 이를 감지하여 자동으로 배포를 할 수 있게 도와주는 컴포넌트이다.ArgoCD Image Updater는 Docker Hub를 계속 모니터링하고 있다가,이미지 업데이트가 감지되면 ArgoCD에 배포를 하라는 명령을 보낸다. 기존에는 Resource yaml 파일들을 업데이트해야 ArgoCD가 이를 감지하여 배포를 진행했는데,ArgoCD는 App이 변경되어 컨테이너 이미지가 변경되면 yaml 파일 업데이트 없이도 자동으로 이를 감지하여 배포를 진행한다. 다만 이는 내부적으로 --set image.tag 옵션을 사용하기 때문에,배포 패키지를 Helm이나 Kustomize를 사용해야만 한다. 설치 시 고려사..
[Kubernetes] ArgoCD 아키텍처
·
Kubernetes
Argo 제품군ArgoCD쿠버네티스 전용 배포 툴. 릴리즈 파일 저장소로 Git을 반드시 필요로 한다.ArgoCD Image UpdaterDocker Hub에서 컨테이너 이미지에 대한 변경을 감지하여 자동으로 배포를 수행하는 역할Argo RolloutsBlue/Green, Canary 등의 고급 배포 기능을 지원하는 쿠버네티스 컨트롤러Argo Events쿠버네티스를 위한 이벤트 기반 종속성 관리자. Kafka와 비슷한 역할.Argo WorkflowAirflow나 Kubeflow와 같은 워크플로우 관리 도구 Argo 제품들만 가지고 아래와 같은 배포 아키텍처를 만들 수 있다. Argo 컴포넌트ArgoCD가 쿠버네티스에 설치되었을 때 어떤 컴포넌트들로 구성되는지 알아보자.ServerAPI Server 및 대..
[Kubernetes] 배포 파이프라인 구축 후 마주하게 되는 고민들
·
Kubernetes
배포 파이프라인 구축 후 마주하게 되는 고민들보안배포를 위해 서버에서 Docker Hub 로그인을 해두면 특정 디렉토리에 접속 정보를 담은 파일이 생긴다.또한 kube-config 파일도 관리자 권한의 인증서이기 때문에,탈취되면 관리자 권한으로 쿠버네티스 클러스터에 API를 요청할 수 있게 된다. 따라서 1차적으로 아무나 서버에 들어갈 수 없도록 접근 보안을 잘 해둬야 하고,또한 디스크에 암호화되지 않는 중요 정보를 남기지 않아야 한다. 이를 위해 중요 정보를 Jenkins Credential로 등록하여 암호화된 상태로 사용할 수 있다. 또한 파이프라인 내에서의 Docker 로그인 시에도 결국 파일이 생성되기 때문에,배포가 끝나면 로그아웃을 하는 명령어를 요청하여 파일을 삭제해야 한다. 추가로 해당 파일..
[Kubernetes] Helm과 Kustomize 비교
·
Kubernetes
설치 구성 비교 Kustomize는 쿠버네티스 1.14 버전부터 kubectl에 통합되었다.따라서 kubectl을 활용하여 따로 설치할 필요 없이 바로 사용할 수 있다. Helm은 따로 GitHub에서 다운로드하여 설치할 수 있고,kubectl과 동일하게 인증서를 통해 kube-apiserver와 통신한다. 결국 설치되는 방식은 다르지만 구성은 비슷하다.이 상태에서 각각 폴더를 만들어서 이 안에 각자의 구성 방식에 맞게 패키지 파일들이 구성되어 있다. 또한 Helm은 Docker Hub 같이 Helm 패키지를 저장하는 Artifact Hub라는 저장소가 존재한다.많은 오픈소스 기업들에서 자신의 제품들을 Helm 패키지로 설치할 수 있도록 Artifcat Hub에 패키지를 올려둔다. 패키지 구조 비교Kus..
[Kubernetes] Jenkins를 활용한 Blue/Green 배포
·
Kubernetes
들어가기 전에본 내용은 Blue/Green 배포가 돌아가는 원리를 설명하는 절차로 작성되어 있고,실제 쿠버네티스 환경에서는 아래와 같이 Jenkins만을 활용한 Blue/Green을 구축하진 않는다. 운영 환경에서는 통상 Blue/Green 배포를 지원하는 ArgoCD와 같은 배포 툴에서 기능을 편한 형태로 제공해 준다.Blue/Green까지 배포 구축 단계Jenkins Pipeline 기본 구성 만들기GitHub에서 Release 파일들을 가져와서 빌드하는 구성을 Jenkins Pipeline으로 구축GitHub 연결 및 파이프라인 세분화Pipeline Script를 GitHub에서 가져오도록 구성각 파이프라인을 세분화하여 각 구간별 현황 및 동작 시간 파악에 용이하도록 구성Blue/Green 배포 만..
[Kubernetes] 배포를 시작하기 전에 반드시 알아야 할 것들
·
Kubernetes
CI/CD 파이프라인을 구성할 때 고려해야 하는 요소빌드/배포 방식의 차이각각의 파이프라인을 만들고 각각 실행하는 방식 (필요시 트리거를 통해 자동 배포 가능)장점: 담당자가 다른 경우 업무 분장 및 관리 책임 면에서 효율적이다.하나의 구성 안에 파이프라인이 자동으로 연결되는 방식장점: 하나의 파이프라인으로 구성되어 수정이 필요하더라도 한 군데에서 관리할 수 있다.배포 시 ArgoCD를 사용하는 경우 배포와 인프라 환경의 관계배포 1 : 인프라 N장점: ArgoCD를 하나만 관리하게 되어 편의성이 향상된다.단점: 개발 환경 때문에 장애가 발생하면 운영 환경에도 배포를 할 수가 없다.배포 1 : 인프라 1장점: 개발 환경의 장애 시 운영 환경에 영향이 없다.단점: ArgoCD를 이중으로 관리해야 한다.CI..
[Kubernetes] 손쉽게 CI/CD 환경을 구축하는 방법
·
Kubernetes
개요쿠버네티스를 통한 DevOps 인프라 환경을 구축할 때,Application 빌드와 배포 자동화를 위해 CI/CD 환경은 필수로 갖춰져야 한다. 이를 위한 대표적인 기술인 Jenkins를 VM에 설치하고, 이를 이용하여 CI/CD 환경을 구축해 보자. 참고로 본 글은 Virtualbox, Vagrant를 이용하여 만들어진 아래 스크립트를 기준으로 세부 내용을 설명한다.해당 스크립트는 크게 VirtualBox로 OS를 생성하는 파트와 CI/CD를 위한 프로그램들을 설치하는 파트로 구분된다.https://raw.githubusercontent.com/k8s-1pro/install/main/ground/cicd-server/vagrant-2.4.3/Vagrantfile Vagrant 설치 스크립트참고로 V..