Cloud NAT
要するにマネージドなNAT
GAEやFunctionには対応していない。
GCEにだけ対応しているみたい。
仕組み
- アタッチしたnetworkのアウトバウンドのトラフィックが丸っと対象になる。
- GCEのタグとか、Podのタグとかはつけられない。ネットワークのタグだけが対象。
- まぁ、発展途上なのかなぁとしか言えない。
- この辺はAWSの方が優秀だよなぁとおもう。
- GCEに対して外部IPアドレスをアタッチしているとそっちが優先される。(最悪)
- このせいで、Private ClusterにしかCloud NATが適応できない。
- Public Clusterで組んでしまったけれど、後からIPを剥がせない。
実装
この辺をTerraformでやるのしんどくて諦めたので、コマンドここにおいておきます。
### Create a VPC
gcloud compute networks create mynavi-gw-vpc \
--subnet-mode custom
### Create a subnet
gcloud compute networks subnets create mynavi-gw-vpc \
--network mynavi-gw-vpc \
--region asia-northeast1 \
--range 192.168.2.0/24
### Create a cloud router
gcloud compute routers create mynavi-gw-router \
--network mynavi-gw-vpc \
--region asia-northeast1
### router config
gcloud compute routers nats create mynavi-gw-nat-config \
--router-region asia-northeast1 \
--router mynavi-gw-router \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
参考
https://cloud.google.com/nat/docs/using-nat#step_1_create_a_vpc_network_and_subnet
https://cloud.google.com/nat/docs/using-nat#step_6_create_a_router_name_short
https://cloud.google.com/nat/docs/using-nat#step_7_add_a_nat_configuration_to_the_router_name_short