프로덕션에 최적화된 보안 수준이 높은 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: trueVPC 또는 승인된 네트워크 내에서 내부 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 서비스 계정이 Google Cloud 서비스 계정으로 작동하여 IAM을 사용하여 리소스에 세부적이고 안전하게 액세스할 수 있도록 지원합니다. logging_config및monitoring_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 클러스터 템플릿을 구성하고 배포하여 웹 워크로드가 실행되는 기본 인프라를 만듭니다.
엔터프라이즈급 프로덕션 GKE 클러스터 템플릿을 애플리케이션으로 복제 및 배포합니다.
선택한 배포 프로젝트에 GKE 클러스터가 생성됩니다.
구성요소를 구성합니다. 자세한 내용은 다음을 참조하세요.
배포를 클릭합니다. 몇 분 후에 애플리케이션이 배포됩니다.
애플리케이션 세부정보 패널에서 출력 탭을 클릭합니다.
애플리케이션의 cluster_id를 확인합니다. Helm 차트를 배포할 때 이 정보를 사용합니다.
웹 워크로드 배포
엔터프라이즈급 프로덕션 GKE 워크로드 템플릿을 사용하여 생성한 클러스터에 웹 워크로드를 배포합니다. 웹 워크로드 구성이 포함된 Helm 차트를 배포합니다.
Google 카탈로그 페이지의 엔터프라이즈급 프로덕션 GKE 워크로드 템플릿에서 새 애플리케이션 만들기를 클릭합니다.
이름 필드에 애플리케이션의 고유한 이름을 입력합니다.
GKE 배포 대상 영역에서 다음을 수행합니다.
프로젝트 목록에서 엔터프라이즈급 프로덕션 GKE 클러스터 애플리케이션에서 GKE 클러스터를 배포한 프로젝트를 선택합니다.
리전 목록에서 GKE 클러스터를 배포한 리전을 선택합니다.
클러스터 목록에서 배포된 GKE 클러스터를 선택합니다.
네임스페이스 목록에서 워크로드의 네임스페이스를 입력합니다. 이름을 변경하지 않은 경우
default을 입력합니다.애플리케이션 만들기를 클릭합니다.
애플리케이션이 생성되고 구성 파일이 표시됩니다.
Helm 차트 패널에서 다음을 수행합니다.
구성 세부정보를 검토합니다.
선택사항: 고유한 요구사항에 맞게 구성을 맞춤설정합니다.
Helm 차트를 클러스터에 배포하려면 배포를 클릭합니다.
자세한 단계는 애플리케이션 배포를 참고하세요.
몇 분 후 Helm 차트 구성이 GKE 클러스터에 배포됩니다.
다음 단계
- 템플릿을 복제하고 맞춤설정하는 방법을 알아보려면 빠른 시작: Google 템플릿 맞춤설정 및 배포를 참고하세요.
- 애플리케이션 템플릿을 디자인하여 자체 구성을 정의합니다.
- Google Cloud 아키텍처 프레임워크를 사용하여 일반적인 아키텍처 권장사항을 파악합니다.