다음은 단일 환경의 청사진에 의해 배포된 고급 아키텍처를 보여주는 다이어그램입니다. 이 아키텍처는 프로덕션, 비프로덕션, 개발 등 세 가지 개별 환경에 배포됩니다.
이 다이어그램에는 다음이 포함됩니다.
- Cloud Load Balancing은 리전 간 애플리케이션 트래픽을 Kubernetes 서비스 객체에 분산합니다. 각 서비스 뒤에는 관련 포드의 논리적 그룹이 있습니다.
- Anthos Service Mesh를 통해 Kubernetes 서비스가 서로 통신할 수 있습니다.
- Kubernetes 서비스는 Kubernetes 네임스페이스로 표현되는 테넌트로 그룹화됩니다. 테넌트는 클러스터에서 작동하는 여러 사용자 및 워크로드를 나타내는 추상화이며 액세스 제어를 위해 별도의 RBAC가 있습니다. 또한 각 테넌트에는 데이터베이스, 스토리지 버킷, Pub/Sub 구독과 같은 테넌트별 클라우드 리소스를 위한 자체 프로젝트가 있습니다.
- 피어 서비스와 클라우드 리소스에 액세스하기 위한 자체 ID가 있는 네임스페이스. ID는 Fleet 워크로드 아이덴티티로 인해 서로 다른 클러스터의 동일한 네임스페이스에서 일관성을 가집니다. 각 환경에는 별도의 워크로드 아이덴티티 풀이 있어 환경 간 권한 에스컬레이션을 완화할 수 있습니다.
- 각 서비스에는 해당 서비스를 빌드하고 배포하는 전용 파이프라인이 있습니다. 동일한 파이프라인을 사용하여 서비스를 개발 환경에 배포한 후 서비스를 비프로덕션 환경에 배포하고 마지막으로 서비스를 프로덕션 환경에 배포합니다.
개발자 플랫폼의 주요 아키텍처 결정사항
다음 표에서는 청사진이 구현하는 아키텍처 결정을 설명합니다.
결정 영역 | 결정 | 이유 |
---|---|---|
여러 리전에 배포합니다. |
리전 서비스 중단 시 애플리케이션 가용성을 허용합니다. |
|
엔터프라이즈 기반 청사진 위에 배포합니다. |
기반에서 제공하는 조직 구조 및 보안 제어를 사용합니다. |
|
기반에 설정된 세 가지 환경 폴더인 |
액세스 제어가 서로 다른 환경에 대해 격리를 제공합니다. |
|
애플리케이션을 컨테이너로 패키징 및 배포합니다. |
책임 분리, 효율적인 운영, 애플리케이션 이동성을 지원합니다. |
|
GKE 클러스터에서 애플리케이션을 실행합니다. |
컨테이너를 개척한 회사가 빌드한 관리형 컨테이너 서비스를 사용합니다. |
|
활성-활성 구성에서 애플리케이션 컨테이너를 복제하고 실행합니다. |
가용성이 높아지고 빠른 점진적 출시를 통해 개발 속도를 향상시킬 수 있습니다. |
|
서로 다른 두 리전에 있는 두 개의 GKE 클러스터로 프로덕션 환경을 프로비저닝합니다. |
단일 클라우드 리전보다 높은 가용성을 달성합니다. |
|
서로 다른 두 리전에 있는 두 개의 GKE 클러스터로 비프로덕션 환경을 프로비저닝합니다. |
프로덕션에 배포하기 전에 부하 분산기와 같은 리전 간 설정에 대한 변경을 스테이징합니다. |
|
단일 GKE 클러스터 인스턴스로 개발 환경을 프로비저닝합니다. |
비용 절감에 도움이 됩니다. |
|
각 GKE 클러스터에 가용성이 높은 제어 영역을 구성합니다. |
업그레이드 및 크기 조절 중에 클러스터 제어 영역을 사용할 수 있는지 확인합니다. |
|
각 GKE 클러스터의 네임스페이스, 서비스, ID에서 동일성 개념을 사용합니다. |
서로 다른 클러스터에서 이름이 같은 Kubernetes 객체가 동일한 것으로 취급되는지 확인합니다. 이 정규화를 수행하여 Fleet 리소스를 더 쉽게 관리할 수 있습니다. |
|
제어 영역에 대한 Private Service Connect 액세스 및 비공개 노드 풀을 통해 GKE 클러스터에 비공개 IP 주소 공간을 사용 설정합니다. |
스캔 공격으로부터 Kubernetes 클러스터 API를 보호합니다. |
|
Connect Gateway를 통해 GKE 클러스터에 대한 관리 액세스를 사용 설정합니다. |
하나의 명령어를 사용하여 여러 클러스터에 액세스할 수 있도록 사용자 인증 정보를 가져옵니다. 그룹 및 서드 파티 ID 공급업체를 사용하여 클러스터 액세스를 관리합니다. |
|
포드가 인터넷에 직접 노출되지 않지만 인터넷 연결 리소스에 계속 액세스할 수 있으므로 클러스터의 전체 보안 상태를 개선합니다. |
||
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 Logging 및 Cloud 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로 웹 인터페이스를 보호합니다. |
일반적인 웹 애플리케이션 취약점 및 볼륨 공격으로부터 보호하여 보안을 강화합니다. |
결정은 청사진에 따라 다를 수 있습니다. 대안에 대한 자세한 내용은 기본 권장사항의 대안을 참조하세요.
다음 단계
- 개발자 플랫폼 제어 읽어보기(이 시리즈의 다음 문서)