본문 바로가기

Kubernetes

[CI/CD] Argo Rollout을 사용한 Blue/Green 배포 Blue/Green 배포란?구버전(Blue)과 새로운 버전(Green)을 동시에 유지하면서 배포하는 방식입니다. 이 배포 방식에서 구버전과 동일한 환경에 새로운 버전을 구성하고, 테스트 후 새로운 버전으로 트래픽을 전환합니다. 만약 문제가 발생하면 트래픽을 다시 구버전으로 돌려 빠른 롤백이 가능합니다. 장점실제 운영 환경 테스트: 새로운 버전을 구버전과 동일한 환경에서 테스트할 수 있습니다.빠른 롤백: 트래픽을 쉽게 구버전으로 전환할 수 있어 빠른 복구가 가능합니다.단점비용: 두 가지 환경(Blue와 Green)을 동시에 유지해야 하기 때문에 자원이 두 배로 필요합니다. Argo CD를 이용한 Blue/Green 배포의 필요성Kubernetes의 기본 배포 방식은 Rolling Update입니다. 롤링 .. 더보기
CNCF란? Cloud Native란? Cloud Native Landscape란?CNCF(Cloud Native Computing Foundation)에서 제공하는 것으로 다양한 카테고리와 수많은 기술들이 나열되어 있습니다. 모든 오픈 소스 프로젝트와 상용 제품들을 카테고리로 나누어 정리하고, 현재의 생태계에 대한 개요를 제공하는 것입니다.  CNCF (Cloud Native Computing Foundation)의 Landscape에서 "Graduated" 및 "Incubating" 단계의 프로젝트들에 대해서 살펴보려고 합니다.Graduated Projects (졸업 프로젝트)CNCF에서 졸업한 프로젝트는 신뢰성과 성숙도가 입증된 오픈소스 프로젝트로, 클라우드 네이티브 생태계에서 널리 사용되는 기술들입니다.이러한 프로젝트들은 수년간의 개발.. 더보기
[Docker] Docker 이미지 빌드, 배포, 백업 Docker 이미지를 사용하면 애플리케이션과 실행 환경을 하나로 묶어 손쉽게 배포할 수 있다. 이 글에서는 Docker 이미지 빌드, 배포, 백업 과정을 단계별로 설명하고자 한다. 1. 이미지 빌드Docker 이미지 빌드란 애플리케이션과 실행 환경을 하나로 묶는 프로세스웹 어플리케이션 및 실행 설정 및 종속성을 하나의 이미지로 패키징 하는 과정 2. Dockerfile 작성Docker 이미지를 빌드하는 데 필요한 명령어와 설정이 포함된 Dockerfile을 작성이미지 빌드 방법을 지시하는 스크립트 3. 멀티 스테이지 빌드이미지크기를 최적화하고 불필요한 구성 요소를 제거 4. Docker 이미지 태깅이미지 버전 관리를 위해 이미지에 태그 부여 5. Docker Hub 연동Docker 이미지를 저장하고 다른.. 더보기
[Docker] Docker 소개 Docker 소개도커는 서버에서 어플리케이션을 실행 할 때 사용하는 특별한 상자로 생각하면 된다.'컨테이너'라고 부르며, 그 안에 어플리케이션을 넣어서 사용한다.따라서, 서버에 여러 어플리케이션을 설치할 때 도커를 쓰면 이런 앱들을 하나의 컨테이너 안에 넣어서 편하게 관리할 수 있다.  Docker 와 Kubernetes의 차이DockerKubernetes단일 컨테이너 실행 및 관리컨테이너 오케스트레이션과 클러스터 관리단일 호스트에서 작동다중 호스트와 컨테이너 관리개별적으로 수동으로 관리자동 스케일링 및 로드 밸런싱로컬 파일 시스템 또는 볼륨 사용동적 프로비저닝 및 스토리지 오케스트레이션수동으로 구성 가능자동 롤링 업데이트 및 자동 복구활발한 Docker 커뮤니티와 생태계Kubernetes 생태계 및 다.. 더보기
실습으로 배우는 쿠버네티스 멀티 클러스터 관리 보호되어 있는 글입니다. 더보기
Github WebHooks 연동하여 Jenkins 빌드 자동화 Jenkins Pipeline 개념 젠킨스 파이프라인은 연속적인 작업들을 묶어서 관리할 수 있게 만드는 Jenkins Plugin 입니다. 파이프라인을 작성하는 데에는 두가지 문법이 존재합니다. Declarative pipeline { agent any stages { stage('Build') { steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } } Declarative Pipeline 문법 Scripted node { stage('Build') { // } stage('Test') { // } stage('Deploy') { // } } Scripted Pipeline 문법 GitHub Webhook을 사용.. 더보기
Jenkins를 Kubernetes 에 구성하기 Jenkins 를 Kubernetes에 구성해보려 한다. Jenkins 또한 Kubernetes에 Pod로 구성하고, 빌드도 네이버클라우드의 Kubernetes(NKS)를 통해 진행해보려 한다. Jenkins 에서 마스터노드에서 전체 Job 을 관리하지만 실제 Job 수행은 Slave 노드에서 하도록 하는 것이 일반적인데 이 경우 Slave 노드가 유휴시간에도 자원을 차지한다는 단점이 있다. 이에 Kubernetes 일 때, Slave 노드 대신 컨테이너에서 Job 을 수행하도록 하고 작업이 끝나면 해당 컨테이너를 종료하는 방식이다. 1. 네임스페이스 생성 : Jenkins를 배포할 네임스페이스를 생성한다. 네임스페이스는 리소스를 그룹화하고 격리할 수 있다. kubectl create namespace .. 더보기
Jenkins를 이용해 지속적인 통합(CI) 적용하기 Kubernetes 를 공부하고 프로젝트에서 개발 작업에 들어가며 서버 배포를 적용하기전 CI 에 대해 알아봤습니다. CI(Continuous-Integration)는 무엇인가요? CI 란 우리말로 지속적인 통합 이라고 하며 소프트웨어 개발 과정에서 발생하는 여러 문제를 해결하기 위해 도입된 방법론 중 하나입니다. 이 방법론은 소스 코드 변경 사항이 지속적으로 통합되고 테스트되어 공유 저장소에 자동으로 빌드되는 개발 프로세스를 갖추고 있습니다. 이를 통해 개발자들은 코드 변경 사항이 실제 환경에 반영되기 전에 품질을 확인할 수 있습니다. CI 의 핵심 목표 빠른 피드백 : 소스 코드 변경 사항이 통합되고 테스트되는 프로세스를 자동화함으로써 빠른 피드백을 제공합니다. 이는 버그를 조기에 발견하고 수정함으로.. 더보기