Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 3.73 KB

File metadata and controls

82 lines (63 loc) · 3.73 KB

🚀 인프라 셋업 가이드

OCI 계정 준비부터 k3s 클러스터 구축 및 GitOps 가동까지의 전체 과정을 단계별로 안내합니다.


🏗️ 1단계: OCI 계정 준비 및 API 설정

  1. OCI 계정 가입: Oracle Cloud Free Tier에 가입합니다.
  2. 구획(Compartment) 생성: (로그인 후) Identity & Security > Compartments에서 인프라용 구획을 생성하고 OCID를 복사해둡니다.
  3. API 키 생성:
    • User Settings > API Keys > Add API Key 클릭.
    • 프라이빗 키와 퍼블릭 키를 다운로드합니다.
    • 다운로드한 프라이빗 키(.pem)는 리포지토리의 terraform/ 디렉토리에 저장합니다 (예: prod.pem).
    • 생성된 설정 정보를 복사하여 terraform/oci/prod/terraform.tfvars 작성 시 사용합니다.

🔐 2단계: Terraform 초기 설정 (IaC)

  1. 환경 변수(tfvars) 작성:
    • terraform/oci/prod/terraform.tfvars.example을 복제하여 terraform.tfvars를 생성합니다.
    • 위에서 얻은 tenancy_ocid, user_ocid, fingerprint, compartment_id, private_key_path를 입력합니다.
  2. 백엔드(Object Storage) 설정:
    • OCI 콘솔에서 terraform-state-prod 버킷을 생성합니다.
    • backend.tf 파일의 namespace 등을 본인의 계정 정보에 맞게 수정합니다.
  3. 초기화 및 배포:
    cd terraform/oci/prod
    terraform init
    terraform apply
    주의: 인프라 생성 후 할당된 공인 IP를 확인해두세요.

🎡 3단계: 클러스터 부트스트랩 (k3s)

인프라가 준비되면, 서버에 접속하여 클러스터 엔진을 설치합니다.

  1. 리포지토리 클론:

    • 서버에 접속하여 작업 디렉토리로 이동한 뒤 리포지토리를 클론합니다.
    git clone https://github.com/Pseudo-Lab/DevFactory-Ops.git
    cd DevFactory-Ops
  2. 부트스트랩 스크립트 실행:

    • 서버에서 아래 명령어를 실행하여 k3s, Helm, ArgoCD를 기본 설치합니다.
    # (선택) 외부 접속용 IP 설정 (필요한 경우에만)
    export LB_IP="실제_공인_IP"
    
    # 스크립트 실행
    ./scripts/bootstrap/bootstrap-cluster.sh

    이 스크립트는 다음 과정을 자동으로 수행합니다:

    • OS 방화벽 개방: 6443, 80, 443 등 필수 포트 허용
    • k3s & Helm 설치: 검증된 특정 버전으로 설치 및 고정
    • Kubeconfig 자동 설정: ~/.kube/config 생성 및 권한 부여
    • 사용자 편의 설정: k 단축키(alias) 및 명령어 자동 완성(bash-completion) 등록
    • ArgoCD 배포: GitOps 엔진 가동 및 Root Application 등록

🐙 4단계: GitOps 활성화 (ArgoCD)

클러스터가 준비되면, 모든 앱과 플랫폼 구성을 리포지토리(Git)와 동기화합니다.

  1. 로컬에서 원격 클러스터 접속 설정:
    • 서버의 ~/.kube/config 파일을 로컬 PC의 ~/.kube/config로 가져옵니다.
    • 파일 내 server 주소를 https://<LB_IP_또는_Instance_IP>:6443으로 수정합니다.
  2. ArgoCD 자동 배포 시작:
    • 스크립트가 자동으로 clusters/prod.yaml을 적용했습니다.
    • 이제 ArgoCD가 리포지토리를 감시하며 ingress-nginx, sealed-secrets 등을 자동으로 배포합니다.
  3. 동기화 확인:
    • ArgoCD UI에 접속하여 ingress-nginx, sealed-secrets 등이 정상적으로 배포되었는지 확인합니다.

Tip

성공 여부 확인: kubectl get nodes 명령어로 노드가 Ready 상태이고, kubectl get pods -A에서 모든 시스템 포드가 Running인 경우 정상입니다.