Argo Rollouts를 이용한 Blue-Green 배포 전략 적용하기
·
DevOps
이 포스팅에서는 GitOps 환경에서 Blue-Green 방식의 무중단 배포를 구성하는 과정을 다룹니다.이전 포스팅들을 참고하시면 GitOps 환경에서 GitHub Actions + ArgoCD를 이용한 CI/CD 파이프라인을 구축하실 수 있습니다.2025.01.04 - [DevOps] - GitOps와 ArgoCD2025.01.05 - [DevOps] - GitHub Actions + ArgoCD로 k8s 클러스터 환경에서 CI/CD 구축하기서론쿠버네티스는 배포를 쉽게 해 줍니다. 하지만 GitOps 방식의 CI/CD 파이프라인을 구축한 후 무중단 배포를 위해 설정해야 하는 부분은 꽤나 까다로웠습니다. GitHub Actions 워크플로우 스크립트를 수정할 때 configMap 등을 이용해 현재 배포된..
쿠버네티스에서 트래픽 유실 없는 무중단 배포 적용하기
·
Kubernetes
쿠버네티스는 배포를 편리하게 해 줍니다. 편리하지만 수동으로 배포한다면 꽤나 번거로워질 수 있고 Human Error가 발생할 가능성이 높습니다. 만약 GitOps 방식을 채택했다면 배포 과정에서 트래픽이 유실되지 않도록 하려면 복잡한 설정이 필요할 수 있습니다. 파드가 생성된 후 애플리케이션이 완전히 준비돼야 정상적으로 트래픽을 처리할 수 있고, 그 시점에 서비스 객체가 해당 파드를 바라볼 수 있도록 하는 제어가 필요하기 때문입니다. 서비스가 중단되지 않도록 배포하기 위해 무중단 배포 전략이 등장했고, 무중단 배포 전략에는 canary, blue-green, rolling 등이 있습니다. 이 포스팅에선 blue-green 배포 전략을 예시로 들겠습니다.쿠버네티스에서 트래픽의 이동 경로쿠버네티스 클러스터..
GitHub Actions + ArgoCD로 k8s 클러스터 환경에서 CI/CD 구축하기
·
DevOps
지난 포스팅에서 ArgoCD를 통해 애플리케이션의 자동 배포를 구축했습니다.ArgoCD로 자동 배포를 구축하는 과정은 이 링크를 확인해 주세요! 이번 포스팅은 GitHub Actions를 통해 CI 부분을 자동화하는 부분을 중점적으로 다루며, 이전 포스팅과 함께 읽으신다면 최종적으로 GitOps 방식으로 쿠버네티스 클러스터 환경에서 CI/CD 파이프라인을 구축하는 과정을 보실 수 있습니다.CI/CD 파이프라인 전체 흐름단일 진실의 원천(SSOT)인 GitHub Repository에 코드를 Push 합니다.GitHub Actions의 workflow가 트리거 됩니다.JDK로 Spring 애플리케이션을 빌드하고, 빌드된 JAR 파일로 Docker 이미지를 만든 다음 Docker Hub에 Push 합니다.Do..
GitOps에서 SealedSecret으로 안전하게 Secret 관리하기
·
DevOps
GitOps와 SecretGitOps는 단일 진실의 원천(SSOT)으로 Git 저장소를 사용합니다. (링크)Secret 객체는 암호화와 전혀 상관없는 base64로 인코딩된 값으로 되어 있습니다.그렇기 때문에 민감한 정보가 들어있는 Secret을 Git 저장소에 저장하면 위험합니다. (private 저장소라고 해도 누군가와 공유하는 순간 유출될 위험이 있습니다.) 이번 포스팅은 이 문제를 해결해주는 SealedSecret을 사용하는 방법에 대해 다룹니다.GitHub Repository: https://github.com/bitnami-labs/sealed-secrets GitHub - bitnami-labs/sealed-secrets: A Kubernetes controller and tool for o..
GitOps와 ArgoCD
·
DevOps
이번 포스팅은 GitOps의 핵심 개념, 동작 방식과 그 구현체인 ArgoCD에 대한 주제를 다룹니다.GitOps?GitOps라는 용어는 Weaveworks 회사에서 처음 사용되어 지금까지 많은 영향력을 끼쳐왔는데요, 클라우드 네이티브 애플리케이션을 지속적인 배포(Continous Delivery;CD)를 구현하는 방법입니다. 핵심 개념은 다음과 같습니다.프로덕션 환경에서 목표로하는 인프라에 대한 선언적인 정의서(declarative descriptions)가 포함된 Git 저장소(Repository)와 실제 프로덕션 환경이 일치하도록 자동화된 프로세스를 구축하는 것입니다.즉, 새로 배포할 땐 Git 저장소만 업데이트하면 프로덕션 환경에 자동으로 반영이 되는 것입니다.선언적인 정의서(declarative..
ElasticSearch 샤드 배치 방식 변경하기
·
ElasticSearch
샤드 배치는 대부분 ElasticSearch가 알아서 해줍니다.하지만 unassinged 샤드가 발생해서 5회 이상 재할당이 실패한 경우 더 이상 자동으로 할당이 되지 않습니다. 또 다른 상황으로 마이그레이션을 할 때 샤드를 다른 노드로 배치해야 하는 경우도 있습니다. 이런 상황에서 샤드 배치 방식을 수동으로 변경해야 하는데, 그 방법에 대해 알아보겠습니다. 샤드 배치 명령어샤드를 배치하는 방법은 4가지가 있습니다.`reroute`: 샤드 하나를 특정 노드에 배치`allocation`: 샤드 배치 방식을 클러스터 전체에 적용`rebalance`: 샤드 재분배 방식을 클러스터 전체에 적용`filtering`: 특정 조건에 해당하는 샤드들을 특정 노드에 배치이 중에서 샤드 하나를 특정 노드에 배치하는 `re..
ncloud NKS에서 Nginx Ingress Controller 설치부터 HTTPS 적용하기
·
Kubernetes
이번 포스팅에서는 NKS에서 nginx ingress controller를 설치해서 등록된 도메인을 연결하고, cert-manager와 letsencrypt로 HTTPS를 적용하는 과정을 다룹니다. 실행 환경은 `kubectl config`를 통해 생성한 NKS 클러스터에 명령어를 입력가능한 상태입니다.kubectl config는 이전 포스팅의 마지막 kubectl config 설정 부분을 참고하시면 됩니다.(2025.01.01 - [Kubernetes] - ncloud NKS로 쿠버네티스 클러스터 구성하기) 0. Ingress?Ingress는 쿠버네티스 클러스터에서 서비스 리소스와 완전히 독립적인 리소스입니다.Ingress는 프라이빗 클러스터 내부의 서비스를 외부에 노출시키지 않고 라우팅을 할 수 있으..
ncloud NKS로 쿠버네티스 클러스터 구성하기
·
Kubernetes
이번 포스팅에선 ncloud의 NKS(Ncloud Kubernetes Service)를 이용해 쿠버네티스 클러스터를 구성하는 과정을 다룹니다. ncloud에서 제공하는 리소스 공식 문서와 여러 블로그를 통해 찾아봤지만, 2024년 말 기준 변경된 부분이 많아 직접 구성하며 다시 정리했습니다.위의 이미지는 대략적인 클러스터 구성도입니다.아래 순서대로 진행하겠습니다.VPC 생성Subnet 생성NAT Gateway 생성NKS Cluster 생성Route Table 설정1. VPC 생성`VPC` - `VPC Management` - `VPC 생성` 버튼을 눌러 VPC를 만듭니다.2. Subnet 생성`VPC`- `Subnet Management` - `Subnet 생성` 버튼을 눌러 서브넷을 만들어 줍시다.k8..