如何在 local 端使用 kubectl 操作 private GKE 叢集 Private GKE cluster set up with bastion vm 基於安全考量, 通常在創建 GKE 叢集時, 會選擇 Private Cluster 的部署方式, 將 Control Plan 藏在內網裡, 若想要在 local 端使用 kubectl 來操作 GKE 的話, 會須要一個跳板機(Bastion Host) 將請求 轉送給內網的 Control Plan, 架構如下 然而這個做法有個安全疑慮, 就是當對外 IP 不小心被洩露了, 駭客就能透過它連進跳板機來進行惡意的操作 比較好的做法是, Cloud IAP + Private 的 Bastion Host 透過 IAP 的TCP 轉送功能, 就不需要分配對外 IP 給 Bastion Host 實際做法如下 環境建立 Step 1. 建立一個新的 Subnet 給 GKE Cluster 使用 gcloud compute networks create k8s-proxy \ --subnet-mode=custom \ --project=backend gcloud compute networks subnets create subnet-cluster \ --network=k8s-proxy \ --range=10.50.0.0/16 \ --region=us-central1 gcloud compute firewall-rules create k8s-proxy-ssh \ --network k8s-proxy \ --allow tcp:22 因為 Cloud IAP 會從 35.235.240.0/20 這個網段連進內網, 所以防火牆需要開放從從 35.235.240.0/20 過來的流量 gcloud compute firewall-rules create allow-ssh-ingress-from-iap...