Oracle Cloud Infrastructure (OCI)의 Oracle Kubernetes Engine (OKE) 클러스터에 핵심 애플리케이션들을 자동으로 배포하는 Pulumi 프로젝트입니다.
이 프로젝트는 pulumi-python-oke-full 레포지토리의 infrastructure(pulumi계정/oke-infrastructure/prod) 스택으로 생성된 OKE 클러스터 위에 필수 애플리케이션들을 배포합니다.
- Cert Manager: Let's Encrypt를 통한 SSL/TLS 인증서 자동 발급 및 갱신
- Ingress NGINX: HTTP/HTTPS 트래픽 라우팅 및 로드밸런싱
- 멀티 환경 지원: 개발(se), 프로덕션(os) 환경 분리
- OCI 기본 인프라 구조 (VCN, 서브넷, 보안 그룹 등)
- OKE 클러스터 자체의 생성 및 관리
- 데이터베이스, 스토리지 등 백엔드 서비스
- 애플리케이션별 세부 설정 (직접 커스터마이징 필요)
먼저 OKE 클러스터가 생성되어 있어야 합니다:
# 기본 인프라 레포지토리 클론 및 배포
git clone https://github.com/flexyzwork/pulumi-python-oke-multi-infrastructure
cd pulumi-python-oke-multi-infrastructure
# 해당 레포지토리의 README 따라 OKE 클러스터 생성
# Pulumi CLI 설치
curl -fsSL https://get.pulumi.com | sh
# kubectl 설치 (macOS)
brew install kubectl
# kubectl 설치 (Linux)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# OCI CLI 설치 및 구성
bash -c "$(curl -L https://github.com/oracle/oci-cli/master/scripts/install/install.sh)"
oci setup config
OKE 클러스터의 kubeconfig는 ~/.kube/config-<region>
에 저장 되어 있음
# 컨텍스트 전환
export KUBECONFIG=~/.kube/config-se
kubectl get nodes
export KUBECONFIG=~/.kube/config-os
kubectl get nodes
git clone https://github.com/flexyzwork/pulumi-python-oke-multi-kubernetes
cd pulumi-python-oke-multi-kubernetes
# 개발 환경 설정
make install
현재 설정에서 17번째 줄의 스택 참조를 확인하고 수정하세요:
# __main__.py 17번째 줄
infra_stack = StackReference('pulumi계정/oci-infrastructure/prod')
사용 중인 실제 스택 이름으로 변경:
# 현재 사용 가능한 스택 목록 확인
pulumi stack ls -a
# 출력 예시:
# NAME LAST UPDATE RESOURCE COUNT
# flexyzwork/oci-infrastructure/infra 6 minutes ago 41
# 새 스택 생성 (환경별로 각각 생성)
pulumi stack init k8s
# 설정 미리보기
make preview
# 배포 실행
make up
.
├── __main__.py # 메인 Pulumi 프로그램
├── cert_manager/ # Cert Manager 관련 설정
│ ├── cert_manager.py # Cert Manager 배포 로직
│ ├── cluster-issuer-prod.yaml # 프로덕션 인증서 발급자
│ └── cluster-issuer-staging.yaml # 스테이징 인증서 발급자
├── ingress/ # Ingress NGINX 관련 설정
│ ├── ingress_nginx_manager.py # Ingress 배포 로직
│ └── *.yaml # Ingress 설정 파일들
└── utils/ # 유틸리티 함수들
├── logger.py # 로깅 설정
└── exception_handler.py # 예외 처리
export KUBECONFIG=~/.kube/kube-se
pulumi stack select dev
pulumi up
export KUBECONFIG=~/.kube/kube-os
pulumi stack select prod
pulumi up
kubectl get pods -A
kubectl get certificates.cert-manager.io -A
kubectl get ingress -A
인증서가 False
상태일 경우:
# 문제가 있는 인증서 삭제 후 재생성
kubectl delete certificates.cert-manager.io <certificate-name> -n <namespace>
# 각 환경별 백업 에이전트 설치
kubectl apply -f https://api.cloudcasa.io/kubeclusteragents/[AGENT_TOKEN].yaml
- 스택 참조 확인:
__main__.py
의 17번째 줄 스택 참조가 정확한지 확인 - kubeconfig 경로: 각 환경의 kubeconfig 파일 경로가 올바른지 확인
- 네트워크 정책: OCI 보안 그룹에서 필요한 포트가 열려있는지 확인
- 도메인 설정: 인증서 발급을 위한 도메인 DNS 설정 필요
- 리소스 한계: OCI 계정의 리소스 한계 확인
문제가 발생하거나 추가 도움이 필요한 경우:
- 이슈 트래커에 문제 보고
- 로그 파일 (
app.log
) 확인 - Pulumi 콘솔에서 배포 상태 확인
이 프로젝트는 MIT 라이선스 하에 배포됩니다.