1. Argo Rollouts 소개1) Argo Rollouts 이란?Argo rollouts은 Progressive Delivery를 지원하는 툴이다. 쿠버네티스에서 롤아웃 관리를 위한 오픈소스 도구 중 하나로, Kubernetes에서 Blue/Green, Canary 등 배포를 지원한다.2) Argo Rollouts을 사용하는 이유Kubernetes의 기본 배포 전략은 RollingUpdate이나, RollingUpdate는 여러 가지 제약 사항이 있다. 이를 해결하기 위해 Blue/Green 또는 Canary 배포 방식을 사용한다. 하지만, Blue/Green 또는 Canary 배포 방식을 직접 구성하려면 Deployment를 2개 운영하고, Service에서 Selector를 변경해야 함으로 번거..
1. 롤링 배포 (Rolling Update Deployment) 클러스터 가동 중지 시간 없이 새 버전을 배포하면서, 새 버전 파드를 하나씩 늘려가고 기존 버전의 파드를 하나씩 줄여나가는 방식이다. Kubernetes의 기본 배포 전략으로 spec.strategy.type으로 RollingUpdate, Recreate을 지정할 수 있다. RollingUpdate 옵션 maxSurge : 업데이트 중 원래 Pod 수 이상으로 예약할 수 있는 최대 Pod 수 (기본값: 25%) maxUnavailable : 업데이트 중 사용할 수 없는 최대 Pod 수 (기본값: 25%) 장점 많은 서버 자원을 확보하지 않아도 무중단 배포가 가능함으로 서버 수의 제약이 있을 경우 유용하다. 서비스의 지속적인 가용성을 제공하..
1. 테스트 사전 설명 이번 글에서는 ⑥ , ⑦ 번 CD 과정을 설정하는 과정을 설명하였습니다. 전체적인 테스트 구성 및 ① ~ ⑤ CI 과정은 이전 글을 참고하시길 바랍니다. [Devops] Jenkins, ArgoCD를 통한 CI/CD 구성 - (1) Jenkins 구성 1. 아키텍처 CI 과정 ① Push codes to the repository 애플리케이션 코드 수정 후 dockerimage repository로 git commit 및 push 한다. ② Trigger Job - build image dockerimage repository로 push되면 github webhook을 통해 build image Jo lilylabs.tistory.com 2. CD 과정 ⑥ Sync kubernet..
1. 아키텍처 CI 과정 ① Push codes to the repository 애플리케이션 코드 수정 후 dockerimage repository로 git commit 및 push 한다. ② Trigger Job - build image dockerimage repository로 push 되면 github webhook을 통해 build image Job이 Trigger 된다. ③ Build docker container image and save it in the ACR build image Job을 통해 Docker Container Image가 Build 되고 해당 이미지가 Azure Container Registry에 저장된다. ④ Trigger Job - update manifest build..
1. Linux 노드에 대한 대화형 셸 연결 1) 하기 명령어로 접근하고자 하는 Node의 이름을 확인한다. kubectl get nodes 2) 하기 명령어로 노드에서 컨테이너 이미지를 실행하여 연결한다. 해당 Pod는 노드에 대한 액세스를 제공한다. kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0 3) chroot /host 명령어를 입력하여 root 권한으로 Node에 접근한다. 4) exit 명령어로 대화형 셸 세션을 종료하는 명령을 입력한다. 5) 대화형 컨테이너 세션이 닫히면 kubectl delete pod 명어를 통해 노드 접속에 사용된 Pod를 삭..
1. Jenkins에서 Docker pipeline 플러그인 설치 Docker를 사용하여 pipeline을 구축하기 위해서는 Docker pipeline 플러그인 설치가 필요하다. 1) Dashboard → Jenkins 관리 → Plugins → Available plugins → docker pipeline 검색 후 설치 2. Jenkins에서 Github Credentials 구성 Jenkins 에는 미리 Credential 을 설정해놓고 빌드시 사용 할 수 있다. Github에서 Token을 발급받아 Jenkins Credential에 등록한다. 1) Github personal access token 생성 Github personal access token 생성하는 방법 token에 repo, ..
1. 사전 준비 Jenkins는 Java 개발 키트의 오픈 소스 버전 응용 프로그램으로 Java Platform의 오픈 소스 구현인 OpenJDK 11을 설치한다. sudo apt update sudo apt install openjdk-11-jdk OpenJDK 11 설치가 완료되면 Java 버전을 확인한다. java -version # openjdk version "11.0.7" 2020-04-14# OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1) # OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing) 2. Jenkins 설치 wg..
1. Gitlab이란? GitLab은 소프트웨어 개발 라이프사이클을 지원하는 통합 DevOps 플랫폼으로, 버전 관리, CI/CD, 이슈 트래킹, 협업 등을 제공한다. Git 기반의 코드 저장소와 함께 프로젝트 관리 및 지속적 통합과 배포 기능을 제공하여 개발자들이 효과적으로 협업하고 소프트웨어를 효율적으로 개발할 수 있도록 지원한다. 오픈 소스 및 기업 버전이 제공되며, GitLab은 웹 기반의 사용자 친화적인 환경에서 전체적인 개발 프로세스를 관리한다. GitLab 패키지는 3가지가 있다. GitLab CE : Community Edition으로 설치형, 아무런 제한 없이 무료 GitLab EE : Enterprise Edition으로 설치형, 매월 유저당 과금 GitLab.com : 클라우드형, 개..
1. Secret store CSI Driver 설치 Secrets Store CSI Driver: Kubelet의 모든 인스턴스와의 통신을 용이하게 하는 데몬셋이다. kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)' # 설치가 안되어 있을 경우 하기 명령어로 설치 진행 az aks enable-addons --addons azure-keyvault-secrets-provider --name --resource-group 2. Azure Key Vault 생성 az keyvault create -n -g -l koreacentral 3. AKS의 Managed Identity에..
1. Network Policy 개념 Network Policy를 통해 클러스터 내부에서 파드 간에 트래픽 룰을 규정할 수 있다. Network Policy를 사용하지 않을 경우 클러스터 내부의 모든 파드는 서로 통신이 가능하다. Network Policy의 용도 기본적으로 모든 파드 간 통신은 차단하고 특정 파드 간 통신만 허용하는 화이트리스트 방식을 사용할 수 있다. 네임스페이스별로 트래픽을 전송하지 못하게 할 수 있다. 2. Network Policy 활성화 방법 1) 온프레미스 환경 Network Policy 정책을 지원하는 네트워크 플러그인(CNI 플러그인)을 사용하여 클러스터가 구축되어야 한다. CNI 플러그인으로 Flannel, Calico, Weavenet, NSX 등 다양한 종류가 있다...