PSA çalıştıran mevcut Cloud SQL örneğinde Private Service Connect'i etkinleştirme (Terraform)

1. Genel Bakış

Başka bir projeden veya VPC ağından özel Cloud SQL örneğine bağlanmak için çeşitli seçenekler vardır. Özel bağlantılar üzerinden Google'ın ve üçüncü taraf hizmetlerinin dahili IP adreslerine ulaşmak için özel hizmet erişimini (PSA) kullanabilirsiniz. Veritabanına erişimi genişletmek için artık Private Service Connect'i (PSC) de etkinleştirebilirsiniz.

Private Service Connect (PSC), hizmet üreticilerin hizmetlerini hizmet ekleri aracılığıyla göstermelerine olanak tanır. Tüketiciler, kendi ortamlarında PSC uç noktaları ve/veya PSC arka uçları oluşturmak için bu ekleri kullanabilir. Bu PSC uç noktaları aracılığıyla, kullanıcı tarafından belirtilen özel bir IP üzerinden üretici hizmetlerine bağlanabilirler.

Bu laboratuvarda seçeneği yapılandırabilir ve test edebilirsiniz.

Bu laboratuvarda, PSA ve PSC uç nokta erişiminin CloudSQL ile kullanımını gösteren basit bir mimari oluşturacaksınız.

Şekil 1.

e0e0f83704cc9d62.png

Bu laboratuvar için iki projeye veya aynı projede ayrı VPC'lere ihtiyacınız vardır.

Hedefler

Bu laboratuvarda aşağıdaki görevi nasıl gerçekleştireceğinizi öğreneceksiniz:

  • Hizmet ağını etkinleştirme
  • PSA'yı ayarlama
  • PSA ile CloudSQL örneği oluşturma
  • PSC hizmet eki etkinleştirilmelidir.
  • CloudSQL veritabanına bağlanmak için tüketici VPC'sinde bir PSC uç noktası oluşturun
  • Hem üretici hem de tüketici VPC'lerinde test sanal makinelerinden SQL veritabanına erişimi doğrulama

2. Kurulum ve Gereksinimler

Kendine ait tempoda ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcılarının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu üç değer hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz deneme programına uygundur.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir olsa da bu kod laboratuvarında bulutta çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da, sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:

7ffe5cbb04455448.png

Bu sanal makinede ihtiyaç duyacağınız tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.

3. 1. görev: (Terraform) ile veritabanı projesi için ortam oluşturma

Veritabanı projesinde hizmet ağını etkinleştireceğiz, VPC oluşturacağız, PSA aralığı oluşturacağız, hizmet ağı eşlemesi oluşturacağız ve güvenlik duvarı kuralları oluşturacağız. Cloud Console'u açın ve veritabanı için kullanacağınız projeyi seçin.

  1. Konsolunuzun sağ üst tarafında bulunan Cloud Shell'i açın, Cloud Shell'de veritabanı projesi için veritabanı proje kimliğini gördüğünüzden emin olun, erişime izin verme istemlerini onaylayın. 4261e776f64ea978.png
  2. terraform-db-psc adlı bir klasör oluşturun ve klasöre taşıyın
mkdir terraform-db-psc  && cd terraform-db-psc
  1. main.tf, variable.tf, nat-vm.tf ve database.tf dosyası oluşturun.
touch main.tf variable.tf nat-vm.tf database.tf 
  1. Cloud Shell düzenleyici görünümüne geçin. Düzenleyici'yi seçin, arayüzün yüklenebilmesi için gerekli istemlere izin verdiğinizden emin olun.
  2. Yüklendikten sonra Dosya > Klasör Aç'a gidin ve /home/kullanıcı adınız/terraform-db-psc adresine gidip klasörü düzenleyicide açmak için Tamam'ı seçin. 78f5eb9f2f82f1b0.png
  3. variable.tf dosyasını seçin ve aşağıdakileri ekleyin. your-database-project-id-here metnini, tırnak içinde gerçek veritabanı projesi kimliğinizle değiştirin. your-consumer-project-id-here metnini, tırnak içinde gerçek tüketici projesi kimliğinizle değiştirin.
variable "project_id" {
  type = string
  default = "your-database-project-id-here"
}

variable "project_id_consumer" {
  type = set(string)
  default = ["your-consumer-project-id-here"]
}

variable "network_id" {
  type = string
  default = "database-net"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

variable "db_password" {
  type = string
  default = "cloudsql24"
}
  1. Ardından main.tf dosyasını açın. Aşağıda açıklandığı gibi çeşitli işlemleri gerçekleştirmek için bazı terraform kodu ekleyeceğiz.

API'leri etkinleştirme

resource "google_project_service" "default"

VPC oluşturma

resource "google_compute_network" "default"

Güvenlik duvarı kuralı ekleme

resource "google_compute_firewall" "allow_icmp"

PSA aralığı oluşturma

resource "google_compute_global_address" "psa_range"

Eşleme oluşturma

resource "google_service_networking_connection" "private_connection"

  1. Aşağıdakileri kopyalayıp ana .tf dosyasına yapıştırın.
resource "google_project_service" "default" {
 for_each = toset([
   "compute.googleapis.com",
   "servicenetworking.googleapis.com", 
   "sqladmin.googleapis.com",
   "cloudresourcemanager.googleapis.com"
 ])

 service            = each.value
 disable_on_destroy = false
}

resource "google_compute_network" "default" {
 project                = var.project_id
 name                    = var.network_id
 auto_create_subnetworks = true
 mtu                     = 1460
 routing_mode            = "GLOBAL"
}

resource "google_compute_global_address" "psa_range" {
  name                  = "psa-range-${google_compute_network.default.name}"
  project               = var.project_id
  purpose               = "VPC_PEERING"
  address_type          = "INTERNAL"
  prefix_length         = 20
  address               = "172.18.0.0"
  network               = google_compute_network.default.id

}

resource "google_service_networking_connection" "private_connection" {
  network = google_compute_network.default.self_link
  service = "servicenetworking.googleapis.com"

  reserved_peering_ranges = [
    google_compute_global_address.psa_range.name,
  ]
}

resource "google_compute_firewall" "allow_icmp" {
 name    = "allow-icmp-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "icmp"
 }

 source_ranges = ["0.0.0.0/0"]
 target_tags   = ["allow-icmp"]
}

resource "google_compute_firewall" "allow_ssh" {
 name    = "allow-ssh-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

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

 source_ranges = ["0.0.0.0/0"]
 target_tags   = ["allow-ssh"]
}

resource "google_compute_firewall" "allow_sql" {
 name    = "allow-sql-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

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

 source_ranges = ["0.0.0.0/0"]
}

resource "google_compute_firewall" "allow_internal" {
 name    = "allow-internal-${google_compute_network.default.name}"
 network = google_compute_network.default.id
 project = var.project_id

 allow {
   protocol = "icmp"
 }

 allow {
   protocol = "tcp"
   ports    = ["0-65535"]
 }
 allow {
   protocol = "udp"
   ports    = ["0-65535"]
 }

 source_ranges = ["10.128.0.0/9", "172.18.0.0/20"] # Include PSA range
}
  1. Cloud Shell terminaline geri dönün, terraform-db-psc dizininde olduğunuzdan emin olun cd terraform-db-psc ve aşağıdaki komutları çalıştırın

terraform init

Çalışma dizinini başlatır. Bu adımda, belirli yapılandırma için gereken sağlayıcılar indirilir.

terraform plan

Terraform'un altyapınızı dağıtmak için hangi işlemleri yapacağını gösteren bir yürütme planı oluşturur.

  1. Şimdi kaynakları oluşturmak için terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın.

4. 2. görev: PSA ile CloudSQL örneği oluşturma (Terraform)

Bağlantıya izin vermek için PSA seçeneğiyle bir CloudSQL örneği oluşturmak üzere Terraform'u kullanalım. Bu yapılandırmayı veritabanı projesinde tamamlayın.

  1. Cloud Shell düzenleyici görünümüne geçin. terraform-db-psc klasöründe olduğunuzdan emin olun. database.tf dosyasını seçip aşağıdakileri ekleyin.
resource "google_sql_database_instance" "default" {
  name             = "psc-psa-sql-db"
  region           = var.region_id
  database_version = "MYSQL_8_0"  
  settings {
    tier              = "db-f1-micro"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }
    ip_configuration {      
      ipv4_enabled    = "false"
      private_network = google_compute_network.default.id
      
    }
  }
  deletion_protection = false 
}

resource "google_sql_user" "users" {
  name     = "testsql"
  instance = google_sql_database_instance.default.name
  password = var.db_password 
}

  1. Cloud Shell terminaline geri dönün ve terraform-db-psc dizininde olduğunuzdan emin olun. Şimdi kaynakları oluşturmak için terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın. PSA ile CloudSQL örneği oluşturma işlemi 15 dakikadan uzun sürebilir.

Veritabanını doğrulama

  1. İşlem tamamlandıktan sonra konsolda SQL'e gidin ve yeni oluşturulan psc-psa-sql-db veritabanı örneğini seçin.
  2. Sol taraftaki SQL seçenekleri kaydırma menüsünü genişletin ve Bağlantılar'ı seçin.
  3. Özet sekmesinde bağlantıyla ilgili bilgileri görebilirsiniz.
  4. Dahili IP adresini kopyalayıp sisteminizin bir yerine kaydedin. Gördüğünüz gibi, ayrılan aralıktan atandı.
  5. 3. görev 5. adımı tamamlamak için bu IP'ye ihtiyacınız olacak.

5c00f08b0f44c957.png

  1. Sol taraftaki SQL seçenekleri kaydırma menüsünü genişletin ve Kullanıcılar'ı seçin.
  2. cloudsql24 şifresine sahip testsql adlı bir kullanıcı görürsünüz (Bu kullanıcı, daha sonra veritabanına erişmek için kullanılır)

5. 3. görev: Test VM'si oluşturma ve veritabanı projesinden SQL örneğine bağlanma (Terraform)

Test amaçlı bir sanal makine ve NAT ağ geçidi oluşturmak için Terraform'u kullanalım. Bu yapılandırmayı veritabanı projesinde tamamlayın.

  1. Cloud Shell düzenleyici görünümüne geçin. terraform-db-psc klasöründe olduğunuzdan emin olun. nat-vm.tf dosyasını seçip aşağıdakileri ekleyin.
resource "google_compute_router" "default" {
  name    = "outbound-nat"
  region  = var.region_id
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name = "outbound-nat-gw"
  router = google_compute_router.default.name
  region = google_compute_router.default.region
  nat_ip_allocate_option = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}


resource "google_compute_instance" "sql_net_vm" {
  name         = "db-vm-test"
  machine_type = "e2-medium"
  zone         = "${var.region_id}-b"
  project      = var.project_id

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

  network_interface {
    network = google_compute_network.default.self_link
  }

  # No external IP address
  network_performance_config {
    total_egress_bandwidth_tier = "DEFAULT"
  }

  tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]

  # Install MariaDB at startup
  metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
  1. Cloud Shell terminaline geri dönün ve terraform-db-psc dizininde olduğunuzdan emin olun. Şimdi kaynakları oluşturmak için terraform plan, then terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın. Bu işlem, MariaDB yüklü bir NAT ağ geçidi ve sanal makine oluşturur.

Veritabanını doğrulama

Bu işlemi tüketici projesinde tamamlayın

  1. Sanal Makine Örneği'ne gidin. db-vm-test'i seçin.
  2. Sanal makineye bağlanmak için SSH seçeneğini belirleyin.
  3. Aşağıdakileri kullanarak daha önce kopyaladığınız yerel IP üzerinden veritabanına bağlanın:
mysql --host=172.18.0.2 --user=testsql --password=cloudsql24

Not: Bağlantı kurması için IP adresini gerçek IP adresinizle değiştirin.

  1. Bağlantı kurulduktan sonra aşağıdaki localvpcsqldb ile bir veritabanı oluşturalım.
CREATE DATABASE localvpcsqldb;
  1. İşlem tamamlandığında bağlantıdan çıkmak için exit yazın. Sanal makineyi kapatmak için exit komutunu tekrar yazın.

6. 4. görev: CloudSQL örneğinde PSC'yi etkinleştirme

Bağlantıya izin vermek için PSC seçeneğini etkinleştirmek üzere gcloud komutlarını kullanalım. Bu yapılandırmayı veritabanı projesinde tamamlayın.

  1. Cloud Shell görünümüne geçin.
  2. Cloud Shell'de aşağıdaki komutu çalıştırın.
  • YOUR_DB_PROJECT_HERE ifadesini veritabanı proje kimliğiyle değiştirin.
  • YOUR_CONSUMER_PROJECT_HERE değerini tüketici projesinin kimliğiyle değiştirin.
project_id=YOUR_DB_PROJECT_HERE
allowed_project=YOUR_CONSUMER_PROJECT_HERE

gcloud beta sql instances patch psc-psa-sql-db \
--project=$project_id \
--enable-private-service-connect \
--allowed-psc-projects=$allowed_project
  1. Bu işlem, mevcut veritabanını PSC eki ile günceller. Bu işlem 10 dakikadan uzun sürebilir.

Bekleme süresi doldu hatası alırsanız ilerlemeyi görmeye devam etme komutunu da alırsınız. "`gcloud beta sql operations wait –project komutunu çalıştırarak işlemi beklemeye devam edebilirsiniz." gibi bir mesaj

PSA ve PSC'nin etkinleştirildiği yeni bir veritabanı dağıtabileceğinizi lütfen unutmayın.

Veritabanını doğrulama

  1. İşlem tamamlandıktan sonra konsolda SQL'e gidin ve psc-psa-sql-db veritabanı örneğini seçin.
  2. Sol taraftaki SQL seçenekleri kaydırma menüsünü genişletin ve Bağlantılar'ı seçin.
  3. Özet sekmesinde bağlantıyla ilgili bilgileri görebilirsiniz.
  4. Hizmet eki adresini kopyalayıp sisteminizdeki bir yere kaydedin.
  5. Bir sonraki görev 5. adım 8'i tamamlamak için buna ihtiyacınız olacak.

2cf5ce71eceea326.png

7. 5. görev: Tüketici projesi için ortam oluşturma (Terraform)

Tüketici projesinde,güvenlik duvarı kuralları ve alt ağ içeren özel bir VPC oluşturacağız. Cloud Console'u açıp kullanacağınız projeyi seçin.

  1. Konsolunuzun sağ üst kısmındaki Google Cloud simgesinin yanındaki açılır menüyü tıklayın ve ardından tümü sekmesini seçin.

proje çubuğuproje çubuğu 2

  1. Devam etmek için listelenen projelerden tüketici projesi kimliğinizi seçin.
  2. Konsolunuzun sağ üst kısmındaki Cloud Shell'i açın, Cloud Shell'de kullanıcı projesi kimliğini gördüğünüzden emin olun, erişime izin verme istemlerini onaylayın.
  3. terraform-consumer-psc adlı bir klasör oluşturun ve klasöre taşıyın
mkdir terraform-consumer-psc  && cd terraform-consumer-psc
  1. main.tf, variable.tf ve psc.tf dosyası oluşturun.
touch main.tf variable.tf psc.tf 
  1. Tüketici proje kimliği için Cloud Shell düzenleyici görünümüne geçin. Düzenleyici'yi seçin, arayüzün yüklenebilmesi için gerekli istemlere izin verdiğinizden emin olun.
  2. Yüklendikten sonra Dosya > Klasör Aç'a gidin ve /home/kullanıcı adınız/terraform-consumer-psc adresine gidip klasörü düzenleyicide açmak için Tamam'ı seçin. 78f5eb9f2f82f1b0.png
  3. variable.tf dosyasını seçin ve aşağıdakileri ekleyin. your-consumer-project-id-here metnini tırnak içinde gerçek tüketici proje kimliğinizle değiştirin. your-psc-attachment-id-here metnini tırnak içinde psc ek adresinizle değiştirin. Bu, 4. görev 5-7 bölümünde kopyaladığınız kimliktir d7ac9629a59abfc6.png
variable "project_id" {
  type = string
  default = "your-consumer-project-id-here"
}

variable "psc_attachment_id" {
  type = string
  default = "your-psc-attachment-id-here"
}

variable "network_id" {
  type = string
  default = "psc-endpoint-vpc"
}

variable "region_id" {
  type = string
  default = "us-east1"
}

  1. Ardından main.tf dosyasını açın. Aşağıda açıklandığı gibi çeşitli işlemleri gerçekleştirmek için bazı terraform kodu ekleyeceğiz.

API'leri etkinleştirme

resource "google_project_service"

VPC oluşturma

resource "google_compute_network"

NAT ağ geçidi oluşturma

resource "google_compute_router"
resource "google_compute_router_nat"

Güvenlik duvarı kuralı ekleme

resource "google_compute_firewall"

  1. Aşağıdakileri kopyalayıp ana .tf dosyasına yapıştırın.
resource "google_project_service" "default" {
  for_each = toset([
    "compute.googleapis.com",
    "cloudresourcemanager.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = false
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_subnetwork" "vm_subnet_pc" {
  name          = "vm-net"
  ip_cidr_range = "192.168.80.0/24"
  region        = var.region_id
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_subnetwork" "psc_subnet_ip" {
  name          = "psc-subnet"
  ip_cidr_range = "192.168.100.0/24"
  region        = var.region_id
  network       = google_compute_network.default.name
  project       = var.project_id
}

resource "google_compute_router" "default" {
  name    = "outbound-nat"
  region  = var.region_id
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name = "outbound-nat-gw"
  router = google_compute_router.default.name
  region = google_compute_router.default.region
  nat_ip_allocate_option = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

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

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}


resource "google_compute_firewall" "allow_internal" {
  name    = "allow-internal-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
    }


  allow {
    protocol = "tcp"
    ports    = ["0-65535"]
  }
  allow {
    protocol = "udp"
    ports    = ["0-65535"]
  }

  source_ranges = ["192.168.0.0/16"]
 }
  1. Cloud Shell terminaline geri dönün. Tüketici projesindeki terraform-consumer-psc dizininde cd terraform-consumer-psc olduğunuzdan emin olun ve aşağıdaki komutları çalıştırın.

terraform init

Çalışma dizinini başlatır. Bu adımda, belirli yapılandırma için gereken sağlayıcılar indirilir.

terraform plan

Terraform'un altyapınızı dağıtmak için hangi işlemleri yapacağını gösteren bir yürütme planı oluşturur.

  1. Şimdi kaynakları oluşturmak için terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın.

8. 6. görev: Tüketici projesinde ve test sanal makinesinde SQL veritabanı eki için PSC uç noktasını oluşturun (Terraform)

Bu yapılandırmayı tüketici projesinde tamamlayın.

  1. Cloud Shell düzenleyicisine dönün, terraform-consumer-psc dizinini açın ve psc.tf dosyasını seçin. Dosyaya aşağıdaki Terraform kodunu ekleyin. Bu işlem, statik bir dahili IP, PSC uç noktası ve Maria DB yüklü bir test sanal makinesi oluşturur.
resource "google_compute_address" "default" {
  name = "psc-ip-1"
  region = var.region_id
  address_type = "INTERNAL"
  subnetwork = google_compute_subnetwork.psc_subnet_ip.name
  address = "192.168.100.100" 
}

resource "google_compute_forwarding_rule" "default" {
  name = "psc-sql-endpoint"
  region = var.region_id
  network = google_compute_network.default.name
  ip_address = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target = var.psc_attachment_id
}


resource "google_compute_instance" "sql_test_vm" {
  name         = "remote-sql-test-vm"
  machine_type = "e2-medium"
  zone         = "${var.region_id}-b"
  project      = var.project_id

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

  network_interface {
    subnetwork = google_compute_subnetwork.vm_subnet_pc.name
  }

  # No external IP address
  network_performance_config {
    total_egress_bandwidth_tier = "DEFAULT"
  }

  tags = ["allow-icmp", "allow-ssh", "allow-internal", "allow-health-check"]

  # Install MariaDB at startup
  metadata_startup_script = <<EOF
#!/bin/bash
apt-get update
apt-get install -y mariadb-server
systemctl enable mariadb
EOF
}
  1. Cloud Shell terminaline geri dönün. Tüketici projesindeki terraform-consumer-psc dizininde cd terraform-consumer-psc olduğunuzdan emin olun ve aşağıdaki komutları çalıştırın.

terraform plan

Terraform'un altyapınızı dağıtmak için hangi işlemleri yapacağını gösteren bir yürütme planı oluşturur.

  1. Şimdi kaynakları oluşturmak için terraform apply komutunu çalıştırın ve çalıştırmak için yes yazın

9. 7. görev: PSC IP adresi üzerinden sanal makineden uç nokta bağlantısını doğrulama

Bu işlemi tüketici projesinde tamamlayın

  1. Sanal Makine Örneği'ne gidin. remote-sql-test-vm'yi seçin.
  2. Sanal makineye bağlanmak için SSH seçeneğini belirleyin.
  3. Aşağıdakileri kullanarak uç nokta üzerinden veritabanına bağlanın:
mysql --host=192.168.100.100 --user=testsql --password=cloudsql24
  1. Bağlantı kurulduktan sonra aşağıdaki psc-sql-db ile bir veritabanı oluşturalım.
CREATE DATABASE remotepscpsasqldb;
  1. İşlem tamamlandığında bağlantıdan çıkmak için exit yazın. Sanal makineyi kapatmak için exit komutunu tekrar yazın.

10. 8. görev: Veritabanı girişini doğrulama

Bu doğrulamayı veritabanı projesinde tamamlayın

  1. Konsolunuzun sağ üst kısmındaki Google Cloud simgesinin yanındaki açılır menüyü tıklayın ve ardından tümü sekmesini seçin.

proje çubuğuproje çubuğu 2

  1. Devam etmek için listelenen projelerden veritabanı proje kimliğinizi seçin.
  2. SQL'e gidin, psc-psa-sql-db veritabanını seçin, SQL seçeneklerini genişletin ve Veritabanları'nı seçin. Tüketici projesi sanal makinesinde remotepscpsasqldb adlı yeni oluşturduğunuz veritabanını ve ayrıca veritabanı projesi sanal makinesinde localvpcsqldb'yi göreceksiniz**.**

36f5c03124ca20f6.png

11. Temizleme

Tüketici projesinde bunu tamamlayın

  1. Tüketici projesi kimliğini seçin
  2. Cloud Shell'e gidin ve tüketici proje kimliğini gördüğünüzden emin olun
  3. terraform-consumer-psc dizine gidin cd terraform-consumer-psc ve aşağıdaki komutu çalıştırın terraform destroy ve yes yazın. Terraform ile tüketici projenizde oluşturduğunuz tüm kaynaklar kaldırılır.

Veritabanı projesinde bu işlemi tamamlama

  1. Veritabanı proje kimliğini seçin
  2. Cloud Shell'e gidin ve veritabanı proje kimliğini gördüğünüzden emin olun
  3. terraform-db-psc dizinine cd terraform-db-psc gidin ve aşağıdaki komutu çalıştırın terraform destroy ve yes yazın. Terraform ile db projenizde oluşturduğunuz kaynakların çoğu kaldırılır. Hizmet ağı silinemeyebilir ve hata verebilir.
  4. Ardından terraform-db-psc klasöründen aşağıdaki dosyaları silin.
rm -r terraform.tfstate terraform.tfstate.backup
  1. Ardından konsolda VPC ağları'na gidin.
  2. database-net VPC'sini seçin, PRIVATE SERVICES ACCESS'i (ÖZEL HİZMETLER ERİŞİMİ) seçin, Services for Allocated IP Ranges (Hizmetler için Ayrılan IP Aralıkları) bölümünde psa-range-database-net'i ve Release (Salıver) seçeneğini belirleyin

e4dbfa8953c5b036.png

  1. Ardından VPC AĞ EŞLEŞMESİ'ni,servicenetworking-googleapis-com'u ve Sil seçeneğini belirleyin.

4deab14044461d2d.png

  1. Ardından VPC ağını sil 'i 2f4e96399b73d405.png seçin.

12. Tebrikler

Tebrikler, PSA ve PSC eki içeren bir Cloud SQL örneğini başarıyla yapılandırdınız ve başka bir VPC'de Private Service Connect uç noktası oluşturdunuz.

Daha fazla bilgi

Private Service Connect ve Cloud SQL hakkında daha fazla bilgi edinebilirsiniz.

İlgili diğer codelab: https://codelabs.developers.google.com/codelabs/cloudsql-psc-terraform