iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
DevOps

從 AWS 轉生到 GCP 世界,還順便轉職成 DevOps 的 SRE系列 第 6

如果你想測試 Cloud Run 是否部署成功,你可以建立跳板機 使用 IAP 測試

  • 分享至 

  • xImage
  •  

什麼是 IAP,他對應到的是 AWS Session manager,如果我們想要 Access 到私有環境,由於 CloudRun 我們是採用 ingress internal,所以直接使用 url 是無法測試的。這時可以建立一台 VM

  • 先在 VPC 上建立 IAP 的 firewall rule

  • 在此 VPC 上建立 VM

  • 開啟 IAP API

  • 將自己的角色設定成 # IAP Tunnel User

# IAP Firewall Rule
resource "google_compute_firewall" "allow_iap_ssh" {
  name    = "allow-iap-ssh"
  network = "bi-portal-staging"

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["35.235.240.0/20"]  # IAP's IP range
  target_tags   = ["allow-iap"]
}

# VM Instance
resource "google_compute_instance" "bi_portal_test_vm" {
  name         = "bi-portal-test-vm-alvin"
  machine_type = "e2-medium"
  zone         = "asia-east1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network    = "bi-portal-staging"
    subnetwork = "bi-portal-staging"
    
    // This VM will not have an external IP
    access_config {
      // Ephemeral IP
    }
  }

  service_account {
    email  = "sa@xxx.iam.gserviceaccount.com"
    scopes = ["cloud-platform"]
  }

  metadata = {
    enable-oslogin = "true"
  }

  tags = ["allow-iap"]
}

# IAP Tunnel User
resource "google_iap_tunnel_instance_iam_member" "instance_iam" {
  project = "xxxx"
  zone    = google_compute_instance.bi_portal_test_vm.zone
  instance = google_compute_instance.bi_portal_test_vm.name
  role     = "roles/iap.tunnelResourceAccessor"
  member   = "user:xxx@xxx.com"  # Replace with your email
}

# Enable IAP API
resource "google_project_service" "iap_api" {
  project = "xxx"
  service = "iap.googleapis.com"

  disable_on_destroy = false
}

# Output the internal IP of the instance
output "instance_internal_ip" {
  value = google_compute_instance.bi_portal_test_vm.network_interface[0].network_ip
}

完成後就可以用 gcloud compute ssh 連線,然後就可以 curl 測試看看 Cloud Run 是否正常

gcloud compute ssh bi-xxx-test-vm-alvin \
    --project=xxx \
    --zone=asia-east1-a \
    --tunnel-through-iap;

上一篇
GCP 測試 internal load balancer & private access
下一篇
隨時掌握新技術省錢錢,從 VPC Access Connector 改成用 direct access
系列文
從 AWS 轉生到 GCP 世界,還順便轉職成 DevOps 的 SRE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言