이 저장소는 OpenStack에 기본 Kubernetes 인프라를 프로비저닝하기 위한 Terraform 설정들을 포함합니다.
.
├── env/ # 환경별 Terraform 설정 (예: prod)
│ └── prod/ # 프로덕션 환경
│ ├── main.tf # 루트 모듈: 다른 모듈(network, security_group, compute)을 조율합니다.
│ ├── output.tf # 루트 모듈 출력
│ ├── provider.tf # OpenStack 프로바이더 설정
│ └── variables.tf # 루트 모듈 변수
├── modules/ # 재사용 가능한 Terraform 모듈
│ ├── compute/ # 컴퓨트 인스턴스 (배스천, 컨트롤 플레인, 워커) 및 로드 밸런서 모듈
│ │ ├── lb.tf # 로드 밸런서 리소스
│ │ ├── main.tf # 컴퓨트 인스턴스 정의
│ │ ├── output.tf # 컴퓨트 모듈 출력
│ │ └── variables.tf # 컴퓨트 모듈 변수
│ ├── network/ # 네트워크 리소스 (퍼블릭, 프라이빗, LB 네트워크) 모듈
│ │ ├── main.tf # 네트워크 및 서브넷 정의
│ │ ├── output.tf # 네트워크 모듈 출력
│ │ └── variables.tf # 네트워크 모듈 변수
│ └── security_group/ # 보안 그룹 정의 모듈
│ ├── main.tf # 보안 그룹 규칙
│ └── output.tf # 보안 그룹 모듈 출력
└── README.md # 이 문서
프로젝트 루트 디렉토리로 이동하여 Terraform을 초기화합니다.
cd env/prod
terraform init인프라를 생성하려면 terraform apply를 실행합니다. 민감한 변수(예: root_password, ubuntu_password, OpenStack 인증 정보)는 .tfvars 파일을 통해 제공하는 것을 권장합니다.
변수 파일 (terraform.tfvars) 사용 방법:
-
env/prod/디렉토리에terraform.tfvars파일을 생성합니다. -
다음 내용을 복사하여 파일에 붙여넣고, `` 부분을 실제 값으로 변경합니다.
# 백엔드 인스턴스 비밀번호 root_password = "" ubuntu_password = "" # OpenStack 인증 정보 os_auth_url = "http://YOUR_OPENSTACK_IP:5000/v3" # 실제 OpenStack 인증 URL로 변경 os_tenant_name = "" os_user_name = "" os_password = "" os_region_name = ""
이제 다음 명령어를 실행하여 인프라를 적용할 수 있습니다.
terraform apply --auto-approveterraform apply 성공 후, 로드 밸런서의 공인 IP 주소와 같은 중요한 정보가 출력됩니다.
terraform output load_balancer_ip프로비저닝된 모든 리소스를 제거하려면 terraform destroy를 실행합니다.
cd env/prod
terraform destroy --auto-approve