🚀 Argo CD Kubernetes 설치 가이드 (식 방식)✅ 1. 네임스페이스 생성kubectl create namespace argocd✅ 2. Argo CD 설치 (Stable Release)kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml⏱ 설치가 완료되면 여러 Argo CD 컴포넌트가 argocd 네임스페이스에 생성됩니다.kubectl get pods -n argocd✅ 3. Argo CD 서버 포트 포워딩 (간편 테스트용)kubectl port-forward svc/argocd-server -n argocd 8080:443웹 브라우저에서 접속:htt..
Harbor는 오픈 소스 컨테이너 이미지 레지스트리로, 보안 및 관리 기능을 강화한 솔루션입니다. 1. 사전 준비운영체제: Ubuntu, CentOS 등 주요 리눅스 배포판필수 소프트웨어:DockerDocker Compose2. Docker 및 Docker Compose 설치Harbor는 Docker 컨테이너로 구성되므로, 먼저 Docker와 Docker Compose를 설치해야 합니다.Docker 설치:Ubuntu의 경우: sudo apt update sudo apt install -y docker.ioDocker Compose 설치: sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-l..
CI/CD 파이프라인 구축 시 사용할 수 있는 추천 오픈소스 도구들을 목적별로 나누어 정리해드릴게요. 각 도구는 역할이 다르므로 조합해서 사용하는 것이 일반적입니다.🔧 1. CI 도구 (Continuous Integration) 도구 설명 특징Jenkins가장 널리 사용되는 오픈소스 CI 서버플러그인 풍부, 커스터마이징 유연GitLab CI/CDGitLab과 통합된 CI/CD 도구YAML 기반 설정, GitOps 친화적GitHub ActionsGitHub에 내장된 CI/CD 기능간편한 워크플로우, 커뮤니티 액션 다양Drone CI컨테이너 기반 경량 CI 도구YAML 기반, 쿠버네티스 친화적CircleCI고성능 클라우드 CI/CD 도구 (부분 오픈소스)빠른 빌드, 캐시 최적화🚀 2. CD 도구 (Co..
🚩 예제 상황 (MSA 환경)다음과 같은 상황을 가정하겠습니다.주 레포지토리 구조:msa-project/├── common-api/ [Submodule]├── common-auth-lib/ [Submodule]├── services/│ ├── order-service/│ │ └── payment-module/ [Subtree]│ └── user-service/│ └── notification-module/ [Subtree]└── build.gradle빌드 도구: GradleCI 도구: JenkinsGit 호스팅: GitLab🚀 Jenkins Pipeline 예시 (Jenkinsfile)아래는 Jenkins를 이용하여 빌드와 배포를 수행하는 J..
MSA(Microservices Architecture) 환경에서 Git Submodule과 Git Subtree를 혼합한 하이브리드 방식으로 레포지토리를 운영하는 방법은 공통 라이브러리 및 자주 변경되는 서비스와 상대적으로 드물게 변경되는 내부 모듈의 특성을 잘 반영하여 구성하는 것이 중요합니다.🧩 1. MSA 환경에서의 하이브리드 사용 목적MSA 환경에서 Git 하이브리드를 고려하는 주요 이유:여러 서비스 간에 공유되는 공통 컴포넌트가 많을 경우 (→ Submodule)특정 서비스가 별도의 레포지토리로 관리되지만, 하나의 서비스처럼 통합 관리가 필요할 때 (→ Subtree)여러 서비스가 공통의 일부를 가지면서도 독립적인 빌드 및 배포가 필요할 때 (→ 하이브리드)📐 2. MSA 환경에서의 Git..
Git에서 Subtree와 Submodule을 동시에 사용하는 하이브리드 운영 방법은 주로 다음과 같은 상황에서 효과적입니다.Submodule: 독립적이며 자주 업데이트되는 외부 의존성 관리 (예: 공통 라이브러리, 프레임워크 등)Subtree: 덜 빈번하게 업데이트되거나 주 레포의 일부처럼 취급하고 싶은 프로젝트의 하위 요소 (예: 내부 모듈, 특정한 기능 세트 등)이를 혼합한 하이브리드 운영 방법의 효과적인 전략은 다음과 같습니다.📌 Submodule과 Subtree의 특징 및 활용 목적 비교구분 Submodule Subtree형태독립된 별도의 레포지토리로 관리주 레포지토리의 하위 폴더로 통합 관리커밋 기록별도 관리 (하위 모듈 내에서 별도 기록)주 레포지토리에 통합된 형태로 단일 기록업데이트주기적..
🎯 실무에서 유용한 Git Subtree 활용 팁 7가지📌 1. Git Subtree 활용 브랜치 전략Subtree를 별도의 브랜치로 관리하면 메인 브랜치와의 충돌을 방지할 수 있습니다.Subtree용 별도의 임시 브랜치를 생성하여 병합 작업을 한 후 메인 브랜치에 반영하면 안정적입니다.예시: 브랜치 활용git checkout -b feature/update-auth-modulegit subtree pull --prefix=auth-module https://gitlab.example.com/libs/auth.git main --squash# 이후 메인 브랜치로 병합git checkout maingit merge feature/update-auth-module📌 2. 히스토리 관리가 필요한 경우 -..
✅ Git Subtree란?Git Subtree는 별도의 Git 저장소(레포지토리)를 하나의 레포지토리 내부 특정 디렉터리에 병합하여 사용하는 방식입니다. Submodule과 비슷하게 별도의 저장소를 연결하지만, 서브모듈(Submodule)이 참조만 하는 반면, Subtree는 다른 저장소를 직접 내 레포지토리에 복사해서 통합 관리하는 방식입니다.🌱 Git Subtree의 특징독립된 저장소 통합외부 레포지토리의 내용을 내 레포지토리의 특정 폴더로 통합할 수 있습니다.히스토리 통합 및 유지 가능외부 레포지토리의 히스토리를 내 레포지토리에 통합하여 보존할 수 있습니다.관리 간편성서브모듈에 비해 관리가 비교적 간단하고 직관적입니다.복사 기반 관리 방식히스토리를 유지하면서도 실제 내용을 복사하여 통합하기 때문..
✅ Sparse Checkout이란?Sparse Checkout은 Git에서 레포지토리의 특정 디렉터리 또는 파일만 가져올 수 있는 기능으로, 필요한 소스만 클론하거나 체크아웃하여 불필요한 데이터를 줄이는 방법입니다.Git 2.25 이상에서는 사용법이 더욱 간편해졌습니다.🔖 Sparse Checkout의 장점속도 향상: 대규모 레포지토리에서 일부만 가져와 속도를 높입니다.디스크 공간 절약: 불필요한 파일이 없어 디스크 용량을 아낄 수 있습니다.빌드 및 CI 속도 개선: 특정 디렉터리만 가져와 빌드 성능을 향상시킬 수 있습니다.🚩 사용법 예시 (Step by Step)다음은 GitLab 레포지토리를 Sparse Checkout으로 클론하는 예시입니다.1️⃣ 빈 상태로 레포지토리 클론하기git clone..
Git Submodule은 하나의 Git 레포지토리 내부에서 다른 독립된 Git 레포지토리를 연결하여 사용할 수 있도록 하는 기능입니다.주로 외부 라이브러리나 공통 모듈을 별도의 레포지토리로 관리한 후 이를 포함하는 형태로 사용합니다.🧩 Git Submodule의 사용 목적독립적으로 관리되는 외부 라이브러리, 프레임워크를 통합할 때 사용여러 프로젝트에서 공통으로 쓰는 모듈을 공유할 때 효율적개별적인 Git 히스토리와 독립적 관리 가능🚩 Submodule의 동작 원리메인 레포지토리(parent repository)는 서브모듈의 특정 커밋 해시를 저장합니다.서브모듈은 별도의 독립적인 레포지토리로 존재하며, 메인 레포지토리는 이 레포지토리를 참조만 합니다.서브모듈을 업데이트하면, 메인 레포지토리에서도 업데..