This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed devops data stores -

Cells ADR 004: 셀 당 하나의 VPC, 내부 통신을 위한 개인 서비스 연결 사용

맥락

이 이슈에서 우리는 다음을 논의했습니다:

  • 하나의 VPC/서브넷에 여러 셀을 두는 것이 좋을지, 아니면 하나의 셀만 두는 것이 좋을지;
  • 셀 간 통신을 위해 VPC 피어링, 공유 VPC, 또는 Private Connect Service를 사용해야 할지에 대해 논의했습니다.

결정

여러 셀마다 하나의 VPC를 가지되, 지역별로 하나의 서브넷(내부 GKE 서브넷 제외)을 가지고, 셀 간 통신이 필요한 경우 Private Service Connect를 통해 이루어질 것으로 결정했습니다.

이 결정의 동기는 보안과 간편함에 있습니다:

  • ADR 002에서 내린 결정으로 인해 하나의 GCP 프로젝트 당 하나의 셀을 두는 것이 가능하여 여러 셀이 같은 VPC 내에 존재할 수 없게 되었습니다;
  • 각 셀은 고유한 VPC에 존재하여 서로 사이에 방화벽 규칙을 설정하거나 IP 주소 범위의 충돌 없이 고립되어 있을 것입니다;
  • 각 셀은 다른 셀에서 접근이 필요한 서비스만 노출시키므로 IP 주소 충돌 없이 작동할 것입니다.

결과

셀 당 하나의 VPC를 가지게 되면 셀을 프로비저닝하고 관리하는 것이 더 쉬워지며, IP 주소 공간의 중첩 문제에 대해 걱정할 필요가 없어지며, 기본적으로 셀이 완전히 격리되어 안전해집니다.

Private Service Connect를 사용하면 셀 간의 트래픽 양에 따라 중요하거나 그렇지 않을 수 있는 내부 응용 프로그램 로드 밸런서로 인한 추가 비용이 발생할 것입니다.

대안

VPC 피어링은 기본적으로 VPC 당 50개의 피어링으로 제한됩니다, 그리고 공유 VPC는 100개의 호스트 프로젝트로 제한되어 있어 셀이 얼마나 확장될 수 있는지에 제약을 가하게 됩니다. 또한, 각 셀마다 고유한 IP 주소 범위를 지정하여 중첩을 피해야 하며, 서로 다른 서브넷을 격리하기 위해 추가적인 보안 조치(예: 방화벽 규칙)도 필요할 것입니다.