1. Giriş
Son Güncelleme Tarihi: 06.05.2021
Bağlantı kurma
Birçok türde uygulama ve çerçeve bulunur. Bu codelab'de, dahili bir özel IP adresi aracılığıyla Cloud SQL Proxy kullanarak Google Compute Engine'deki yönetilen bir sanal makinede çalıştırılmakta olan bir uygulamadan Cloud SQL'e bağlanma konusunu ele alacağız. Bu, Cloud'da durum bilgili bir uygulama çalıştırmanın son derece güvenli bir yoludur. Sadece özel bir IP kullanarak ve sizin yerinize SSL bağlantısı sunan SQL Proxy'yi kullanarak internet kullanımınızı en aza indirmiş olursunuz.
Bunun yaygın kullanım alanlarından biri, yerel olarak değil, bulutta çalışacak şekilde taşınmış şirket içi bir uygulama olabilir.
Oluşturacaklarınız
Bu codelab son derece minimalisttir. Buradaki amaç, uygulamanın kendisini çok fazla düşünmeden bağlantı parçasının somunları arasında size yol göstermektir. Mükemmel bir kullanım için Cloud SQL'e bağlanmak, bir SQL veritabanının diğer örneğine bağlanmaya benzer. Bu nedenle, bu codelab'de oluşturduğunuz öğeleri alıp herhangi bir üretim uygulamasına uygulayabilmeniz gerekir.
Talimatlar, hem GCP Console'da neler yapmanın adım adım açıklamalı kılavuzunu hem de CLI veya otomasyonda kullanmak üzere gcloud komutu eşdeğerlerini içerir.
Adımlar tek tek şunlardır:
- Cloud SQL örneğiyle bağlantıyı etkinleştirmek için minimal bir Hizmet Hesabı oluşturun
- Google Compute Engine'de (GCE) sanal makine oluşturma
- Cloud SQL örneği oluşturma (Bu eğitimde Postgres kullanılmıştır ancak MySQL veya SQL Server için de benzer şekilde çalışır)
- GCE örneğinde Cloud SQL Proxy'yi indirip çalıştırma
Gerekenler
- API'leri etkinleştirme ve hizmet oluşturma izinlerine sahip olduğunuz bir GCP hesabı
2. Hizmet hesabı oluşturma
Hizmet hesapları, GCP projenizdeki farklı hizmetleri kullanma izinleri vermek için kullanılır. Bu codelab'de Cloud SQL Proxy'ye Cloud SQL örneğimize bağlanma izni vermek için koda ihtiyacımız var.
Konsolda
IAM hizmet hesapları sayfasına gidin ve sayfanın üst kısmındaki düğmesini tıklayın.
Hizmet hesabınıza benzersiz bir ad ve kimlik verin ve OLUŞTUR'u tıklayın.
Sonraki sayfada, Rol seçin açılır menüsünü tıklayın. "Cloud SQL" filtresi Cloud SQL İstemcisi rolünü seçin. DEVAM'ı tıklayın.
BİTTİ'yi tıklayın.
gcloud'u kullanma
Hizmet hesabını oluşturun:
gcloud iam service-accounts create <SERVICE_ACCOUNT_NAME> --display-name "<SERVICE_ACCOUNT_NAME> service account"
Bu işlemle hizmet hesabı oluşturulur ancak şu anda bu hesaba atanmış bir rol veya izin yoktur. Uygun rolü atamak için şu komutu çalıştırın:
gcloud projects add-iam-policy-binding <GCP PROJECT ID> --member serviceAccount:<SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com --role roles/cloudsql.client
Ör. Hizmet hesabınız, oluşturduğunuzda sa-test
olarak adlandırıldıysa ve projeniz my-project-test
ise komut şu şekilde olacaktır:
gcloud projects add-iam-policy-binding my-project-test --member serviceAccount:sa-test@my-project-test.iam.gserviceaccount.com --role roles/cloudsql.client
gcloud iam service-accounts keys create service-account.json --iam-account <SERVICE_ACCOUNT_NAME>@<GCP PROJECT ID>.iam.gserviceaccount.com
3. Compute Engine sanal makinesi oluşturma
Google Compute Engine, bağlanmak istediğimiz uygulamamızı barındıran ve sanal makinenin çalışacağı yönetilen hizmettir. Bu codelab'de uygulama geliştirmiyoruz ancak bağlantıyı psql çalıştırarak onaylayacağız.
Konsolda
Google Compute Engine sayfasına gidin ve düğmesini tıklayın.
Burada çok sayıda seçenek var. Tek yapmanız gereken:
- Örneğinize bir ad verin
Machine type
ayarını,f1-micro
olarak değiştirin- Kimlik ve API erişimi altında,
Service account
açılır menüsünüDefault compute service account
yerine önceki adımda oluşturduğunuz listeyle değiştirin. - Sayfanın en altında Tamamen Oluştur'u tıklayın
gcloud'u kullanma
Hizmet hesabı, daha önce oluşturduğunuz hizmet hesabının tam adıdır. Bu nedenle, <NAME>@<PROJECT>.iam.gserviceaccount.com
biçiminde olur.
gcloud compute instances create <INSTANCE NAME> --machine-type=f1-micro --zone=us-central1-b --service-account=<SERVICE ACCOUNT FULL NAME>
gcloud compute zones list
4. Cloud SQL örneğini oluşturma
Cloud SQL, sunduğumuz yönetilen ilişkisel veritabanlarıdır. MySQL, PostgreSQL ve SQL Server'ı destekler. Bu codelab için Postgres veritabanı oluşturacağız ancak üçü için de talimatlar benzerdir.
Konsolda
Cloud SQL sayfasına gidip düğmesini tıklayın.
Bahsettiğim gibi, bu codelab'in çoğu tüm SQL türlerine genel bir bakış sağlar ancak bu codelab'de PostgreSQL'i seçin.
- Örneğinize bir kimlik verin
- Varsayılan kullanıcı için bir şifre girin (kullanıcı adı, seçilen DB için varsayılan ayardır, ör. MySQL için
root
veya PostgreSQL içinpostgres
) - Compute örneğinizin bölgesini değiştirdiyseniz buradaki bölgeyi de eşleşecek şekilde değiştirmeniz gerekir.
- Aşağı kaydırın ve
show configuration options
simgesini tıklayın Connectivity
bölümünü genişletPublic IP
seçeneğinin işaretini kaldırın vePrivate IP
onay kutusunu işaretleyin- Özel IP kontrol edildiğinde gösterilen açılır menüde
default
öğesinin seçili olduğundan emin olun - Sayfayı aşağı kaydırın ve Oluştur'u tıklayın.
Örneğin başlatılması genellikle birkaç dakika sürer.
gcloud'u kullanma
Burada API'leri etkinleştirmek için elimizde iyi bir istem olmadığı için bunu manuel olarak yapmamız gerekecek.
gcloud services enable servicenetworking.googleapis.com
Ardından, varsayılan VPC ağımızda özel hizmet bağlantısını etkinleştirmemiz gerekir. Bunu yapmanın ilk adımı, örneğimiz için kullanmak üzere adlandırılmış bir IP adresi aralığı ayırmaktır.
gcloud compute addresses create sql-codelab-allocation --global --purpose=VPC_PEERING --prefix-length=24 --network=default
Sıradaki adım, dahili hizmetlerimize bu IP aralığını atamaktır (Bu işlem yaklaşık bir dakika sürer).
gcloud services vpc-peerings update --service=servicenetworking.googleapis.com --network=default --project=<PROJECT ID> --ranges=sql-codelab-allocation --force
Son olarak, örneğin kendisi şu anda yalnızca beta sürümünde oluşturulabilir. --no-assign-ip
ve --network=default
kombinasyonu, özel IP bağlantısını etkinleştirir. Şu anda hem Özel IP hem de Genel IP'yi aynı anda etkinleştirmek mümkün değildir. Bu nedenle, herkese açık erişime ihtiyacınız varsa örneği oluşturduktan sonra düzenlemeniz gerekir. Bu işlemin tamamlanması birkaç dakika sürebilir.
gcloud beta sql instances create test-sql-codelab-00 --no-assign-ip --database-version=POSTGRES_11 --tier=db-f1-micro --region=us-central1 --network=default --root-password=<PASSWORD>
5. Cloud SQL Proxy'yi kurma ve çalıştırma
Sanal makineye bağlandıktan sonra örnek bağlantı dizesi almamız gerekir. Önce SSH aracılığıyla sanal makineye bağlanacağız. Bu parçalarla ilgili talimatlar, Console ve gcloud için ilgili bölümlerde, diğerleri ise sanal makine üzerindeki kabuktan çalıştırılan komutlardan oluşur.
Konsolda
Buraya gidin ve Cloud SQL örneğinizin adını tıklayın.
Biraz aşağı kaydırın ve Connection name
öğesini daha sonra kullanmak üzere bir yere kopyalayın.
Google Compute Engine örnek listesi sayfasına gidin ve sanal makinenizin yer aldığı satırı bulun.
Connect
sütununda SSH
düğmesini tıkladığınızda sanal makineye güvenli bir şekilde bağlanan ayrı bir pencere açılır.
Her ikisi için de aynı kullanıldığından, talimatların geri kalanı için Using gcloud
bölümünü atlayın.
gcloud'u kullanma
<INSTANCE NAME>
kısmını Cloud SQL örneğinizin adıyla değiştirin:
gcloud sql instances describe <INSTANCE NAME> | grep connectionName
Örnek bağlantı adını daha sonra kullanmak üzere kaydedin.
<ZONE>
değerini, örneği oluşturduğunuzda kullanılan alt bölgeyle değiştirmeniz gerekir. Siz değiştirmediyseniz us-central1-b
olarak ayarlanmıştır. Ayrıca, <INSTANCE_NAME> bununla aynı olacaktır.
gcloud compute ssh --zone <ZONE> <INSTANCE_NAME>
Sanal makineye bağlandıktan sonra
İlk olarak, proxy'yi indirmemiz gerekir. İşletim sisteminize göre değişir. Sanal makine oluştururken işletim sistemini değiştirmediyseniz işletim sistemi Linux olur ve şunları kullanabilirsiniz:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy && chmod +x cloud_sql_proxy
İşletim sistemini değiştirdiyseniz işletim sisteminizin proxy'sini almak için buraya giderek doğru komutu bulabilirsiniz.
Proxy'yi çalıştırmak için <INSTANCE_CONNECTION_NAME>
öğesini değiştirmek üzere Cloud SQL örneği ayrıntılarından kopyaladığınız örnek bağlantı adını alın. Postgres db kullanmıyorsanız veya veritabanının dinlediği varsayılan bağlantı noktasını değiştirdiyseniz TCP bağlantı noktası numarasının değişebileceğini de unutmayın.
./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 &
6. Bağlantıyı ve süreci test edin.
Daha önce belirtildiği gibi, GCE örneğinde test etmek istediğiniz bir uygulamanız varsa elbette sorun yoktur. Bu codelab'de psql'yi yükleyeceğiz ve veritabanımıza bağlanabildiğimizi doğrulamak için bu istemciyi kullanacağız.
Sanal makine üzerindeki SSH oturumundan:
sudo apt-get install postgresql-client
psql "host=127.0.0.1 port=5432 sslmode=disable user=postgres"
Ardından, Cloud SQL örneğini oluştururken ayarladığınız varsayılan kullanıcı şifresini belirtin.
Tebrikler! Her şey yolunda gittiyse Postgres istemi görüntülenir ve veritabanınızda komut çalıştırabilirsiniz.
Sırada ne var?
Bu codelab'lerden bazılarına göz atın...