Java 설치자바 버전 확인 후 설치되지 않았다면 설치.# 버전 확인java -version# java 설치sudo apt updatesudo apt install openjdk-11-jdk 만약 여러개의 java version이 존재한다면 기본 자바 버전을 설정한다.sudo update-alternatives --config javaThere are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status------------------------------------------------------------ ..
DevOps
Argo Rollouts 설치하기ArgoCD와 ArgoCD Image Updater 설치와 마찬가지로 helm 레포와 차트를 다운받는다.이후 차트 내부에 values-dev.yaml 파일을 생성해 아래 내용을 추가한다.controller: replicas: 1dashboard: enabled: true service: type: NodePort portName: dashboard port: 3100 targetPort: 3100 nodePort: 30003 이후 아래 helm 명령어로 설치를 수행한다. 마찬가지로 kubeconfig는 제외 가능.helm upgrade argo-rollouts ./argo/helm/argo-rollouts-f ./argo/helm/argo-..
배포를 새로 해야하는 상황은 다음과 같다.리소스 스펙 변경App 버전 업그레이드1번은 담당자가 수작업으로 변경해 yaml이나 helm의 values 파일에서의 항목을 수정해주어야 한다.하지만 2번은 컨테이너 이미지 변경, 즉 이미지의 tag를 변경하는 사항인데 이를 ArgoCD Image Updater를 이용하여 자동화할 수 있다. 특히 개발서버에서 App의 기능사항을 지속적으로 개발 업데이트하며 변경사항을 확인하는 경우가 잦아지는데, 이 때 직접 배포파일을 수정하지 않고 자동으로 업데이트 되기 때문에 굉장히 편리하고 유용하다. 배포 방식에 대한 차이점Image Updater의 유용성을 알기 위해 App 컨테이너 이미지 업데이트 시 각 배포 방식에 따른 차이점을 알아보도록 하자.Jenkins 배포소스 빌..
Repository 관리 방법repository 분리의 장점은 접근 유저별로 권한 관리가 가능하고, 불필요한 코드 다운을 방지한다는 점이다.App 소스 전용: App의 기능을 위한 코드의 저장소.1명 이상의 개발자가 공유하며 CI/CD 서버에서 해당 코드를 다운받아 배포한다.App 배포 전용: App을 배포하기 위한 release 파일들의 저장소. 관리 주체는 DevOps 엔지니어이지만 개발자도 자신의 코드를 배포할 수 있다.Addon 설치 전용: Argo나 Prometheus 같이 서비스를 운영하는데 필요한 소스들의 저장소. 운영자가 관리.ArgoCD 설치Argo Project는 Helm repo를 추가하여 간편하게 각 제품별로 설치할 수 있다.자신의 배포 전용서버에서 편한 위치에 argo 디렉토리를 ..
Argo Project 제품 설명CD: 쿠버네티스 전용 배포 툴. Release 파일 저장소로 Git repository가 필요하다.Image Updater: ArgoCD의 추가 기능. Docker Hub의 컨테이너 이미지 변경을 감지하여 배포를 수행한다.Rollouts: 고급 배포 지원 (Blue/Green, Canary).Events: Kafka와 같은 이벤트 버스 아키텍처에 대한 솔루션.Workflow: Airflow, Kubeflow 같은 워크플로우 관리도구.Argo 제품으로 다음과 같은 아키텍처가 만들어질 수 있다.ArgoEvents가 시스템들 간의 이벤트를 주고받는 메인 통로 역할.이 중 Workflow로 보내지는 이벤트가 발생. Workflow는 이벤트를 받고 내부 값에 의해 특정 작업을 실..
이번 포스팅은 kubernetes app을 다양한 환경에서 배포할 수 있도록 Helm화 한 뒤Jenkins로 배포하는 과정에서 어떻게 Helm 패키지를 생성하고 배포하는지 정리한 글이다.Helm 설치# Helm 설치curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3chmod 700 get_helm.sh./get_helm.shHelm 템플릿 생성 (init)# jenkins 유저로 전환su - jenkins -s /bin/bash# 템플릿 생성helm create api-tester당장 필요없는 내용 삭제하기 (deleting) 헬름 템플릿을 생성하면 위와 같은 구조의 차트 directory..
CI/CD 파이프라인을 구성할 때 고려해야 하는 요소관리 담당: 소스 빌드 → 컨테이너 빌드 → 배포 단계의 CI/CD를 구성한다고 할 때, 한 명이 jenkins pipeline으로 모두 관리하면 기능적으로 편리하다. 하지만 실무에서는 각 단계를 책임지는 담당자가 존재한다. 예를 들어 개발자가 소스 빌드를 담당하고, 나머지를 devops 엔지니어가 담당할 수 있다. 기능적인 측면 vs 관리적인 측면을 고려해야 한다.운영 정책: jenkins로 소스와 컨테이너 빌드를 수행하고 ArgoCD로 배포를 수행한다. 인프라 환경에는 개발과 운영환경이 존재하는데, 이 때 ArgoCD 배포와 인프라를 1:N 형태로 설정할 수 있고, 아니면 인프라 환경마다 ArgoCD를 두어 1:1로 구축할 수 있다. 전자는 Argo..
해당 포스팅은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 내용을 기반으로 작성했습니다.CI/CD 서버 환경 구축Kubectl 설치sudo ufw disabletimedatectl set-timezone "Asia/Seoul"sudo timedatectl set-ntp truesudo systemctl restart systemd-timesyncd.service# apt repos 설정sudo apt-get update# apt-transport-https may be a dummy package; if so, you can skip that packagesudo apt-get install -y apt-transport-https ca-certificates curl gpgsudo..