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 클러스터의 보안 그룹을 찾습니다. 다음과 같은 인바운드 규칙을 추가합니다.

  • 소스 유형: Custom
  • 소스: GKE 클러스터의 외부 IP 주소
  • 프로토콜: TCP
  • 포트 범위: 80, 443 (HTTP, HTTPS)

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을 사용하여 간단한 웹 애플리케이션을 배포합니다.

  1. Helm 설치
  2. curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
  3. Helm 차트 생성
  4. helm create my-web-app

    차트 디렉토리로 이동한 후, values.yaml 파일에서 설정을 수정합니다.

  5. 애플리케이션 배포

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를 통해 다양한 클라우드 환경을 통합하고 운영할 수 있는 방법을 익혔습니다. 멀티 클라우드 환경은 애플리케이션의 유연성을 높이고, 다양한 클라우드 제공업체의 장점을 최대한 활용할 수 있는 훌륭한 전략입니다. 이제 여러분의 애플리케이션을 멀티 클라우드 환경에서 더욱 안전하고 효율적으로 운영해보세요!