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인 경우 μ •μƒμž…λ‹ˆλ‹€.