엔터프라이즈급 프로덕션 GKE 클러스터 및 워크로드

프로덕션에 최적화된 고보안 Google Kubernetes Engine (GKE) 클러스터 및 워크로드를 만듭니다. 이 가이드에서는 프로덕션 웹 애플리케이션을 배포하는 데 사용할 수 있는 다음 템플릿을 설명합니다.

  • 엔터프라이즈급 프로덕션 GKE 클러스터 템플릿: 프로덕션 애플리케이션에 필요한 기본 인프라를 만듭니다. 이 템플릿은 무결성, 고급 네트워킹, 재해 복구에 최적화된 보안 비공개 GKE 클러스터를 설정합니다.

  • 엔터프라이즈급 프로덕션 GKE 워크로드 (미리보기): 고가용성 상태 비저장 웹 애플리케이션의 구성이 포함된 Helm 차트를 배포합니다. 워크로드는 보안, 안정성, 서비스 연속성을 강화하도록 구성됩니다.

예를 들어 클러스터 및 워크로드 템플릿을 배포하여 다음과 같은 비즈니스 요구사항을 해결할 수 있습니다.

비즈니스 요구 구현
글로벌 거래 플랫폼 금융 기관은 고빈도 거래를 처리하기 위해 최대 가동시간, 엄격한 보안, 감사 가능한 규정 준수를 갖춘 짧은 지연 시간의 전 세계적으로 분산된 거래 플랫폼이 필요합니다. 고급 네트워킹을 사용하는 전 세계적으로 분산된 멀티 리전 클러스터를 사용하여 매우 짧은 지연 시간과 복원력을 보장합니다. 데이터 보호 및 규정 준수를 위해 강력한 네트워크 정책, 비공개 클러스터 구성, 고급 보안 기능을 구현합니다.
멀티 테넌트 SaaS 플랫폼 서비스형 소프트웨어 (SaaS) 제공업체는 수천 명의 엔터프라이즈 고객을 위해 확장성이 높고 안전하며 비용이 최적화된 플랫폼을 호스팅해야 하며, 엄격한 테넌트 격리, 동적 리소스 할당, 다운타임 없는 새로운 기능의 지속적 배포가 필요합니다. 강력한 네임스페이스 격리, 네트워크 세분화, 할당량 관리를 갖춘 멀티 테넌트 클러스터를 사용하여 테넌트 간의 공정한 리소스 공유와 보안을 보장합니다.
중요한 작업의 실시간 추론 조직은 미션 크리티컬 사기 감지 애플리케이션에서 실시간 추론을 위해 AI/ML 모델을 배포해야 하며, 매우 짧은 지연 시간, 높은 처리량, 완전한 감사 가능성으로 새로운 모델 버전에 빠르게 적응할 수 있는 기능이 필요합니다. AI 추론을 위한 특수 노드 풀로 클러스터를 구성합니다. 짧은 지연 시간의 네트워크 연결을 보장하고 추론 엔드포인트로의 효율적인 트래픽 라우팅을 사용 설정합니다.

아키텍처

다음 이미지는 템플릿의 구성요소와 연결을 보여줍니다.

디자인 캔버스에서 노드 풀에 연결된 클러스터

다음은 이 템플릿의 구성요소 구성을 설명합니다.

  • GKE Standard 클러스터: 워크로드가 실행되는 클러스터입니다.

    다음 표에서는 이 템플릿의 클러스터 구성을 설명합니다.

    구성 목적
    location: us-central1 지리적 경계 내에서 데이터 지역성 및 규정 준수를 보장합니다. 리전 내의 멀티 영역 설정은 고가용성을 제공합니다.
    network: projects/PROJECT_ID/global/networks/enterprise-vpc 일반적으로 네트워크 세분화 및 연결을 위해 설계된 기존 VPC를 지정합니다.
    subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnet 일반적으로 적절한 IP 할당 및 네트워크 격리로 설계된 VPC의 클러스터에 대한 서브네트워크를 지정합니다.
    master_authorized_networks_config: [{"cidr_block": "10.0.0.0/8", "display_name": "Internal Network"}] 신뢰할 수 있는 특정 IP CIDR 블록으로 컨트롤 플레인 엔드포인트에 대한 액세스를 제한합니다. 이렇게 하면 클러스터 관리 API에 대한 무단 액세스를 방지할 수 있습니다.
    private_cluster_config.enable_private_endpoint: true 컨트롤 플레인은 VPC 또는 승인된 네트워크 내의 내부 IP 주소만 사용하여 액세스할 수 있도록 보장합니다. 이렇게 하면 공개 노출을 삭제하여 보안이 강화됩니다.
    private_cluster_config.enable_private_nodes: true 모든 작업자 노드에 비공개 IP 주소만 있도록 보장하여 공개 인터넷에서 격리하고 공격 노출 영역을 줄입니다.
    release_channel: STABLE 예측 가능하고 철저히 테스트된 업데이트는 프로덕션 환경에서 안정성을 유지합니다.
    network_policy.enabled: true 보안 및 마이크로 세분화를 강화하기 위해 포드 간 통신을 제어하는 Kubernetes 네트워크 정책을 사용 설정합니다.
    binary_authorization: true 배포 정책을 적용하여 신뢰할 수 있고 서명된 컨테이너 이미지만 클러스터에서 실행할 수 있도록 보장합니다.
    database_encryption: {"state": "ENCRYPTED_WITH_CMEK", "key_name": "projects/PROJECT_ID/locations/us-central1/keyRings/gke-keyring/cryptoKeys/gke-etcd-key"} 고객 관리 암호화 키 (CMEK)는 데이터베이스를 암호화하여 데이터 보안을 제공하고 규정 준수 요구사항을 충족합니다.
    workload_identity_config: {"enabled": true} Kubernetes 서비스 계정이 서비스 계정으로 작동하도록 허용하여 IAM을 사용하여 리소스에 대한 세분화된 보안 액세스를 사용 설정합니다. Google Cloud
    logging_configmonitoring_config{"component_config": {"enable_components": ["SYSTEM_COMPONENTS", "WORKLOADS"]}}로 설정됩니다. Cloud Logging 및 Cloud Monitoring과 통합되어 프로덕션 워크로드에 대한 포괄적인 관측 가능성, 감사, 알림을 보장합니다.
    maintenance_policy: {"daily_maintenance_window": {"start_time": "03:00"}, "recurring_window": {"start_time": "00:00", "end_time": "04:00", "recurrence": "FREQ=WEEKLY;BYDAY=SAT,SUN"}} 유지보수 기간은 GKE가 자동 업그레이드를 수행하는 시점을 제어하여 중요한 애플리케이션의 중단을 최소화합니다.
    enable_shielded_nodes: true 보안 GKE 노드는 보안 부팅 및 무결성 모니터링과 같은 보안 기능을 제공하여 루트킷 및 부팅 수준 멀웨어로부터 보호합니다.
    gateway_api_config: {"channel": "CHANNEL_STANDARD"} 엔터프라이즈 애플리케이션의 복잡한 라우팅, 부하 분산, API 관리를 위한 고급 트래픽 관리입니다.
    security_posture_config: {"mode": "ENTERPRISE", "vulnerability_mode": "VULNERABILITY_ENTERPRISE"} 취약점 스캔 및 정책 적용을 포함한 고급 보안 상태 관리입니다.
  • GKE 노드 풀: 애플리케이션의 컨테이너를 실행하는 작업자 노드 그룹입니다.

    다음 표에서는 이 템플릿의 노드 풀 구성을 설명합니다.

    구성 목적
    location: us-central1. 이 노드 풀이 생성되는 리전을 지정합니다. 클러스터의 위치와 마찬가지로 노드 풀 리소스가 단일 지리적 영역에 있도록 보장합니다.
    autoscaling: {"max_node_count":3, "min_node_count":1}. 이 노드 풀의 클러스터 자동 확장 처리기를 구성합니다. 노드 풀이 항상 하나 이상의 노드를 유지하도록 보장하고 비용과 리소스 소비를 제어하기 위해 상한을 3개의 노드로 설정합니다.
    node_config: {"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}}. 이 풀 내의 노드 구성을 그룹화합니다. 머신 유형은 범용 워크로드에 적합한 CPU와 메모리의 균형입니다. 서비스 계정에 부여된 액세스를 정의합니다. 보안 VM 인스턴스에 보안 부팅을 사용 설정하여 부팅 수준 멀웨어로부터 보호합니다.

Helm 차트 구성

다음 표에는 GKE에서 기본 웹 애플리케이션을 배포하고 확장하도록 맞춤설정된 Helm 차트 구성이 나와 있습니다.

구성 목적
replicaCount: 3 애플리케이션의 초기 수준의 중복성과 기본 고가용성을 설정하기 위해 3개의 초기 복제본을 만듭니다.
image.repository: gcr.io/google-samples/hello-app 기본 웹 서버 Docker 이미지를 자리표시자로 사용합니다.
resources.requests: {"cpu": "100m", "memory": "128Mi"} 각 포드에 예약된 최소 CPU 및 메모리 양을 지정하여 사용 가능한 리소스와 효율적인 예약을 보장합니다.
resources.limits: {"cpu": "250m", "memory": "256Mi"} 각 포드에 예약된 최대 CPU 및 메모리 양을 지정하여 단일 포드의 리소스 독점을 방지합니다.
networkPolicy.enabled: true 애플리케이션에 Kubernetes 네트워크 정책을 활성화하여 포드가 서로 그리고 다른 네트워크 엔드포인트와 통신하는 방법에 대한 규칙을 정의하고 네트워크 세분화 및 격리를 적용할 수 있습니다.
service: {"type": "ClusterIP", "port": 80} 표준 HTTP 포트에서 클러스터 내의 내부 액세스를 위한 서비스를 구성합니다.
pdb: {"enabled": true, "minAvailable": 1} 자발적 중단 중에 하나 이상의 복제본이 계속 사용 가능하도록 포드 중단 예산을 사용 설정하여 고가용성을 유지합니다.

웹 애플리케이션 만들기

엔터프라이즈급 프로덕션 GKE 클러스터 및 워크로드 템플릿을 사용하여 웹 애플리케이션을 배포합니다.

웹 인프라 배포

엔터프라이즈급 프로덕션 GKE 클러스터 템플릿을 구성하고 배포하여 웹 워크로드가 실행되는 기본 인프라를 만듭니다.

  1. 복제 및 배포하여 엔터프라이즈급 프로덕션 GKE 클러스터 템플릿을 애플리케이션으로 사용합니다.

    선택한 배포 프로젝트에 GKE 클러스터가 생성됩니다.

  2. 구성요소를 구성합니다. 자세한 내용은 다음을 참조하세요.

  3. 배포 를 클릭합니다. 몇 분 후 애플리케이션이 배포됩니다.

  4. 애플리케이션 세부정보 패널에서 출력 탭을 클릭합니다.

  5. 애플리케이션의 cluster_id 를 확인합니다. Helm 차트를 배포할 때 이 정보를 사용합니다.

웹 워크로드 배포

엔터프라이즈급 프로덕션 GKE 워크로드 템플릿을 사용하여 만든 클러스터에 웹 워크로드를 배포합니다. 웹 워크로드 구성이 포함된 Helm 차트를 배포합니다.

  1. Google 카탈로그 페이지의 엔터프라이즈급 프로덕션 GKE 워크로드 템플릿에서 새 애플리케이션 만들기 를 클릭합니다.

  2. 이름 필드에 애플리케이션의 고유한 이름을 입력합니다.

  3. GKE 배포 대상 영역에서 다음을 수행합니다.

    1. 프로젝트 목록에서 엔터프라이즈급 프로덕션 GKE 클러스터 애플리케이션에서 GKE 클러스터를 배포한 프로젝트를 선택합니다.

    2. 리전 목록에서 GKE 클러스터를 배포한 리전을 선택합니다.

    3. 클러스터 목록에서 배포된 GKE 클러스터를 선택합니다.

    4. 네임스페이스 목록에서 워크로드의 네임스페이스를 입력합니다. 이름을 변경하지 않은 경우 default를 입력합니다.

    5. 애플리케이션 만들기 를 클릭합니다.

    애플리케이션이 생성되고 구성 파일이 표시됩니다.

  4. Helm 차트 패널에서 다음을 수행합니다.

    1. 구성 세부정보를 검토합니다.

    2. (선택사항) 고유한 요구사항을 충족하도록 구성을 맞춤설정합니다.

    3. Helm 차트를 클러스터에 배포하려면 배포 를 클릭합니다.

      자세한 단계는 애플리케이션 배포를 참조하세요.

    몇 분 후 Helm 차트 구성이 GKE 클러스터에 배포됩니다.

다음 단계