본문 바로가기
728x90

전체 글410

로컬에서 젠킨스로 블루/그린 무중단 배포 테스트하기 (1) - 젠킨스 설치, 스프링 부트 서버 세팅 💡 이 글에서 테스트해 볼 내용은 nginx + jenkins + springboot + github를 사용하여 프로젝트 서버의 배포 자동화 및 무중단 배포를 로컬 환경에 구현하는 것이다. 📌 젠킨스 설치 로컬에서 젠킨스를 설치하는 방법은 간단하다. https://www.jenkins.io/ 위 링크에 접속하여 다운로드를 클릭한다. 그럼 젠킨스를 다운로드 할 수 있는 페이지가 나오는데 각 운영체제나 컨테이너 환경에서 맞는 걸 클릭하면 다운로드하는 방법이 나온다. MAC을 기준으로 설명하면 macOS를 클릭한다. 그럼 이렇게 Homebrew로 다운로드하는 방법이 나온다. brew install jenkins brew services start jenkins 처음 설치라면 위 두 명령어로 간단히 설치하고 실.. 2023. 11. 24.
kubernetes - 노드와 파드 간 상호작용 제어 기술(Taint, Toleration, Node Selector, Node Affinity) 📌 Taint & Toleration 쉽게 말해 노드와 파드 간의 상호작용을 제어하는 기능이다. Taint와 Toleration을 함께 사용하면 특정 노드에만 특정 유형의 파드를 스케줄링하도록 제한할 수 있다. 이를 통해 특정한 역할을 가진 노드에만 특정한 유형의 파드를 할당하거나, 노드를 보호하기 위해 파드가 스케줄링되지 않도록 할 수 있다. 📌 Taint 노드에 특정한 제약 조건을 설정한다. 주로 노드에 특정한 상황이나 제약 사항이 있는 경우에 사용된다. 예를 들어, 특정 노드에는 특정한 유형의 파드만 스케줄링하고 싶다면 해당 노드에 Taint를 설정하여 다른 유형의 파드가 해당 노드에 스케줄링되지 않도록 할 수 있다. Kubectl taint nodes key=value: 💡 taint-effect.. 2023. 11. 23.
로컬 환경에서 도커 젠킨스(Jenkins) 컨테이너로 깃허브 레파지토리 클론 테스트하기(with Ngrok) | 로컬 젠킨스 설명 포함 💡 들어가기 전에 도커의 jenkins 공식이미지는 Deprecated 되었다. 나의 경우 자바 11 버전을 사용하기 때문에 lts-jdk 11 버전을 사용했다. LTS(Long Term Support)는 장기 지원 버전이란 의미로, 일반적인 경우보다 장기간에 걸쳐 지원하도록 특별히 고안된 소프트웨어의 버전 또는 에디션이다. 📦 준비하기 wonyong@Wonyongui-MacBookAir:~$docker volume create jenkins jenkins 볼륨 사용을 위해 jenkins 볼륨을 생성했다. 이 글은 도커 젠킨스를 기준으로 설명하지만 컨테이너로 젠킨스를 실행하는 점을 제외하고는 로컬에서 설치하는 것과 크게 다르지 않다. 로컬에서 젠키스를 설치하고 싶다면, https://www.jenkins.. 2023. 11. 18.
젠킨스(jenkins)에 대해 알아보고 무중단 배포 계획을 세워보자 💡 사내 프로젝트에 젠킨스를 적용하여 기존의 고전적인 빌드 & 배포 방식에서 벗어나는 과정을 기록하려고 한다. 🤔 What is Jenkins? 젠킨스(Jenkins)는 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deployment)를 지원하는 오픈 소스 자동화 도구이다. 소프트웨어 개발 과정에서 개발자들이 작성한 코드를 자동으로 빌드, 테스트, 배포하는 프로세스를 구축할 수 있도록 도와준다. 젠킨스는 다양한 플러그인과 확장성을 제공하여 사용자가 다양한 개발 환경과 요구 사항에 맞게 적용할 수 있다. 이를 통해 소프트웨어 개발 팀은 품질 향상, 개발 생산성 향상, 지속적인 통합 및 배포를 효율적으로 수행할 수 있다. 📌 젠킨스의 주요 기능은 다음과 같다:.. 2023. 11. 15.
로컬에서 도커로 nginx 설치 & 스프링 부트의 프록시 서버 테스트 해보기 📌 도커로 nginx 설치하기 wonyonghwang@Wonyongs-MacBook-Pro ~ % docker run -d --name nginx -p 8081:80 nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 578acb154839: Pull complete e398db710407: Pull complete 85c41ebe6d66: Pull complete 7170a263b582: Pull complete 8f28d06e2e2e: Pull complete 6f837de2f887: Pull complete c1dfc7e1671e: Pull complete Digest: sha256:86e53c4c1.. 2023. 11. 14.
쿠버네티스 Labels & Selector 간단 정리 📌 Labels Labels는 키-값 쌍으로 구성되어 있으며 리소스를 식별하는데 사용된다. 사용자가 자유롭게 정의하고 할당할 수 있습니다. 예를 들어, 애플리케이션의 특정 구성 요소를 나타내기 위해 'app=frontend'와 같은 레이블을 사용할 수 있다. 📌 Selector Selector는 레이블을 기반으로 리소스를 필터링하고 선택하는데 사용된다. 셀렉터는 기본적으로 두 가지 유형이 있다. Equality-based selector 키와 값이 정확하게 일치하는 리소스를 선택한다. 예를 들어 'app=frontend' 셀렉터는 'app' 레이블의 값이 'frontend'인 모든 리소스를 선택한다. Set-based selector 값 집합 내에 있는 리소스를 선택한다. 예를 들어 'environmen.. 2023. 11. 10.
쿠버네티스의 스케줄러 간단 정리 📌 쿠버네티스의 스케줄러 간단히 말하면 Pod를 노드에 할당하는 기능이다. 컨테이너는 클러스터 내의 노드에 적절히 분배하여 실행해야 되어야 하는데 이런 작업을 수행하는 주요 컴포넌트 중 하나가 바로 "스케줄러(Scheduler)"이다. 쿠버네티스 스케줄러는 기본적으로 Pod를 클러스터 내의 적절한 노드에 자동으로 할당한다. 이를 "자동 스케줄링(Auto Scheduling)"이라고도 한다. 스케줄러는 클러스터의 리소스 상태와 각 Pod의 요구사항을 고려하여 최적의 할당을 결정한다. Pod 등의 YAML 파일에는 NodeName이란 필드를 명시할 수 있는데 이를 통해 개발자가 해당 파드를 띄울 노드를 직접 선택할 수 있다. 일반적으로는 Pod의 스케줄링을 위해 YAML 파일에 nodeName을 명시적으로 .. 2023. 11. 10.
자바로 공부하는 배열과 리스트 📌 배열(Array) 동일한 데이터 타입의 요소들을 순차적으로 저장하는 자료구조이다. 배열은 고정된 크기를 가지고 있다. 인덱스를 사용하여 요소에 접근할 수 있다. 자바에서는 배열을 선언할 때 크기를 지정하거나, 동적으로 크기를 조정할 수 없다. 요소를 추가하거나 삭제하기 위해서는 새로운 배열을 생성하고 기존의 요소를 복사해야 한다. 배열은 메모리 상에 연속적으로 할당되므로 인덱스를 통한 접근이 매우 빠르다. 또한 크기가 고정되어 있기 때문에 요소의 위치를 바로 계산하여 접근할 수 있다. ⌨️ 자바에서의 Array public static void main(String[] args) { String[] strArr = new String[5]; // 초기 배열 크기 5로 설정, 설정하지 않으면 에러 발생.. 2023. 10. 30.
728x90