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인 경우 정상입니다.