1. Shared VPC
같은 Organization 하위의 프로젝트 간에 VPC를 공유함으로써 Private IP로 통신할 수 있게 하여 보다 안전하게 네트워크를 구성할 수 있다.
Host 프로젝트에 Service 프로젝트를 여러개 붙이고 해제할 수 있으며 전체 서브넷이나 특정 서브넷을 공유하도록 설정할 수 있다.
2. 설정
Shared VPC 페이지에서 설정 가능하다. 설정을 위해서는 Organization의 Compute Shared VPC Admin Role을 먼저 부여해야 한다. 연결할 Service 프로젝트에는 Compute Engine과 GKE를 쓸 경우 Kubernetes Engine API를 Enable 해야 설정이 진행될 수 있다.
3. Shared VPC 에서 GKE를 생성할 경우
먼저 Host 프로젝트의 VPC Network에서 클러스터를 생성할 서브넷 아래에 Secondary IPv4 대역을 추가한다. 이후 Service 프로젝트에서 GKE 생성 시에 해당 IP 대역을 pods, service 대역에 할당한다.
4. 주의사항
SharedVPC로 구성된 서비스 프로젝트에서 Ingress Controller가 GKE 서비스 어카운트로 호스트 프로젝트의 방화벽 정책을 업데이트 하지 못해 수동으로 생성하라고 Ingress Event에 표시된다. 이는 권한 문제로 서비스 프로젝트의 GKE 서비스 어카운트에 Computer Security Admin Role을 부여하거나 Kubernetes 로그에 찍히는 Firewall 커맨드를 직접 관리자가 실행해 수동으로 조치할 수 있다.
관련 Log
Normal XPN 4m (x28 over 169m) loadbalancer-controller Firewall change required by security admin:
권한 부여 커맨드
gcloud projects add-iam-policy-binding [HOST_PROJECT_ID] \ --member=serviceAccount:service-[SERVICE_PROJECT_NUMBER]@container-engine-robot.iam.gserviceaccount.com \ --role=roles/compute.securityAdmin
'Cloud > GCP' 카테고리의 다른 글
[GCP] GCE 프로젝트간 VM 복사 (0) | 2023.11.27 |
---|---|
[GCP] GKE HTTPS Redirection 적용하기 (0) | 2022.02.24 |
GKE에서 CloudVPN으로 연결된 On Premise Database에 연결하기 (0) | 2022.02.16 |
[GCP] Workload Identity (0) | 2022.02.02 |
[GCP] GCE 디스크 추가, OS Login (0) | 2022.01.26 |