2025/06 17

(17) Argo Rollouts 를 이용한 배포 - Blue/Green, Canary

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. 1. Blue/Green 배포배포 시 롤백이 빠름배포 중 v1, v2 간의 동시 호출 없음Script 를 통해 자동 배포 가능v2 에 과도한 트래픽 유입시 문제 발생Rollouts 를 사용한 Blue/Green 배포Service 를 두 개 지정Service (active) : 실제 서비스 사용자가 들어오는 액티브 서비스 , Service(preview) : 업그레이드 중에 v2 버전으로만 들어가볼 수 있는 프리뷰 서비스Rollout은 먼저 ReplicaSet을 만든다 → Pod 생성두 Service 는 Pod 와 연결되어서 트래픽을 전달해준다배포 단계Rollout 에서 태그를 변경싱크를하거나 Kuber..

(16) ArgoCD Image Updater 를 이용한 이미지 자동배포

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. 1. 배포를 해야하는 상황1. 리소스 스펙 변경 → 수작업 필요Devops 엔지니어가 yaml 파일을 수정해서 git에 커밋배포잡을 실행쿠버네티스에 반영=> ArgoCD 가 변경 감지를 해줘서 쿠버네티스에 자동 배포 2. App 버전 업그레이드 (컨테이너 이미지 변경) → 자동화 가능개발자가 소스 빌드를 실행하면 Jar 파일 생성컨테이너 빌드 후 도커 허브에 이미지를 업로드배포 실행helm 에서 --set image.tage=1.0.0-202301, 102394 사용시 yaml 파일 수정 없이 자동 배포 가능=> App 버전 업그레이드는 구현이 조금 복잡 ⇒ ArgoCD Image Updater 사용 ..

(15) ArgoCD 아키텍처, Argo Apps 설치 및 배포 해보기

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. 1. ArgoCD 아키텍처argocdk8s 전용 배포 툴 (with git)image updater컨테이너 이미지 변경 감지 (추가기능)rollouts고급 배포 지원events이벤트 버스 아키텍쳐 도구 (카프카)메인 통로 역할workflowairflow 나 kubeflow 같은 매니지먼트 도구실행 순서도kube-apiserver 가 트래픽을 받아서 관련있는 곳들에 전달Server : API Server 및 Dashboard 역할, Port를 통해 UI 로 접근하거나 argocd CLI 로 접근Repo Server : Git 연결 및 배포할 yaml 매니패스트 생성Application Controller..

(14) Helm과 Kustomize 비교하며 사용-2

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. 패키지 구조 비교 및 배포하기1. 다양한 배포 환경을 위한 Kustomize 배포하기 1-1. 아이템 생성name : 2222-deploy-kustomizecopy from 2221-deploy-helm1-2. 옵션 수정Spare Checkout paths > Path : 2222Script Path : 2222/Jekinsfile1-3. 배포 시작에서 Abort 누르기최초 실행시엔 매개변수 입력 버튼이 안나오고, [dev / qa / prod] 중 dev가 적용된다스크립트에 있는데 처음에 실행할 때는 젠킨스 파이프라인이 모르기 때문에 그냥 dev로 적용1-3-2. 다시 빌드하면 PROFILE 을 선택..

[미션5] 컨테이너 이미지 사례 실습

1. 같은 이미지를 도커에서 받았을 때와 쿠버네티스에서 받았을 때 사이즈가 다른 이유dockerhub 에 올라가져 있는 이미지크기와 도커, 쿠버네티스의 이미지 크기가 다르다dockerhub : 248.2MB도커 : 490MBcontainerd : 248.3MiB 1-1. 추론1. Container Image를 만들 때 플랫폼(amd64, arm64)을 고려해야 되는데, Docker에서는 amd64를 받았고, Kuberentes에서 arm64를 받아서 이미지 크기가 달라졌을 것이다.해당 이미지는 Mac M 시리즈나 Window 유저가 모두 받을 수 있도록 생성Docker 에는 amd64, Containerd 는 amd64와 arm64 둘다 있지만, Containerd 의 용량이 더 작다→ 현재로선 정답이 ..

(13) Helm 과 Kustomize - 1 (Helm vs Kustomize, Helm 배포)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 명칭 정리배포툴Jenkins : 지금까지 배포툴로 사용argo : 이번시간부터 배포툴로 사용kubectl 을 써서 쿠버네티스로 배포kubectl 은 커맨드 라인 도구인 CLIcreate 나 apply 로 자원 생성CLI 명령 중 하나를 사용한거지 배포를 위한 부가적인 기능은 없었음실무에서는 kubectl 을 쿠버네티스 자원을 조회하거나 급한 수정할 때만 사용실제 자원 생성은 Kustomize 나 Helm 을 통해서 한다패키지 매니저 : Helm, Kustomizekubectl 과 같이 6명의 명령을 날리지만,작업자 입장에서는 한 번으로 모두 처리할 수 있다App 을 패키지 단위로 관리(2) He..

(12) Jenkins Pipeline (기초부터 Blue/Green 까지)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 젠킨스 파이프라인 기본 구성 및 배포 세분화Step 1. Jenkins Pipeline 기본 구성 만들기1-1. 새로운 item 만들기item name 입력 및 Pipeline 선택 1-2. Pipeline Script더보기pipeline { agent any tools { gradle 'gradle-7.6.1' jdk 'jdk-17' } environment { DOCKERHUB_USERNAME = "soyeon207" GITHUB_USERNAME = "soyeon207" // 아래 부분 수정(x) ..

(11) 배포를 시작하기 전에 반드시 알아야 할 것들

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) CI/CD 파이프라인을 구성할 때 고려해야 하는 요소1-1. 관리 담당빌드 / 배포(AS-IS) 1. 소스 빌드 → 2. 컨테이너 빌드 → 3. 배포각각 담당하는 담당자가 있는 경우에는 이렇게 사용해도 좋다관리 담당자별로 나누는게 업무 분장이나 관리 책임에서 더 좋음(TO-BE) 젠킨스 파이프라인 (소스 빌드 → 컨테이너 빌드 → 배포)→ 관리담당에 따라 업무 분장, 관리 책임을 고려해서 선택 (관리 vs 기능) 1-2. 운영 정책젠킨스 빌드 (소스, 컨테이너) → ArgoCD 배포 (kubectl, HELM, Kustomize) → 인프라 환경배포와 인프라 환경의 관계1:N 으로 구축👍 장..

(10) 손쉽게 데브옵스 환경을 구축하는 방법

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 실습 환경 VirtualBox랑 Vergant 를 이용해 게스트 OS 가 만들어지고, 스크립트로 모든 프로그램 설치내 PC 브라우저에서 Jenkins 대시보드에 접속 가능빌드를 실행하면 GitHub 에서 소스를 다운받아서 빌드 실행컨테이너 빌드를 하면 소스 빌드를 해서 만들어진 jar 파일이 사용컨테이너 이미지가 만들어지고, 도커 허브로 업로드 1. 설치더보기베이그란트 설치 스크립트를 실행하면 CI/CD 서버가 한 번에 구성자원 할당 CPU : 2Core, Memory: 2GI, Disk : 30GI네트워크 설정IP 는 20번Host-Only Network 는 VM간에 통신을 하거나 내 호스..

(9) 데브옵스 한방 정리

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) DevOps 에서 가장 중요한 것1-1. DevOps 전체 구성도 개발 소스 를 GitHub 에 커밋하면서 소스 코드를 통합적 관리CI/CD 환경에서 Build 버튼을 누르면 GitHub 에서 최신 소스 코드 다운메이븐 저장소에서 소스에 필요한 라이브러리 다운실행할 수 있는 형태의 JAR 파일이 생성 되면서 소스 빌드는 끝Kubernetes 환경으로 배포해야하니깐 컨테이너 빌드를 한 번 더 해야하고, 도커로 빌드가 시작도커 허브에서 OpenJDK 가 있는 베이스 이미지를 다운받은 이미지에 JAR 파일을 넣으면 컨데이터 이미지로 만들어진다dockerHub 에 올리기배포kubectl 명령어를 날려서..