전체 글 112

ConfigMap Auto Refresh, Spring Boot

선행사항 kubernetes 설치 (kind , k3d , k3s ,k8s …) 해당 namespace 에 configmap sa role , rolebinding 아래 작업 수행시 ConfigMap 파일을 (= application.yml 내용) 수정한후 kubectl apply -f 을 해주면 Kubernetes Pod 재시작 없이 Spring Boot Application 에 수정한 설정이 적용된다. 목차 1. Spring Boot Project profile 은 dev 와 local 로 2개를 사용하고 있습니다. dev local kubernetes 환경 local desktop IDE 실행환경 1.1. build.gradle implementation 'org.springframework.clo..

Spring , JPA 2022.12.29

[skaffold] window 에 설치한 skaffold Trouble Shooting

WSL 에 Skaffold 를 설치했을때 나타난 issue 입니다. WSL 에 아래 명령어로 Skaffold 를 설치했다. # skaffold 설치 curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.0/skaffold-linux-amd64 # skaffold 명령어를 모든 user 가 사용할수 있도록 이동 sudo install skaffold /usr/local/bin/ 10:35:01 ubuntu@DESKTOP-BHD5HLL ~ → which skaffold /usr/local/bin/skaffold Global Skaffold Config File 10:35:00 ubuntu@DESKTOP-BHD5HLL .skaffold..

DevOps, Infra 2022.12.29

[ArgoCD] 무중단 배포 전략

ArgoCD 의 무중단 배포 전략은 3가지가 있다. 롤링 배포 (Rolling Deployment) 블루/그린 배포 (Blue/Green Deployment) 카나리 배포 (Canary Deployment) 본문에서는 3가지 배포 전략의 방식과 장단점을 설명한다. 목차 1. 롤링 배포 (Rolling Deployment) 1.1. 배포 방식 롤링 배포는 이전 버전을 새 버전으로 천천히 교체한다. 배포되어있는 Pod 들을 동시에 업데이트 하는게 아닌 1개, 2개 등 퍼센테이지를 정해 교체해 나가는 방식이다. Kubernetes 에서도 지원 하는 기존 배포 전략이다. 1.2. 장단점 장점 서버 리소스 제약이 있을 경우 유용하다. 인스턴스마다 차례로 배포를 진행하기 때문에 상황에 따라 손쉽게 롤백(Roll B..

DevOps, Infra 2022.12.29

[ArgoCD] ArgoCD Install

목차 1. GitOps GitOps 는 Weaveworks 라는 회사에서 처음 쓰기 시작했다. Git 저장소에 저장된 쿠버네티스 매니페스트 파일이 쿠버네티스 클러스터에 똑같이 반영된다. Human Error 를 줄일 수 있어 안정성이 보장된다. 변경사항을 커밋 로그및 히스토리로 확인 할 수 있어 장애 발생시 빠르게 롤백할 수 있고 버전 관리 가 된다. 누가 수정했는지 코드로 확인할 수 있다. 매니페스트가 정의되어 있는 Git 저장소가 변경되면, Git 저장소의 내용과 쿠버네티스 클러스터를 동기화 해주는 에이전트가(=ArgoCD) 변경 내역을 쿠버네티스 클러스터에 반영해 주게 되는 것입니다. 인프라 관리를 점차 코드를 통해 관리하는 추세인데 GitOps 또한 그런 맥락으로 이해할 수 있을 것 같다. IaC..

DevOps, Infra 2022.12.28

[Jenkins] 빌드 자동화 - webhook

Github 에 코드 Push만 해도 Jenkins 를 통해 자동 빌드 처리 하는 방법은 Webhook 과 Polling 방식이 있다. 본문에서는 Webhook 을 설명한다. Webhook 이란? Webhook(웹훅)이란, 특정 이벤트가 발생하였을 때 타 서비스나 응용 프로그램으로 알림을 보내는 기능입니다. 목차 선행 사항 ● Jenkins 설치 ● Jenkins > Github plugin 설치 ● Jenkins > Github credential 등록 1. ngrok Jenkins 가 http://localhost:18080 으로 떠있는 상황 만약 Jenkins 가 로컬이 아니라 외부접속이 가능한 환경에 설치돼있다면 Skip 해도 되는 절차이다. ngrok - 로컬 컴퓨터의 개발 환경을 인터넷으로 공..

DevOps, Infra 2022.12.28

[Jenkins] 빌드 자동화 - polling

Github Push만 처리 해도 Jenkins를 통해 자동 빌드 처리하는 방법은 Webhook 과 Polling 방식이 있다. 본문에서는 Polling 방식 을 설명한다. Polling 이란? 본인의 App에서 End-Point에 지속적으로 이벤트 발생 여부를 묻고 이에 대해 응답받는 형태 Git Repository에 변경사항이 있는지 특정 간격으로 물어보는 것 목차 1. Item 생성 Multi branch Pipeline 선택 Pipeline 으로 Item 을 생성하여 polling 설정이 가능하나, git change 를 detect 하지 못하고 schedule 설정대로 polling 하는 단점이 있다. Multi branch Pipeline 으로 Item을 생성할경우 사용자가 설정한 schedu..

DevOps, Infra 2022.12.27

[Jenkins] 플러그인 설치 및 준비

목차 1.젠킨스 플러그인 설치 jenkins suggested plugins (시작시 제안 플러그인) 설치 + 추가적으로 아래 플러그인을 설치한다. git parameter cleanup docker pipeline 2. Jenkins - GitHub 연동 2.1. GitHub access token 발급 Settings > Developer settings > Personal access tokens (classic) 2.2. GitHub 계정 등록 Dashboard > Jenkins 관리 > Configure System > GitHub 에서 SecretText 3. Jenkins - Docker Hub 연동 3.1. Dockerhub 에서 access token 발급 3.2. Jeknkins Cre..

DevOps, Infra 2022.12.27

Git 브랜치 전략 3가지

브랜치 전략이란? 브랜치 전략이란 여러 개발자가 1개의 저장소를 사용하는 환경에서 효과적으로 활용하기 위해 나온 개념입니다. 브랜치 전략은 Git flow, GitLab flow, Github flow 3가지가 대중적으로 알려져 있습니다. 목차 1. Git Flow 3 가지의 브랜치 전략 중 가장 먼저 나온 모델이다. Git Flow feature > develop > release > hotfix > master 브랜치가 있다. 머지 순서는 앞에서 뒤로 진행된다. 1.1. 브랜치 구성 브랜치명 구분 설명 비고 feature 보조 브랜치 기능 단위 개발 브랜치 feature에서 개발 완료 후 release로 merge Issue List로 브랜치 생성 및 관리 브런치 나오는 곳 : develop 브런치가..

DevOps, Infra 2022.12.27

[skaffold] Skaffold , kustomize with Spring Boot

Skaffold는 애플리케이션 구축, 푸시 및 배포를 위한 워크플로를 처리하고 CI/CD 파이프라인 생성을 위한 빌딩 블록을 제공한다. Google 에서 개발했으며 아래와 같은 파이프라인으로 동작한다. 목차 1. install 1.1.skaffold 설치 curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.0/skaffold-linux-amd64 sudo install skaffold /usr/local/bin/ 1.2. kustomize 설치 kustomize CLI 미설치시 skaffold deploy 작업중 error 발생함 curl -s "https://raw.githubusercontent.com/kubernetes-s..

DevOps, Infra 2022.12.27