섹션 10: Setting Up Kubernetes on Google Cloud

쌀과자AI·2025년 8월 26일

섹션 10 요약: Google Cloud에서 Kubernetes(GKE) 세팅 및 애플리케이션 배포

1. GKE 클러스터 개요

  • *Google Kubernetes Engine(GKE)**는 구글 클라우드에서 관리되는 쿠버네티스 서비스.
  • 이번 섹션의 목적: ChatGPT 애플리케이션을 GKE에 배포하는 것.
  • 이를 위해 다음 단계가 필요함:
    1. Google Cloud 계정 생성
    2. Google Cloud CLI 설치 및 인증
    3. GKE 클러스터 생성
    4. 클러스터에 배포 및 서비스 노출

2. Google Cloud 계정 생성

  • GCP 계정 신규 가입 시 $300 무료 크레딧 제공(60~90일 유효).
  • 무료 기간 종료 후 자동 과금되지 않음, 사용자가 직접 유료 전환을 승인해야 함.
  • 계정 생성 후 Billing 계정을 설정하면 GCP 리소스 사용 가능 .

3. Google Cloud CLI (gcloud) 설치 및 설정

  • GCP Console에서 프로젝트 ID 확인 → 기본 Project로 설정 필요.
  • gcloud auth login 실행 후 브라우저 인증 → 로컬 CLI와 GCP 계정 연동.
  • 필요한 경우 gcloud config set project <PROJECT_ID>로 프로젝트 지정.
  • OS 별 설치:
    • MacOS: Homebrew 또는 패키지 설치
    • Windows: 설치 프로그램 이용

4. GKE 클러스터 생성

  • CLI 명령어:
    gcloud container clusters create my-cluster \
      --num-nodes=3 \
      --zone=us-central1-a
  • 생성 후 상태 확인:
    kubectl get nodes
  • 지정한 개수(예: 3개)의 워커 노드가 정상적으로 올라와야 함.
  • 워커 노드는 실제로는 GCP VM 인스턴스로 할당됨 .

5. 애플리케이션 배포 및 서비스 설정

  • 배포파일(deploy.yaml) 사용:
    • Deployment: ChatGPT 컨테이너 이미지 지정
    • Secret: OpenAI API Key를 환경 변수로 전달
    • Service: LoadBalancer 타입 지정 → 외부에서 접근 가능
  • 주요 명령어:
    kubectl create secret generic openai-secret \
      --from-literal=API_KEY=<YOUR_KEY>
    
    kubectl apply -f deploy.yaml
    kubectl get pods
    kubectl get svc
  • 결과:
    • Pod이 Running 상태로 전환됨
    • Service에 External IP 할당 → 외부에서 ChatGPT 앱 접속 가능
    • GCP에서 Load Balancer 자동 생성 → 외부 요청을 워커 노드로 분산

6. MacOS 환경에서 주의사항 (Docker 빌드)

  • MacOS는 기본적으로 ARM64 아키텍처를 사용 → GKE와 호환 문제 발생 가능.
  • 해결법:
    • Dockerfile 빌드 시 -platform=linux/amd64 지정
    • 예시:
      docker buildx build \
        --platform=linux/amd64 \
        -t <username>/chatgpt-project:v3 .
      docker push <username>/chatgpt-project:v3
  • 이후 deploy.yaml에서 이미지 경로 업데이트 후 재배포.
  • 이렇게 하면 MacOS/Windows 환경 모두에서 문제없이 GKE에 배포 가능 .

7. 실습 구성요소 정리

  • 코드/설정 파일:
    • main.py: FastAPI 기반 ChatGPT 서버
    • requirements.txt: openai, fastapi, uvicorn 등 의존성
    • deploy.yaml: Kubernetes 배포 및 LoadBalancer 서비스 정의
    • Dockerfile: 컨테이너 이미지 빌드 설정
    • config.py: 환경변수/설정 관리
  • 스토리 예제 파일(story.txt)을 이용해 모델 동작 테스트 가능 .

✅ 핵심 정리

  • Google Cloud + GKE 환경 준비 → 계정, CLI, 프로젝트 설정.
  • GKE 클러스터 생성 후 kubectl 연동 → 노드/Pod 관리 가능.
  • Secret + deploy.yaml + LoadBalancer 서비스 → ChatGPT 앱을 인터넷에 공개.
  • MacOS에서 반드시 플랫폼 지정 필요 (linux/amd64) → 빌드 및 배포 시 호환성 확보.

📘 섹션 10 기반 연습문제

🔹 난이도: 하

문제 1

Google Cloud 신규 계정을 생성하면 기본적으로 제공되는 혜택으로 옳은 것은?

① $500 무료 크레딧 (30일간)

② $300 무료 크레딧 (60~90일간)

③ $100 무료 크레딧 (영구 제공)

④ 무료 크레딧은 제공되지 않는다

정답:

해설: 신규 GCP 계정은 $300 무료 크레딧을 60~90일간 제공하며, 무료 기간이 끝나도 자동으로 과금되지 않고 사용자가 유료 전환을 승인해야 한다 .


문제 2

다음 중 GCP CLI(gcloud)를 설치 후 실행하는 기본 인증 명령어는 무엇인가?

① kubectl auth login

② gcloud login

③ gcloud auth login

④ gke auth connect

정답:

해설: gcloud CLI 설치 후 브라우저 인증을 통해 계정을 연결하는 명령어는 gcloud auth login이다 .


🔹 난이도: 중

문제 3

다음 중 GKE 클러스터 생성 명령어에 대한 설명으로 옳지 않은 것은?

gcloud container clusters create my-cluster \
  --num-nodes=3 \
  --zone=us-central1-a

① 클러스터 이름은 my-cluster로 지정된다.

② 워커 노드는 3개가 생성된다.

③ 생성된 클러스터는 us-central1-a 존에 위치한다.

④ 이 명령어는 AWS EKS 클러스터를 생성한다.

정답:

해설: 해당 명령어는 Google Cloud(GKE) 전용 클러스터 생성 명령어이며, AWS EKS와는 관련이 없다 .


문제 4

쿠버네티스에서 외부 인터넷 접근이 가능하도록 하는 Service 타입은 무엇인가?

① ClusterIP

② NodePort

③ LoadBalancer

④ ExternalName

정답:

해설: GKE에서 외부에서 접속 가능한 서비스는 LoadBalancer 타입으로 설정해야 하며, GCP의 Cloud Controller Manager가 자동으로 Load Balancer를 생성한다 .


🔹 난이도: 상

문제 5

다음 deploy.yaml 설정을 참고하여, Pod 내에서 OpenAI API Key를 불러오는 방식으로 옳은 것은?

env:
- name: OPENAI_API
  valueFrom:
    secretKeyRef:
      name: openai-secret
      key: API_KEY

① 환경변수 OPENAI_API에 직접 문자열로 키를 저장한다.

② ConfigMap에서 API Key를 가져온다.

③ Secret 리소스 openai-secret의 API_KEY 값을 참조한다.

④ 사용자 입력 시마다 키를 요구한다.

정답:

해설: 위 설정은 Kubernetes Secret에 저장된 API Key를 Pod 내 환경변수(OPENAI_API)로 주입하는 방식이다 .


문제 6

MacOS에서 Docker 이미지를 빌드하여 GKE에 배포할 때 발생할 수 있는 문제와 해결책으로 올바른 것은?

① MacOS는 기본적으로 amd64 아키텍처를 사용하므로 문제 없음.

② MacOS는 ARM64 기반이므로 --platform=linux/amd64 옵션을 명시해야 한다.

③ Windows에서는 문제가 발생하므로 Linux 환경에서만 빌드해야 한다.

④ Google Cloud CLI가 자동으로 아키텍처를 변환한다.

정답:

해설: MacOS(M1/M2 칩)는 ARM64 아키텍처를 사용하기 때문에, Docker 빌드 시 --platform=linux/amd64를 명시해야 GKE 환경과 호환된다 .


profile
AI에 관심이 많은 23살 대학생입니다.

0개의 댓글