Cloud Run İşi ile AlloyDB veritabanı oluşturma

1. Genel Bakış

Bu laboratuvarda, Cloud Run işiyle bir AlloyDB veritabanı oluşturacaksınız. Özel IP kullanarak Cloud Run işi ile AlloyDB veritabanı arasında bağlantı kurmak için özel hizmet erişimi ve sunucusuz VPC erişimi'ni yapılandıracaksınız.

Öğrenecekleriniz

Bu laboratuvarda şunları yapmayı öğreneceksiniz:

  • AlloyDB kümesini ve örneğini ayarlama
  • AlloyDB veritabanı oluşturmak için Cloud Run işini dağıtma

2. Kurulum ve Gereksinimler

Cloud projesi 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Ortam Kurulumu

Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.

eb0157a992f16fa3.png

Hizmet API'lerini etkinleştirmek için aşağıdaki komutu kopyalayıp terminale yapıştırın ve Enter tuşuna basın:

gcloud services enable \
    alloydb.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com \
    vpcaccess.googleapis.com \
    compute.googleapis.com \
    servicenetworking.googleapis.com \
    --quiet

Ortam değişkenlerini ayarlayın:

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. AlloyDB kümesini ayarlama ve oluşturma

Kurulum için gerekli izinleri ayarlayın. Bu işlem, Cloud Run işinin AlloyDB veritabanına bağlanmasına olanak tanır.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

Özel hizmet erişimini yapılandırma

Özel hizmet erişimi, VPC ağınız ile AlloyDB kaynaklarınızın (kümeler ve örnekler) bulunduğu temel Google Cloud VPC ağı arasında bir VPC eşleme bağlantısı olarak uygulanır. Özel bağlantı, VPC ağınızdaki kaynakların eriştiği AlloyDB kaynaklarıyla yalnızca dahili IP adreslerini kullanarak iletişim kurabilmesini sağlar. VPC ağınızdaki kaynakların AlloyDB kaynaklarına ulaşmak için internet erişimine veya harici IP adreslerine ihtiyacı yoktur.

AlloyDB ile aynı Cloud projesinde bulunan bir VPC ağında özel hizmet erişimi yapılandırması oluşturmak için iki işlem yaparsınız:

VPC ağında ayrılmış bir IP adresi aralığı oluşturun.

gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=20 \
    --network=projects/$PROJECT_ID/global/networks/default

VPC ağı ile temel alınan Google Cloud VPC ağı arasında özel bir bağlantı oluşturun. Bu adım yaklaşık 2 dakika sürer.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default \
    --project=$PROJECT_ID

AlloyDB kümesi oluşturun.

gcloud beta alloydb clusters create $CLUSTER \
    --password=$DB_PASSWORD \
    --network=default \
    --region=$REGION \
    --project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER --region=$REGION

AlloyDB örneği oluşturun. Bu adım yaklaşık 10 dakika sürer.

gcloud beta alloydb instances create $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region $REGION

Oluşturulan kümeyi Cloud Console'da inceleyin.

568d273c0e0d6408.png

Veritabanı IP adresini bir değişkene kaydedin.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo "DB_HOST=$DB_HOST"

4. Cloud Run iş kodunu keşfedin

AlloyDB veritabanı oluşturmanın birden fazla yolu vardır. Birincisi, Compute Engine VM oluşturup psql istemcisini yüklemek ve ardından veritabanı oluşturmak için örneğe bağlanmaktır. Bu yaklaşım hakkında daha fazla bilgiyi burada bulabilirsiniz.

Bu laboratuvarda Cloud Run işini kullanarak yeni bir AlloyDB veritabanı oluşturacaksınız.

Aşağıdaki dosyaları inceleyin:

  • Dockerfile: Gerekli bağımlılıkları(postgresql-client) yükler.
  • script.sh: Veritabanı oluşturmak için komut satırı yardımcı programlarını kullanır.

Cloud Shell'de yeni bir klasör oluşturun:

mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job 

Yeni dosya oluşturma Dockerfile:

cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF

Aşağıdaki içeriğe sahip yeni bir script.sh dosyası oluşturun:

echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"

psql -h $DB_HOST -l

script.sh dosyasındaki izni değiştirin:

chmod +x script.sh

5. Cloud Run işini dağıtma

Sunucusuz VPC erişimini yapılandırın. Bu, Cloud Run işinin dahili/özel IP kullanarak AlloyDB kümesiyle iletişim kurmasına olanak tanır. Bu adım yaklaşık 2 dakika sürer.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

Container görüntülerini depolamak için Artifact Registry deposu oluşturun.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

Container görüntüsünü oluşturup Artifact Registry'de yayınlayın.

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Cloud Run işini dağıtın.

gcloud beta run jobs create db-job \
    --image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
    --set-env-vars DB_HOST=$DB_HOST \
    --set-env-vars PGUSER=$DB_USER \
    --set-env-vars PGPASSWORD=$DB_PASSWORD \
    --set-env-vars PGDB=$DB_DATABASE \
    --vpc-connector $VPC_CONNECTOR \
    --region $REGION

İşi oluşturmak için kullanılan işaretleri inceleyin:

--vpc-connector - Cloud Run işi, AlloyDB özel IP adresine ulaşmak için VPC bağlayıcısını kullanır.

Oluşturulan işi Cloud Console'da inceleyin.

93d8224eca8c687f.png

test veritabanı oluşturmak için Cloud Run işini yürütün.

gcloud beta run jobs execute db-job --region $REGION

Cloud Console'da Cloud Run işi günlüklerini inceleyin.

3f2269736b53f44c.png

6. Tebrikler!

Tebrikler, codelab'i tamamladınız.

İşlediğimiz konular:

  • AlloyDB kümesi ve örneği oluşturma
  • Cloud Run işini kullanarak AlloyDB veritabanı oluşturma

Temizleme

Bu eğitimde kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini önlemek amacıyla kaynakları içeren projeyi silin veya projeyi koruyup tek tek kaynakları silin.

Projeyi silme

Faturalandırılmanın önüne geçmenin en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.