OCI κ³μ μ€λΉλΆν° k3s ν΄λ¬μ€ν° κ΅¬μΆ λ° GitOps κ°λκΉμ§μ μ 체 κ³Όμ μ λ¨κ³λ³λ‘ μλ΄ν©λλ€.
- OCI κ³μ κ°μ : Oracle Cloud Free Tierμ κ°μ ν©λλ€.
- ꡬν(Compartment) μμ±: (λ‘κ·ΈμΈ ν)
Identity & Security>Compartmentsμμ μΈνλΌμ© ꡬνμ μμ±νκ³OCIDλ₯Ό 볡μ¬ν΄λ‘λλ€. - API ν€ μμ±:
User Settings>API Keys>Add API Keyν΄λ¦.- νλΌμ΄λΉ ν€μ νΌλΈλ¦ ν€λ₯Ό λ€μ΄λ‘λν©λλ€.
- λ€μ΄λ‘λν νλΌμ΄λΉ ν€(
.pem)λ 리ν¬μ§ν 리μterraform/λλ ν 리μ μ μ₯ν©λλ€ (μ:prod.pem). - μμ±λ μ€μ μ 보λ₯Ό 볡μ¬νμ¬
terraform/oci/prod/terraform.tfvarsμμ± μ μ¬μ©ν©λλ€.
- νκ²½ λ³μ(
tfvars) μμ±:terraform/oci/prod/terraform.tfvars.exampleμ 볡μ νμ¬terraform.tfvarsλ₯Ό μμ±ν©λλ€.- μμμ μ»μ
tenancy_ocid,user_ocid,fingerprint,compartment_id,private_key_pathλ₯Ό μ λ ₯ν©λλ€.
- λ°±μλ(Object Storage) μ€μ :
- OCI μ½μμμ
terraform-state-prodλ²ν·μ μμ±ν©λλ€. backend.tfνμΌμnamespaceλ±μ λ³ΈμΈμ κ³μ μ 보μ λ§κ² μμ ν©λλ€.
- OCI μ½μμμ
- μ΄κΈ°ν λ° λ°°ν¬:
μ£Όμ: μΈνλΌ μμ± ν ν λΉλ κ³΅μΈ IPλ₯Ό νμΈν΄λμΈμ.
cd terraform/oci/prod terraform init terraform apply
μΈνλΌκ° μ€λΉλλ©΄, μλ²μ μ μνμ¬ ν΄λ¬μ€ν° μμ§μ μ€μΉν©λλ€.
-
리ν¬μ§ν 리 ν΄λ‘ :
- μλ²μ μ μνμ¬ μμ λλ ν λ¦¬λ‘ μ΄λν λ€ λ¦¬ν¬μ§ν 리λ₯Ό ν΄λ‘ ν©λλ€.
git clone https://github.com/Pseudo-Lab/DevFactory-Ops.git cd DevFactory-Ops -
λΆνΈμ€νΈλ© μ€ν¬λ¦½νΈ μ€ν:
- μλ²μμ μλ λͺ λ Ήμ΄λ₯Ό μ€ννμ¬ 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 λ±λ‘
ν΄λ¬μ€ν°κ° μ€λΉλλ©΄, λͺ¨λ μ±κ³Ό νλ«νΌ ꡬμ±μ 리ν¬μ§ν 리(Git)μ λκΈ°νν©λλ€.
- λ‘컬μμ μ격 ν΄λ¬μ€ν° μ μ μ€μ :
- μλ²μ
~/.kube/configνμΌμ λ‘컬 PCμ~/.kube/configλ‘ κ°μ Έμ΅λλ€. - νμΌ λ΄
serverμ£Όμλ₯Όhttps://<LB_IP_λλ_Instance_IP>:6443μΌλ‘ μμ ν©λλ€.
- μλ²μ
- ArgoCD μλ λ°°ν¬ μμ:
- μ€ν¬λ¦½νΈκ° μλμΌλ‘
clusters/prod.yamlμ μ μ©νμ΅λλ€. - μ΄μ ArgoCDκ° λ¦¬ν¬μ§ν 리λ₯Ό κ°μνλ©°
ingress-nginx,sealed-secretsλ±μ μλμΌλ‘ λ°°ν¬ν©λλ€.
- μ€ν¬λ¦½νΈκ° μλμΌλ‘
- λκΈ°ν νμΈ:
- ArgoCD UIμ μ μνμ¬
ingress-nginx,sealed-secretsλ±μ΄ μ μμ μΌλ‘ λ°°ν¬λμλμ§ νμΈν©λλ€.
- ArgoCD UIμ μ μνμ¬
Tip
μ±κ³΅ μ¬λΆ νμΈ: kubectl get nodes λͺ
λ Ήμ΄λ‘ λ
Έλκ° Ready μνμ΄κ³ , kubectl get pods -Aμμ λͺ¨λ μμ€ν
ν¬λκ° RunningμΈ κ²½μ° μ μμ
λλ€.