1. 개요Argo Rollouts는 Kubernetes 환경에서 고급 배포 전략을 구현할 수 있는 컨트롤러입니다.기존 Kubernetes Deployment 컨트롤러는 기본적인 RollingUpdate 전략만 제공하지만,Argo Rollouts를 통해서는 블루-그린 배포, 카나리 배포, 프로그레시브 딜리버리와 같은 현대적인 배포 전략을 Kubernetes 환경에 적용할 수 있습니다. 또한, 자동 롤백, 트래픽 제어, 비즈니스 메트릭 기반 배포 분석 등을 지원하여 안정적인 배포 프로세스를 구현할 수 있습니다.2. 기존 쿠버네티스 배포의 한계점기존 Kubernetes의 Deployment는 RollingUpdate 전략을 사용하여 배포를 처리하지만, 다음과 같은 한계가 존재합니다:트래픽 제어의 한계: 새로운..
DevOps
지난 글에 이어 CloudNet@의 CI/CD 스터디를 진행한 내용을 담고 있습니다.Argo CD: GitOps 기반 Kubernetes 배포의 완성형 솔루션Argo CD는 Kubernetes 환경에서 GitOps 패턴을 구현하는 선언적, 지속적 배포 도구입니다. 애플리케이션의 정의, 구성, 환경이 Git에 버전 관리되고 이를 기반으로 자동화된 배포와 라이프사이클 관리를 제공합니다. 이 글에서는 Argo CD의 핵심 구성 요소와 기능, 그리고 이를 활용해 Kubernetes 애플리케이션을 효과적으로 관리하는 방법을 살펴봅니다.Argo CD의 주요 개념과 작동 방식Argo CD는 Git 저장소를 기준으로 Kubernetes 클러스터 상태를 관리합니다. GitOps 철학에 따라 애플리케이션 상태를 선언적으로..
지난 글에 이어 CloudNet@의 CI/CD 스터디를 진행한 내용을 담고 있습니다.GitHub Actions란?GitHub Actions는 GitHub에서 제공하는 CI/CD(Continuous Integration/Continuous Deployment) 도구로,코드를 빌드, 테스트, 배포하거나 자동화된 워크플로우를 실행할 수 있도록 지원합니다. 사전적 의미로 "리포지토리에서 소프트웨어 개발 워크플로우를 자동화, 사용자 지정 및 실행"할 수 있는 서비스입니다.쉽게 말하자면 "이벤트를 받아 코드가 동작하는 컴퓨터"입니다.GitHub Actions의 주요 구성 요소 Event (이벤트)GitHub Actions를 트리거(실행)하는 조건으로, 주로 GitHub 저장소에서 발생하는 작업입니다.예:push..
안녕하세요, 가시다님이 운영하시는 cicd 스터디 스터디 내용을 정리한 포스팅입니다. CI/CD 정의 CI/CD는 단순한 기술적 접근을 넘어 소프트웨어 개발의 철학적 변화를 대변합니다. 개발부터 운영까지의 전체 생명주기를 유기적이고 seamless하게 연결하는 혁신적인 방법론입니다.Continuous Integration (지속적 통합)개발자들의 코드 변경사항을 중앙 저장소에 빈번하고 자동으로 병합하는 소프트웨어 개발 실천 방식입니다.CI의 라이프 사이클계획: 요구사항 정의와 설계코딩: 실제 코드 작성빌드: 코드를 실행 가능한 애플리케이션으로 변환테스트: 품질 검증 및 오류 탐지패키징: 배포 준비Continuous Deployment (지속적 배포)CI를 통해 검증된 소프트웨어를 실제 운영 환경에 자동으..
문제 상황GitHub Actions 워크플로우에서 이전 커밋 메시지를 포함하여 새로운 커밋을 만들 때, 특수문자로 인한 셸 구문 오류가 발생하는 경우가 있습니다.- name: Git Commit and Push run: | git config --global user.email "user@email.com" git config --global user.name "User" git add . git commit -m "${{ github.event.head_commit.message }} - ${{ github.sha }}" git push예를 들어, 이전 커밋 메시지가 다음과 같은 경우:Revert "feat: Add new feature (TICKET-123)"다음과 같은 ..
클라우드 네이티브 환경에서 Amazon EKS는 가장 강력한 컨테이너 오케스트레이션 플랫폼 중 하나입니다. 하지만 복잡한 분산 시스템에서 노드 수준의 문제는 피할 수 없는 현실입니다. 이 가이드는 EKS 노드의 잠재적 문제를 진단하고 해결하는 체계적인 접근법을 제공합니다.1. 노드 상태 진단1.1 초기 상태 점검# 노드 전체 상태 확인kubectl get nodes -o wide# 상세 노드 정보 추출kubectl describe node 노드 상태 유형Ready: 정상 작동NotReady: 문제 감지SchedulingDisabled: 스케줄링 제한Unknown: 통신 불가2. 리소스 병목 현상 심층 분석2.1 CPU 성능 모니터링평균 CPU 사용률 90% 초과 시 즉각 대응 필요주요 원인:비효율적 애플..
안녕하세요, 어제에 이어서 오늘 포스팅은 또 다른 쿠버네티스 골치거리인 ImagePullBackOff 상태에 대해 다뤄보겠습니다.🤔 ImagePullBackOff가 발생하는 이유Pod가 ImagePullBackOff 상태라면, 쿠버네티스가 컨테이너 이미지를 가져오는데 실패했다는 의미입니다. 📋 문제 확인하기먼저 자세한 에러 메시지를 확인해보겠습니다.# Pod 상태 확인kubectl get podskubectl describe pod 🚨 주요 원인과 해결방법1. 이미지 이름/태그 오타가장 흔한 실수, 이미지 이름이나 태그를 잘못 입력했을 수 있습니다.해결방법# deployment.yamlspec: containers: - name: my-app # 틀린 예: image: nginx:lates..
Kubernetes 클러스터를 운영하다 보면 종종 "ContainerCreating" 상태에 머물러 있는 파드(Pod)를 마주치게 됩니다. 이 상태는 단순해 보이지만, 실제로는 다양한 복잡한 메커니즘과 잠재적 문제들을 내포하고 있습니다.Kubernetes Pod 생성 워크플로우1. Pod 생성 요청Kubernetes 클러스터에 Pod 생성을 요청하면 다음과 같은 순차적인 프로세스가 시작됩니다: API Server 요청: 사용자나 컨트롤러가 API Server에 Pod 생성 요청 YAML/JSON 매니페스트 파일을 통해 Pod 스펙 정의 Scheduler 개입: API Server는 스케줄러에게 Pod 배치 요청 노드 선택 기준 리소스 가용성 노드 선택자(nodeSelector) 어피니티/안티 어피니티 규..