🕛 기간
22.02 ~ 22.06
소개
- Terraform을 활용하여 인프라를 관리하는 과정에서, Kubernetes 클러스터 외부에서 Terraform 명령어를 실행하여 EC2 인스턴스를 자동으로 생성하고 관리할 수 있는지 실험
- Kubernetes java API와 통신하여 Pod 내 컨테이너에서 Terraform CLI 명령어를 원격으로 실행하는 방법을 연구
사용 기술
- Infra: Kubernetes, AWS
- Libraries:
client-go
(Kubernetes API를 위한 Go 클라이언트)
연구 목표
- Kubernetes 클러스터 외부에서
client-go
를 통해 Terraform CLI 명령어를 원격 실행하여 EC2 인스턴스를 프로비저닝할 수 있는지 확인
주요 연구 및 실험 흐름
- Terraform Provisioning 설계 및 원격 실행 실험
- gRPC 통신 학습: gRPC를 통한 원격 명령 전송 기본 개념을 이해하고 Kubernetes와의 통신에 어떻게 활용할 수 있는지 학습
- Kubernetes 외부에서 Pod 내 컨테이너 실행 실험:
client-go
를 활용해 외부 환경에서 Pod 내부의 Terraform CLI 명령을 실행하여 EC2 인스턴스 프로비저닝 가능성 실험
- Pod 내 컨테이너 원격 실행 최종 검증
client-go
라이브러리를 사용하여 Kubernetes API의 Exec 기능을 통해 terraform init
과 terraform apply
명령을 Pod 내부에서 원격으로 실행하고 EC2 인스턴스를 생성
문제점 및 해결 방안
- 문제점: 외부에서 Pod 내의 Terraform CLI를 실행하기 위해서는 Kubernetes API를 사용하여 Pod에 명령을 전달해야 했으며, 이 과정에서 Kubernetes API 통신과 명령 전달을 위한 연구가 필요
- 해결 방안: Kubernetes API의 Exec 기능을 활용하여
terraform init
과 terraform apply
명령을 원격에서 실행, EC2 인스턴스를 생성하는 방식으로 문제를 해결