1. Giriş
Bu codelab'de, Google Cloud Run'da n8n'yi ayarlayacaksınız. n8n, kullanıcıların farklı uygulamaları ve hizmetleri bağlayarak tekrarlayan görevleri otomatikleştirmesine olanak tanıyan açık kaynaklı bir iş akışı otomasyon aracıdır.
Bu codelab, n8n'nin Google Cloud Run'da nasıl barındırılacağını açıklayan n8n doküman kılavuzuna dayanmaktadır. Cloud Run'da n8n'nin daha dayanıklı, üretime hazır bir dağıtımı olan n8n sürümünü yükleyip yapılandıracağız. Kalıcılık için veritabanı ve hassas veriler için Secret Manager gibi kaynaklar içerir.
Yapacaklarınız
- Google'ın altyapısında durum bilgisiz container'lar çalıştıran, tümüyle yönetilen sunucusuz bir bilgi işlem platformu olan Google Cloud Run'da n8n'yi dağıtın.
Neler öğreneceksiniz?
- n8n kurulumumuz için kalıcı ve dayanıklı bir sürüm görevi görecek bir Cloud SQL for PostgreSQL veritabanı sağlama ve bu veritabanını doldurma.
- n8n container görüntüsünü Google Cloud Run'da sağlama.
- n8n'nin Google Cloud Run'a yüklenmesini test edin.
Gerekenler
- Chrome web tarayıcısı
- Gmail hesabı
- Faturalandırmanın etkin olduğu bir Cloud projesi
2. Başlamadan önce
Proje oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin .
- bq'nun önceden yüklendiği, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.

- Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlanıp ayarlanmadığını kontrol edin:
gcloud auth list
- gcloud komutunun projeniz hakkında bilgi sahibi olduğunu doğrulamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
- Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Aşağıdaki komutu kullanarak gerekli API'leri etkinleştirin. Bu işlem birkaç dakika sürebilir. Lütfen bekleyin.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
Komut başarıyla yürütüldüğünde aşağıda gösterilene benzer bir mesaj görürsünüz:
Operation "operations/..." finished successfully.
Herhangi bir API atlanırsa uygulama sırasında istediğiniz zaman etkinleştirebilirsiniz. gcloud komutları ve kullanımı için belgelere bakın.
Son olarak, önümüzdeki birkaç adımda çalıştıracağımız komut dosyalarında kullanacağımız birkaç ortam değişkeni ayarlayacağız. Cloud Shell terminalinizde aşağıdaki iki komutu çalıştırın (GCP_PROJECT_ID ve GCP_REGION yerine proje kimliğiniz ve bu dağıtımın yapılmasını istediğiniz bölge (ör. us-central1) için ilgili değerleri yazmayı unutmayın). Dağıtım için us-central1 seçeneğini kullanacağız.
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Cloud SQL örneği oluşturma
n8n örneğimizi ve yürütme verilerimizi depolamak için kalıcılık katmanımız olarak Google Cloud SQL for PostgreSQL örneğini kullanacağız. Kurulumumuzun dayanıklı olması için bu gereklidir.
PostgreSQL için Cloud SQL, Google Cloud Platform'da PostgreSQL ilişkisel veritabanlarınızı kurmanıza, yönetmenize ve bakımını yapmanıza yardımcı olan, tümüyle yönetilen bir veritabanı hizmetidir.
Örneği oluşturmak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Bu komutun yürütülmesi yaklaşık 5 dakika sürer. Komut başarıyla yürütüldüğünde, komutun tamamlandığını belirten bir çıkışın yanı sıra Cloud SQL örneği bilgileriniz (ör. NAME, DATABASE_VERSION, LOCATION) gösterilir.
root-password değerini postgres olarak kullandığımızı unutmayın. Başka bir şeyle değiştirirseniz lütfen bu bilgiyi saklayın.
4. n8n veritabanını ve veritabanı kullanıcı kimlik bilgilerini ayarlama
PostgreSQL için Cloud SQL örneğimiz hazır olduğuna göre, veritabanı şifremizi ve şifreleme anahtarımızı Google Cloud Secrets Manager'da saklamanın yanı sıra bu örnekte n8n veritabanımızı oluşturabiliriz.
Öncelikle, oluşturduğumuz Cloud SQL örneğinde (n8n-db) n8n adlı bir veritabanı oluşturalım. Aşağıdaki tüm komutlar Google Cloud Shell terminalinde çalıştırılmalıdır.
gcloud sql databases create n8n --instance=n8n-db
Başarıyla oluşturulduğunda aşağıdaki gibi bir mesaj görürsünüz:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Veritabanı oluşturulduğuna göre şimdi bu veritabanı için bir kullanıcı hesabı oluşturalım. Aşağıdaki kimlik bilgilerini kullanacağız:
- Kullanıcı kimliği :
n8n-user - şifre :
n8n
Not: Daha güçlü bir şifre kullanmak isterseniz (üretim için önerilir) burada seçtiğimiz şifre (ör.n8n) yerine bu şifreyi kullanmanız gerekir. Ancak sonraki birkaç komutta da tutarlı bir şekilde kullandığınızdan emin olun.
Veritabanı kullanıcısı oluşturma komutu aşağıda verilmiştir:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
Bu noktada, kullanıcı veritabanı şifresinin ve şifreleme anahtarının kimlik bilgilerini Google Cloud Secret Manager'da depolamanız önerilir. Secret Manager, API anahtarları, şifreler, sertifikalar ve diğer hassas veriler için güvenli ve kullanışlı bir depolama sistemidir.
Kullandığımız şifreyi (n8n)) alan ve gcloud secrets create komutuna yönlendiren aşağıdaki komutla başlıyoruz. Gizli anahtarımız n8n-db-password olacak.
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Benzer şekilde, şifreleme anahtarı oluşturmak ve ardından değeri tutacak bir gizli değişken olan n8n-encryption-key oluşturmak için bir sonraki komut grubunu kullanacağız.
openssl rand -base64 -out my-encryption-key 42
gcloud secrets create n8n-encryption-key \
--data-file=my-encryption-key \
--replication-policy="automatic"
5. Google Cloud Run için hizmet hesabı oluşturma
Bir sonraki adımda n8n'yi Google Cloud Run'a dağıtacağız. Buna hazırlanmak için Cloud Run'ın n8n iş akışlarını yürütmek üzere kullanacağı bir hizmet hesabı oluşturacağız. Bu nedenle, oluşturduğumuz hizmet hesabının Google Cloud'da yalnızca minimum gereksinim rollerine/izinlerine sahip olmasını istiyoruz.
Mevcut şartlarımız doğrultusunda, oluşturduğumuz hizmet hesabı için aşağıdaki roller gereklidir:
roles/cloudsql.client: Bu, hizmet hesabının Cloud SQL veritabanımıza erişmesi için gereklidir.roles/secretAccessor: Hemn8n-db-passwordhem den8n-encryption-keyiçin Secret Manager anahtarlarına erişmek üzere bu rolü sağlamamız gerekir.
Hadi başlayalım. Aşağıdaki tüm komutlar Google Cloud Shell'de yürütülmelidir. İlkinde hizmet hesabı oluşturulur ve ardından, daha önce bahsedildiği gibi gerekli roller sağlanır. Komutların her birini art arda çalıştırın. Aşağıdaki komutlardan herhangi biri için koşul belirtmeniz istenirse "None" seçeneğini belirleyin.
gcloud iam service-accounts create n8n-service-account \
--display-name="n8n Service Account"
export SA_NAME=n8n-service-account@$PROJECT_ID.iam.gserviceaccount.com
gcloud secrets add-iam-policy-binding n8n-db-password \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud secrets add-iam-policy-binding n8n-encryption-key \
--member="serviceAccount:$SA_NAME" \
--role="roles/secretmanager.secretAccessor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA_NAME" \
--role="roles/cloudsql.client"
Artık n8n container görüntüsünü Google Cloud Run'a dağıtmaya hazırız.
6. n8n'yi Google Cloud Run'a dağıtma
Google Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud run deploy n8n \
--image=n8nio/n8n:latest \
--command="/bin/sh" \
--args="-c,sleep 5;n8n start" \
--region=$REGION \
--allow-unauthenticated \
--port=5678 \
--memory=2Gi \
--no-cpu-throttling \
--set-env-vars="N8N_PORT=5678,N8N_PROTOCOL=https,DB_TYPE=postgresdb,DB_POSTGRESDB_DATABASE=n8n,DB_POSTGRESDB_USER=n8n-user,DB_POSTGRESDB_HOST=/cloudsql/$PROJECT_ID:$REGION:n8n-db,DB_POSTGRESDB_PORT=5432,DB_POSTGRESDB_SCHEMA=public,GENERIC_TIMEZONE=UTC,QUEUE_HEALTH_CHECK_ACTIVE=true" \
--set-secrets="DB_POSTGRESDB_PASSWORD=n8n-db-password:latest,N8N_ENCRYPTION_KEY=n8n-encryption-key:latest" \
--add-cloudsql-instances=$PROJECT_ID:$REGION:n8n-db \
--service-account=$SA_NAME
Dağıtım işlemi yaklaşık bir dakika sürer. Dağıtım başarılı olduğunda aşağıda gösterilene benzer bir mesaj görürsünüz:
Deploying container to Cloud Run service [n8n] in project [YOUR_PROJECT_ID] region [us-central1]
Deploying new service...
Setting IAM Policy...done
Creating Revision...done
Routing traffic...done
Done.
Service [n8n] revision [n8n-00001-8nh] has been deployed and is serving 100 percent of traffic.
Service URL: https://n8n-<SOME_ID>.us-central1.run.app
Yukarıdaki çıktıda hizmet URL'sini not edin. Bu URL'yi, n8n konsolunu başlatmak için bir sonraki adımda kullanacaksınız.
7. n8n iş akışı çalıştırma
Bir tarayıcı başlatın ve önceki adımda aldığınız hizmet URL'sini ziyaret edin. Hizmet URL'sini Cloud Run ana sayfasından da alabilirsiniz. Burada n8n, hizmetlerden biri olarak listelenir.
Not: Cannot GET / ekranı veya n8n is starting up hatası alırsanız bu genellikle n8n'nin henüz başlatılmadığını gösterir. Sayfayı yenileyebilirsiniz. Sayfa sonunda yüklenir.
Sonunda, aşağıda gösterilene benzer bir ekran görürsünüz. Bu ekranda sahip hesabını ayarlayabilirsiniz:

Gerekli bilgileri doldurun, şifreyi not edin ve kurulumu tamamlayın. Lisans anahtarı göndermenizi isteyen adım da dahil olmak üzere bazı adımları atlayabilirsiniz.
Her şey yolunda giderse n8n'nin ana sayfasını aşağıdaki gibi görürsünüz:

n8n'i biliyorsanız bu laboratuvarı tamamlayabilirsiniz.
n8n'yi kısa bir test sürüşüne çıkarmak isterseniz aşağıdaki iş akışını deneyebilirsiniz:
- Kimlik bilgileri'ni ve ardından İlk kimlik bilgisini ekle'yi tıklayın.

- Gemini API anahtarı kimlik bilgisi oluşturacağız. Google Gemini (PaLM) API seçeneğini görüntülemek için gemini yazın ve Devam'ı tıklayın.

- Gemini API anahtarını https://aistudio.google.com/app/api-keys adresinden alabilirsiniz.
- Anahtarı aldıktan sonra yapıştırın. n8n, anahtarı doğrular ve kimlik bilgisi ayarlanır.
5. Şimdi İş Akışları seçeneğine gidin ve Sıfırdan başla'yı tıklayın veya yeni bir iş akışı oluşturun. Bu işlemle boş bir tuval açılır. Burada aşağıdaki iki düğümü oluşturabilirsiniz. Bunlardan biri tetikleyici (Basit Sohbet), diğeri ise oluşturduğumuz kimlik bilgisini ayarlayacağımız bir aracıdır. Böylece aracı modeli Google Gemini olur. Son olarak, aşağıdaki gibi bir iş akışınız olmalıdır:

- Bu iş akışını sohbet bölmesi üzerinden çalıştırabilir ve her şey yolunda giderse istemlerinize yanıt alabilirsiniz. Örnek yürütme ekranları aşağıda gösterilmektedir:

Google Cloud Run'daki n8n dağıtımımızın doğrulanması tamamlandı.
8. Temizleme
Bu codelab'i Google Cloud Run'da n8n'yi nasıl yükleyip çalıştıracağınızı öğrenmek için kullanmayı tercih ettiyseniz ve üretim / kalıcı gereksinim için kullanmıyorsanız Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek için bu atölye çalışması sırasında oluşturduğumuz kaynakları silmeniz önemlidir.
Cloud SQL örneğini ve dağıttığımız Cloud Run hizmetini sileceğiz.
Projenize ve bölgenize göre aşağıdaki ortam değişkenlerinin doğru şekilde ayarlandığından emin olun:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Aşağıdaki iki komut, dağıttığımız Cloud Run hizmetlerini siler:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
Aşağıdaki komut, Cloud SQL örneğini siler:
gcloud sql instances delete n8n-db
Aşağıdaki iki komut, oluşturduğumuz Secret Manager anahtarlarını siler:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Tebrikler
Tebrikler! n8n'yi Google Cloud Run'da başarıyla dağıttınız ve kurulumu örnek bir iş akışıyla doğruladınız.