Kubernetes는 컨테이너 오케스트레이션의 표준으로 자리 잡으면서 멀티 클라우드 환경에서도 많은 인기를 얻고 있습니다. 이번 튜토리얼에서는 Kubernetes를 활용하여 멀티 클라우드 인프라를 구성하는 방법을 단계별로 살펴보겠습니다. AWS와 Google Cloud Platform(GCP)을 예로 들어 각 클라우드 간의 Kubernetes 클러스터를 연결하는 방법을 알아보겠습니다.
환경 준비
필수 요구 사항
- AWS와 GCP 계정
- kubectl 설치
- eksctl 설치 (AWS EKS 클러스터 생성 도구)
- gcloud CLI 설치 (GCP CLI)
클러스터 생성
AWS EKS 클러스터 생성
먼저 AWS에서 EKS 클러스터를 생성합니다. eksctl을 사용하면 간편하게 클러스터를 생성할 수 있습니다.
eksctl create cluster \
--name multi-cloud-cluster \
--region us-west-2 \
--nodegroup-name standard-workers \
--node-type t2.medium \
--nodes 3
위 명령어를 실행하면 AWS에서 EKS 클러스터와 노드 그룹이 생성됩니다. 클러스터가 준비되면 kubectl을 통해 클러스터에 연결할 수 있습니다.
aws eks --region us-west-2 update-kubeconfig --name multi-cloud-cluster
GCP GKE 클러스터 생성
GCP에서 GKE 클러스터를 생성합니다. 아래 명령어를 사용하여 클러스터를 생성할 수 있습니다.
gcloud container clusters create multi-cloud-cluster \
--zone us-central1-a \
--num-nodes 3
클러스터 생성이 완료되면 GKE 클러스터에 연결합니다.
gcloud container clusters get-credentials multi-cloud-cluster --zone us-central1-a
클러스터 간 통신 설정
이제 AWS EKS와 GCP GKE 간에 서로 통신할 수 있도록 설정합니다. 이를 위해 각 클러스터에 네트워크 정책을 설정해야 합니다. 예를 들어, AWS EKS 클러스터에서 GCP GKE 클러스터로 요청을 보낼 수 있도록 보안 그룹을 구성합니다.
AWS EKS 보안 그룹 설정
AWS Management Console에서 EKS 클러스터의 보안 그룹을 찾습니다. 다음과 같은 인바운드 규칙을 추가합니다.
GCP GKE 방화벽 규칙 설정
GCP에서 방화벽 규칙을 추가하여 EKS 클러스터의 IP 범위에서 오는 트래픽을 허용합니다.
gcloud compute firewall-rules create allow-eks \
--allow tcp:80,tcp:443 \
--source-ranges <EKS_POD_IP_RANGE> \
--target-tags <YOUR_GKE_INSTANCE_TAG>
Helm을 통한 애플리케이션 배포
이제 멀티 클라우드 환경에서 애플리케이션을 배포해 보겠습니다. 여기서는 Helm을 사용하여 간단한 웹 애플리케이션을 배포합니다.
- Helm 설치
- Helm 차트 생성
- 애플리케이션 배포
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
helm create my-web-app
차트 디렉토리로 이동한 후, values.yaml 파일에서 설정을 수정합니다.
EKS 클러스터에 애플리케이션을 배포합니다.
helm install my-web-app ./my-web-app
GKE 클러스터에도 동일한 방법으로 애플리케이션을 배포합니다.
helm install my-web-app ./my-web-app
모니터링 및 로깅
멀티 클라우드 환경에서는 모니터링과 로깅이 중요합니다. Prometheus와 Grafana를 설치하여 클러스터의 상태를 모니터링할 수 있습니다. Helm을 사용하여 쉽게 설치할 수 있습니다.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/prometheus
# Grafana 설치
helm install grafana grafana/grafana
이제 Grafana 대시보드를 통해 클러스터의 상태를 실시간으로 모니터링할 수 있습니다.
마무리
이번 튜토리얼에서는 AWS EKS와 GCP GKE를 활용한 멀티 클라우드 인프라 구축 방법을 살펴보았습니다. Kubernetes를 통해 다양한 클라우드 환경을 통합하고 운영할 수 있는 방법을 익혔습니다. 멀티 클라우드 환경은 애플리케이션의 유연성을 높이고, 다양한 클라우드 제공업체의 장점을 최대한 활용할 수 있는 훌륭한 전략입니다. 이제 여러분의 애플리케이션을 멀티 클라우드 환경에서 더욱 안전하고 효율적으로 운영해보세요!