클러스터 신뢰

이 페이지에서는 마스터와 노드가 요청을 인증하는 방법을 포함하여 Google Kubernetes Engine 클러스터에서의 신뢰를 설명합니다.

클러스터 내 통신

클러스터에는 Kubernetes 구성요소 간에 통신하기 위한 많은 연결이 있습니다.

마스터-노드 간
마스터는 컨테이너를 관리할 수 있도록 노드와 통신합니다. 마스터가 노드에 요청을 보내면(예: kubectl 로그) 요청은 SSH 터널을 통해 전송되고 인증되지 않은 TLS로 추가 보호되어 무결성과 암호화를 제공합니다. 노드가 마스터에 요청을 보내면(예: kubelet에서 API 서버로) 요청은 상호 TLS를 통해 인증 및 암호화됩니다.
노드 간
노드는 특정 워크로드의 일부로 다른 노드와 통신할 수 있습니다. 노드가 다른 노드에 요청을 보내면 요청은 인증되고 연결이 Google에서 제어하는 물리적 경계를 넘으면 암호화됩니다. Kubernetes 구성요소에는 노드 간 통신이 필요하지 않습니다. 자세한 내용은 전송 중인 데이터 암호화 백서를 참조하세요.
Pod 간
Pod는 특정 워크로드의 일부로 다른 Pod와 통신할 수 있습니다. Pod가 다른 Pod에 요청을 보내면 요청은 인증 또는 암호화되지 않습니다. Kubernetes 구성요소에는 Pod 간 통신이 필요하지 않습니다. Pod 간 트래픽은 네트워크 정책을 통해 제한될 수 있으며 Istio와 같은 서비스 메시를 사용하거나 애플리케이션 레이어 암호화를 구현하여 암호화될 수 있습니다.
etcd 간
etcd 인스턴스는 업데이트된 상태를 유지하도록 다른 etcd 인스턴스와 통신할 수 있습니다. etcd 인스턴스가 다른 인스턴스에 요청을 보내면 요청은 상호 TLS를 통해 인증 및 암호화됩니다. 트래픽은 방화벽으로 보호되는 GKE 소유 네트워크를 벗어나지 않습니다.
마스터-etcd 간
이 통신은 전적으로 localhost를 통해 진행되고 인증 또는 암호화되지 않습니다.

신뢰할 수 있는 루트

GKE는 다음과 같이 구성됩니다.

  • 클러스터 루트 인증 기관(CA)은 API 서버와 kubelet 클라이언트 인증서의 유효성을 검사하는 데 사용됩니다. 즉, 마스터와 노드의 신뢰할 수 있는 루트는 동일합니다. 클러스터 노드 풀에 있는 모든 kubelet은 인증서 서명 요청을 제출하여 certificates.k8s.io API를 사용해 이 CA에 인증서를 요청할 수 있습니다.
  • 별도의 클러스터별 etcd CA는 etcd의 인증서 유효성 검사에 사용됩니다.

API 서버 및 kubelet

API 서버와 kubelet은 Kubernetes의 신뢰할 수 있는 클러스터 루트 CA를 사용합니다. GKE에서 마스터 API 인증서는 클러스터 루트 CA에서 서명됩니다. 각 클러스터는 자체 CA를 실행하므로 한 클러스터의 CA가 손상되더라도 다른 클러스터 CA는 영향을 받지 않습니다.

내부 Google 서비스가 이 CA의 루트 키를 관리하며 이 키를 내보낼 수 없습니다. 이 서비스는 각 GKE 클러스터에 있는 kubelet의 요청을 비롯한 인증서 서명 요청을 수락합니다. 클러스터의 API 서버가 손상되더라도 CA는 손상되지 않으므로 다른 클러스터는 영향을 받지 않습니다.

클러스터의 각 노드에는 클러스터 루트 CA에 인증서 서명 요청을 제출하고 kubelet 클라이언트 인증서를 가져오는 데 사용할 수 있는 공유 보안 비밀 생성 시 주입됩니다. 그런 다음 이러한 인증서는 kubelet이 API 서버에 대한 요청을 인증하는 데 사용됩니다. 메타데이터 숨김이 사용 설정되어 있지 않으면 Pod는 이 공유 보안 비밀번호에 연결될 수 있습니다.

API 서버와 kubelet 인증서는 5년간 유효하지만 사용자 인증 정보 순환을 수행하면 보다 빨리 수동으로 순환할 수 있습니다.

etcd

GKE에서는 별도의 신뢰할 수 있는 클러스터별 etcd CA를 사용합니다.

etcd CA의 루트 키는 마스터가 실행되는 각 VM의 메타데이터에 배포됩니다. 마스터 VM에서 실행되거나 이러한 VM의 컴퓨팅 메타데이터에 대한 액세스 권한이 있는 모든 코드는 이 CA로 인증서를 서명할 수 있습니다. 클러스터의 etcd가 손상되더라도 CA가 클러스터 간에 공유되지 않으므로 다른 클러스터는 영향을 받지 않습니다.

etcd 인증서는 5년간 유효합니다.

인증서 순환

모든 클러스터의 API 서버와 kubelet 인증서를 순환하려면 사용자 인증 정보 순환을 수행합니다. etcd 인증서 순환을 트리거하는 방법은 없습니다. GKE에서 순환을 관리합니다.

다음 단계