GKE에서 CloudVPN으로 연결된 On Premise Database에 연결하기

  • 구성 : GKE(→IP Masquerading) → CloudVPN → On-prem DB

GKE에서 VPC 외부로 나가는 트래픽은 CloudNAT로 처리 가능하지만 On premise(IDC) 데이터베이스와의 연결은 보안을 고려해 내부 VPN을 통하도록 설정한다.

GKE의 Egress traffic이 CloudVPN을 통해 전달되기 위해서는 IP 마스커레이딩을 설정하는 방법이 있다.(링크)
마스커레이딩을 설정하면 트래픽의 소스 IP 주소가 파드에서 노드의 IP로 변경된다. 따라서 VPC 내부 리소스 (CloudVPN 포함)에 연결이 가능해지는 것이다. 내부 로직에서는 Linux의 iptables를 이용해 설정이 된다고 한다.

IP Masquerading은 standard mode와 autopilot에서 변경할 수 있는 방법이 다르다. 아래는 autopilot에서의 수정 방법.

  1. Egress NAT policy 상태 확인하기
## cluster 인증
gcloud container clusters get-credentials CLUSTER-NAME
## 클러스터 egressnatpolicy가 running인지 확인
kubectl get crds egressnatpolicies.networking.gke.io
## egressnatpolicy 리스트 조회
kubectl get egressnatpolicies
  1. default Egress NAT 정책 수정
  • 아래 destination에 지정된 대역으로 나가는 패킷은 클러스터가 IP 마스커레이딩을 수행하지 않는다.
  • SNAT 를 원하는 destination은 삭제(주석처리)한다.
kubectl edit egressnatpolicies default

-----------------

apiVersion: networking.gke.io/v1
  kind: EgressNATPolicy
  metadata:
    name: default
  spec:
    action: NoSNAT
    destinations:
    - cidr:  10.0.0.0/8
    - cidr:  172.16.0.0/12
    - cidr:  192.168.0.0/16
    - cidr:  240.0.0.0/4
    - cidr:  192.0.2.0/24
    - cidr:  198.51.100.0/24
    - cidr:  203.0.113.0/24
    - cidr:  100.64.0.0/10
    - cidr:  198.18.0.0/15
    - cidr:  192.0.0.0/24
    - cidr:  192.88.99.0/24
  1. 정책이 적용된 것 확인
kubectl get events
  1. VPN으로 연결된 내부 IP 대역으로 통신이 되는 것을 확인한다.

'Cloud > GCP' 카테고리의 다른 글

[GCP] GCE 프로젝트간 VM 복사  (0) 2023.11.27
[GCP] GKE HTTPS Redirection 적용하기  (0) 2022.02.24
[GCP] Workload Identity  (0) 2022.02.02
[GCP] GCE 디스크 추가, OS Login  (0) 2022.01.26
[GCP] Shared VPC  (0) 2021.12.24