아키텍처

Last reviewed 2024-04-19 UTC

다음은 단일 환경의 청사진에 의해 배포된 고급 아키텍처를 보여주는 다이어그램입니다. 이 아키텍처는 프로덕션, 비프로덕션, 개발 등 세 가지 개별 환경에 배포됩니다.

청사진 아키텍처.

이 다이어그램에는 다음이 포함됩니다.

  • Cloud Load Balancing은 리전 간 애플리케이션 트래픽을 Kubernetes 서비스 객체에 분산합니다. 각 서비스 뒤에는 관련 포드의 논리적 그룹이 있습니다.
  • Anthos Service Mesh를 통해 Kubernetes 서비스가 서로 통신할 수 있습니다.
  • Kubernetes 서비스는 Kubernetes 네임스페이스로 표현되는 테넌트로 그룹화됩니다. 테넌트는 클러스터에서 작동하는 여러 사용자 및 워크로드를 나타내는 추상화이며 액세스 제어를 위해 별도의 RBAC가 있습니다. 또한 각 테넌트에는 데이터베이스, 스토리지 버킷, Pub/Sub 구독과 같은 테넌트별 클라우드 리소스를 위한 자체 프로젝트가 있습니다.
  • 피어 서비스와 클라우드 리소스에 액세스하기 위한 자체 ID가 있는 네임스페이스. ID는 Fleet 워크로드 아이덴티티로 인해 서로 다른 클러스터의 동일한 네임스페이스에서 일관성을 가집니다. 각 환경에는 별도의 워크로드 아이덴티티 풀이 있어 환경 간 권한 에스컬레이션을 완화할 수 있습니다.
  • 각 서비스에는 해당 서비스를 빌드하고 배포하는 전용 파이프라인이 있습니다. 동일한 파이프라인을 사용하여 서비스를 개발 환경에 배포한 후 서비스를 비프로덕션 환경에 배포하고 마지막으로 서비스를 프로덕션 환경에 배포합니다.

개발자 플랫폼의 주요 아키텍처 결정사항

다음 표에서는 청사진이 구현하는 아키텍처 결정을 설명합니다.

결정 영역 결정 이유

배포 원형

여러 리전에 배포합니다.

리전 서비스 중단 시 애플리케이션 가용성을 허용합니다.

조직 아키텍처

엔터프라이즈 기반 청사진 위에 배포합니다.

기반에서 제공하는 조직 구조 및 보안 제어를 사용합니다.

기반에 설정된 세 가지 환경 폴더인 development, nonproduction, production을 사용합니다.

액세스 제어가 서로 다른 환경에 대해 격리를 제공합니다.

개발자 플랫폼 클러스터 아키텍처

애플리케이션을 컨테이너로 패키징 및 배포합니다.

책임 분리, 효율적인 운영, 애플리케이션 이동성을 지원합니다.

GKE 클러스터에서 애플리케이션을 실행합니다.

컨테이너를 개척한 회사가 빌드한 관리형 컨테이너 서비스를 사용합니다.

활성-활성 구성에서 애플리케이션 컨테이너를 복제하고 실행합니다.

가용성이 높아지고 빠른 점진적 출시를 통해 개발 속도를 향상시킬 수 있습니다.

서로 다른 두 리전에 있는 두 개의 GKE 클러스터로 프로덕션 환경을 프로비저닝합니다.

단일 클라우드 리전보다 높은 가용성을 달성합니다.

서로 다른 두 리전에 있는 두 개의 GKE 클러스터로 비프로덕션 환경을 프로비저닝합니다.

프로덕션에 배포하기 전에 부하 분산기와 같은 리전 간 설정에 대한 변경을 스테이징합니다.

단일 GKE 클러스터 인스턴스로 개발 환경을 프로비저닝합니다.

비용 절감에 도움이 됩니다.

각 GKE 클러스터에 가용성이 높은 제어 영역을 구성합니다.

업그레이드 및 크기 조절 중에 클러스터 제어 영역을 사용할 수 있는지 확인합니다.

각 GKE 클러스터의 네임스페이스, 서비스, ID에서 동일성 개념을 사용합니다.

서로 다른 클러스터에서 이름이 같은 Kubernetes 객체가 동일한 것으로 취급되는지 확인합니다. 이 정규화를 수행하여 Fleet 리소스를 더 쉽게 관리할 수 있습니다.

제어 영역에 대한 Private Service Connect 액세스비공개 노드 풀을 통해 GKE 클러스터에 비공개 IP 주소 공간을 사용 설정합니다.

스캔 공격으로부터 Kubernetes 클러스터 API를 보호합니다.

Connect Gateway를 통해 GKE 클러스터에 대한 관리 액세스를 사용 설정합니다.

하나의 명령어를 사용하여 여러 클러스터에 액세스할 수 있도록 사용자 인증 정보를 가져옵니다. 그룹 및 서드 파티 ID 공급업체를 사용하여 클러스터 액세스를 관리합니다.

Cloud NAT를 사용하여 공개 IP 주소가 있는 리소스에 대한 액세스 권한을 GKE 포드에 제공합니다.

포드가 인터넷에 직접 노출되지 않지만 인터넷 연결 리소스에 계속 액세스할 수 있으므로 클러스터의 전체 보안 상태를 개선합니다.

Container-Optimized OS보안 GKE 노드를 사용하도록 노드를 구성합니다.

노드의 공격 표면을 제한합니다.

각 환경을 GKE Fleet와 연결합니다.

GKE 클러스터 집합을 하나의 단위로 관리할 수 있도록 허용합니다.

기반 인프라 파이프라인을 사용하여 애플리케이션 팩토리, Fleet 범위 파이프라인, 멀티 테넌트 인프라 파이프라인을 배포합니다.

애플리케이션 인프라를 배포하기 위한 제어 가능하고 감사 및 반복 가능한 메커니즘을 제공합니다.

GKE Enterprise 구성 및 정책 관리 기능을 사용하여 GKE 클러스터를 구성합니다.

GKE 클러스터에 코드형 구성을 허용하는 서비스를 제공합니다.

애플리케이션 팩토리를 사용하여 청사진에 사용된 애플리케이션 CI/CD 파이프라인을 배포합니다.

반복 가능한 패턴을 제공하여 애플리케이션 파이프라인을 더 쉽게 배포합니다.

애플리케이션 CI/CD 파이프라인을 사용하여 청사진 애플리케이션 구성요소를 빌드하고 배포합니다.

애플리케이션을 배포하는 제어 가능하고 감사 및 반복 가능한 메커니즘을 제공합니다.

Cloud Build, Cloud Deploy, Artifact Registry를 사용하도록 애플리케이션 CI/CD 파이프라인을 구성합니다.

관리형 빌드 및 배포 서비스를 사용하여 보안, 확장성, 단순성을 최적화합니다.

환경 간에 변경할 수 없는 컨테이너를 사용하고 Binary Authorization으로 컨테이너를 서명합니다.

명확한 코드 출처를 제공하고 코드가 환경 전반에서 테스트되었는지 확인합니다.

Cloud LoggingCloud Monitoring이 포함된 Google Cloud Observability를 사용합니다.

Google Cloud의 통합 관리형 서비스를 사용하여 작업을 간소화합니다.

Container Threat Detection(Security Command Center의 서비스)을 사용 설정하여 컨테이너의 무결성을 모니터링합니다.

컨테이너를 지속적으로 모니터링하여 보안을 강화하는 관리형 서비스를 사용합니다.

GKE용 Google 그룹스를 기반으로 하는 Kubernetes 역할 기반 액세스 제어(RBAC)로 GKE 클러스터에 대한 액세스를 제어합니다.

액세스 제어를 Google Cloud ID에 연결하여 보안을 강화합니다.

서비스 아키텍처

Kubernetes 서비스에 고유한 Kubernetes 서비스 계정을 사용합니다. 이 계정은 워크로드 아이덴티티를 사용하여 IAM 서비스 계정 역할을 합니다.

각 서비스에 제공해야 하는 권한을 최소화하여 보안을 강화합니다.

GKE Gateway API를 통해 서비스를 노출합니다.

인그레스 규칙 및 부하 분산 구성 관리에 대한 선언적 기반 및 리소스 기반 접근 방식을 제공하여 구성 관리를 간소화합니다.

Certificate Authority Service와 함께 Anthos Service Mesh를 사용하여 서비스를 분산 서비스로 실행합니다.

서비스 간 인증을 시행하여 보안을 강화하고 비정상 서비스에서 다른 곳으로 트래픽을 리디렉션하여 자동 내결함성을 제공합니다.

PostgreSQL용 AlloyDB에 대해 리전 간 복제를 사용합니다.

데이터베이스 레이어에서 고가용성을 제공합니다.

네트워크 아키텍처

공유 VPC 인스턴스는 각 환경에서 구성되고 GKE 클러스터는 서비스 프로젝트에 생성됩니다.

공유 VPC는 환경 분리를 유지하면서 중앙 집중식 네트워크 구성 관리를 제공합니다.

멀티 클러스터, 멀티 리전 구성에서 Cloud Load Balancing을 사용합니다.

고가용성과 짧은 지연 시간 서비스를 위해 리전화된 GKE 클러스터에 액세스할 수 있는 단일 애니캐스트 IP 주소를 제공합니다.

서비스에 대한 클라이언트 액세스에 HTTPS 연결을 사용합니다. 모든 클라이언트 HTTP 요청을 HTTPS로 리디렉션합니다.

전송 중인 민감한 정보를 보호하고 중간자 공격을 방지하는 데 도움을 줍니다.

인증서 관리자를 사용하여 공개 인증서를 관리합니다.

통합된 방식으로 인증서를 관리합니다.

Google Cloud Armor로 웹 인터페이스를 보호합니다.

일반적인 웹 애플리케이션 취약점 및 볼륨 공격으로부터 보호하여 보안을 강화합니다.

결정은 청사진에 따라 다를 수 있습니다. 대안에 대한 자세한 내용은 기본 권장사항의 대안을 참조하세요.

다음 단계