Kubernetes 서비스는 포드 집합을 단일 항목으로 노출할 수 있는 추상화입니다. 서비스는 Kubernetes 클러스터에서 컨테이너화된 애플리케이션을 노출하고 관리하기 위한 기본 구성요소입니다. 이 청사진의 서비스는 네임스페이스, ID, 서비스 노출, 서비스 간 통신을 고려하여 표준화된 방식으로 설계되었습니다.
네임스페이스
각 네임스페이스에는 포드, 서비스, 배포와 같은 자체 리소스 집합이 있습니다. 네임스페이스를 사용하면 애플리케이션을 구성하고 서로 격리할 수 있습니다. 청사진은 네임스페이스를 사용하여 서비스를 목적에 따라 그룹화합니다. 예를 들어 모든 프런트엔드 서비스의 네임스페이스와 백엔드 서비스의 네임스페이스를 만들 수 있습니다. 이 그룹화를 사용하면 서비스를 쉽게 관리하고 액세스를 제어할 수 있습니다.
서비스 노출
서비스는 GKE Gateway Controller를 통해 인터넷에 노출됩니다. GKE Gateway Controller는 멀티 클러스터, 멀티 리전 구성에서 Cloud Load Balancing을 사용하여 부하 분산기를 만듭니다. Cloud Load Balancing은 Google의 네트워크 인프라를 사용하여 서비스에 대해 지연 시간이 짧은 액세스를 허용하는 애니캐스트 IP 주소를 서비스에 제공합니다. 서비스에 대한 클라이언트 액세스는 HTTPS 연결을 통해 수행되며 클라이언트 HTTP 요청은 HTTPS로 리디렉션됩니다. 부하 분산기는 인증서 관리자를 사용하여 공개 인증서를 관리합니다. 서비스는 Cloud Armor 및 Cloud CDN에 의해 추가로 보호됩니다. 다음 다이어그램은 서비스가 인터넷에 노출되는 방식을 보여줍니다.
Anthos Service Mesh
청사진은 서비스 간의 모든 통신에 상호 인증 및 승인을 위해 Anthos Service Mesh를 사용합니다. 이 배포의 경우 Anthos Service Mesh는 CA Service를 사용하여 TLS 인증서를 발급해 피어를 인증하고 승인된 클라이언트만 서비스에 액세스할 수 있도록 지원합니다. 인증에 상호 TLS(mTLS)를 사용하면 서비스 간 모든 TCP 통신이 전송 중에 암호화되도록 할 수 있습니다. 서비스 메시에 대한 서비스 인그레스 트래픽의 경우 청사진은 GKE Gateway Controller를 사용합니다.
분산 서비스
분산 서비스는 여러 클러스터에서 동일한 네임스페이스로 실행되는 Kubernetes 서비스를 추상화한 것입니다. 하나 이상의 GKE 클러스터를 사용할 수 없는 경우에도 나머지 정상 클러스터가 로드를 제공할 수 있는 한 분산 서비스는 작동 가능한 상태로 유지됩니다. Anthos Service Mesh는 클러스터 간에 분산 서비스를 만들기 위해 환경의 모든 클러스터에 있는 애플리케이션 서비스 간에 레이어 4 및 레이어 7 연결을 제공합니다. 이 연결을 통해 여러 클러스터의 Kubernetes 서비스가 단일 논리 서비스로 작동할 수 있습니다. 클러스터 간 트래픽은 리전 장애로 인해 리전 내 트래픽이 발생할 수 없는 경우에만 다른 리전으로 라우팅됩니다.
서비스 ID
GKE에서 실행되는 서비스에는 이와 연결된 ID가 있습니다. 청사진은 Kubernetes 서비스 계정이 Google Cloud 서비스 계정 역할을 하도록 워크로드 아이덴티티를 구성합니다. 동일한 환경 내에 있는 분산 서비스의 각 인스턴스에는 권한 관리를 간소화하는 공통 ID가 있습니다. Google Cloud API에 액세스할 때 Kubernetes 서비스 계정으로 실행되는 서비스는 Google Cloud 서비스 계정으로 자동 인증됩니다. 각 서비스에는 서비스 작동에 필요한 최소한의 권한만 있습니다.
다음 단계
- 로깅 및 모니터링(이 시리즈의 다음 문서) 읽어보기