Men-deploy dan Menjalankan n8n di Google Cloud Run

1. Pengantar

Dalam codelab ini, Anda akan menyiapkan n8n di Google Cloud Run. n8n adalah alat otomatisasi alur kerja open source yang memungkinkan pengguna menghubungkan berbagai aplikasi dan layanan untuk mengotomatiskan tugas berulang.

Codelab ini didasarkan pada panduan dokumentasi n8n, yang menjelaskan cara menghosting n8n di Google Cloud Run. Kita akan menginstal dan mengonfigurasi versi n8n yang merupakan deployment n8n yang lebih andal dan siap produksi di Cloud Run. Hal ini mencakup resource seperti database untuk persistensi dan Secret Manager untuk data sensitif.

Yang akan Anda lakukan

  • Deploy n8n di Google Cloud Run, yang merupakan platform komputasi serverless terkelola sepenuhnya yang menjalankan container stateless di infrastruktur Google.

Yang akan Anda pelajari

  • Menyediakan dan mengisi database Cloud SQL untuk PostgreSQL yang akan bertindak sebagai versi persisten dan tahan lama untuk penginstalan n8n kita.
  • Sediakan image container n8n ke Google Cloud Run.
  • Uji penginstalan n8n di Google Cloud Run.

Yang Anda butuhkan

  • Browser web Chrome
  • Akun Gmail
  • Project Cloud dengan penagihan diaktifkan

2. Sebelum memulai

Membuat project

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project .
  3. Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud yang telah dilengkapi dengan bq. Klik Activate Cloud Shell di bagian atas konsol Google Cloud.

Gambar tombol Aktifkan Cloud Shell

  1. Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
  1. Aktifkan API yang diperlukan melalui perintah yang ditampilkan di bawah. Proses ini mungkin memerlukan waktu beberapa menit, jadi bersabarlah.
gcloud services enable run.googleapis.com \
                       sqladmin.googleapis.com \
                       secretmanager.googleapis.com 

Setelah perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:

Operation "operations/..." finished successfully.

Jika ada API yang terlewat, Anda dapat mengaktifkannya kapan saja selama pelaksanaan. Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

Terakhir, kita akan menetapkan beberapa variabel lingkungan yang akan kita gunakan dalam skrip yang akan kita jalankan dalam beberapa langkah berikutnya. Di Terminal Cloud Shell, jalankan dua perintah berikut (Jangan lupa mengganti GCP_PROJECT_ID dan GCP_REGION dengan nilai masing-masing untuk project ID dan region (misalnya us-central1) tempat Anda ingin deployment ini dilakukan. Kita akan menggunakan us-central1 untuk deployment.

export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1

3. Membuat instance Cloud SQL

Kita akan menggunakan instance Google Cloud SQL untuk PostgreSQL, yang akan menjadi lapisan persistensi untuk menyimpan instance n8n dan data eksekusi kita. Hal ini diperlukan agar penyiapan kita tahan lama.

Cloud SQL untuk PostgreSQL adalah layanan database terkelola sepenuhnya yang membantu Anda menyiapkan, memelihara, mengelola, dan mengatur database relasional PostgreSQL di Google Cloud Platform.

Jalankan perintah berikut di Cloud Shell untuk membuat instance:

gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres

Perintah ini memerlukan waktu sekitar 5 menit untuk dijalankan. Setelah perintah berhasil dieksekusi, Anda akan melihat output yang menunjukkan bahwa perintah telah selesai, beserta informasi instance Cloud SQL Anda seperti NAME, DATABASE_VERSION, LOCATION, dll.

Perhatikan bahwa kita telah menggunakan nilai root-password sebagai postgres. Jika Anda mengubahnya menjadi sesuatu yang lain, simpan baik-baik.

4. Menyiapkan Database n8n dan kredensial pengguna database

Setelah instance Cloud SQL untuk PostgreSQL siap, kita dapat membuat database n8n di dalamnya, sekaligus menyimpan sandi database dan kunci enkripsi di Google Cloud Secrets Manager.

Pertama, mari kita buat database bernama n8n di instance Cloud SQL (n8n-db) yang telah kita buat. Semua perintah di bawah harus dijalankan di terminal Google Cloud Shell.

gcloud sql databases create n8n --instance=n8n-db

Setelah berhasil dibuat, Anda akan melihat pesan sebagai berikut:

Creating Cloud SQL database...done.                                                                                                                                                                                                           
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID

Setelah database dibuat, mari kita buat akun pengguna untuk database tersebut. Kita akan menggunakan kredensial berikut:

  • ID pengguna : n8n-user
  • sandi : n8n

Catatan: Jika ingin menggunakan sandi lain yang lebih kuat (direkomendasikan untuk produksi), Anda harus menggunakannya, bukan sandi yang telah kita pilih di sini, yaitu n8n. Namun, pastikan Anda menggunakannya secara konsisten dalam beberapa perintah berikutnya juga.

Perintah untuk membuat pengguna database diberikan di bawah:

gcloud sql users create n8n-user \
    --instance=n8n-db \
    --password="n8n"

Pada tahap ini, sebaiknya simpan kredensial untuk sandi database pengguna dan kunci enkripsi ke Google Cloud Secret Manager, yang merupakan sistem penyimpanan yang aman dan nyaman untuk kunci API, sandi, sertifikat, dan data sensitif lainnya.

Kita mulai dengan perintah berikut yang mengambil sandi yang telah kita gunakan (n8n) dan menyalurkannya ke perintah gcloud secrets create. Kunci rahasia kita adalah n8n-db-password.

printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-        

Demikian pula, kita akan menggunakan serangkaian perintah berikutnya untuk membuat kunci enkripsi, lalu membuat variabel rahasia n8n-encryption-key yang akan menyimpan nilai tersebut.

openssl rand -base64 -out my-encryption-key 42

gcloud secrets create n8n-encryption-key \
    --data-file=my-encryption-key \
    --replication-policy="automatic"        

5. Membuat Akun Layanan untuk Google Cloud Run

Kita akan men-deploy n8n di Google Cloud Run pada langkah berikutnya. Untuk mempersiapkannya, kita akan membuat Akun Layanan yang akan digunakan Cloud Run untuk menjalankan alur kerja n8n. Untuk itu, kita ingin memastikan bahwa Akun Layanan yang kita buat hanya memiliki peran/izin persyaratan minimum di Google Cloud.

Mengingat persyaratan kami saat ini, kami akan memerlukan peran berikut untuk Akun Layanan yang kami buat:

  • roles/cloudsql.client : Hal ini diperlukan agar Akun Layanan dapat mengakses database Cloud SQL kita
  • roles/secretAccessor : Kita harus memberikan peran ini untuk mengakses kunci Secret Manager untuk n8n-db-password dan n8n-encryption-key.

Mari kita mulai. Semua perintah di bawah harus dijalankan di Google Cloud Shell. Yang pertama membuat Akun Layanan, lalu kita memberikan peran yang diperlukan seperti yang dibahas. Jalankan setiap perintah satu per satu. Jika Anda diminta untuk menentukan kondisi untuk salah satu perintah di bawah, pilih "None".

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"

Sekarang kita siap men-deploy image container n8n ke Google Cloud Run.

6. Men-deploy n8n ke Google Cloud Run

Jalankan perintah berikut di Google Cloud Shell:

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

Deployment kemungkinan akan memerlukan waktu sekitar satu menit. Setelah deployment berhasil, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:

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

Catat URL Layanan di output di atas, karena Anda akan menggunakannya pada langkah berikutnya untuk meluncurkan konsol n8n.

7. Menjalankan alur kerja n8n

Luncurkan browser dan buka URL Layanan yang Anda dapatkan pada langkah sebelumnya. Anda juga dapat memperoleh URL Layanan dari halaman beranda Cloud Run, tempat Anda akan melihat n8n tercantum sebagai salah satu layanan.

Catatan: Jika Anda mendapatkan error yang mengatakan layar Cannot GET / atau n8n is starting up, biasanya ini menunjukkan bahwa n8n masih dalam proses memulai. Anda dapat memuat ulang halaman dan halaman akan dimuat pada akhirnya.

Pada akhirnya, Anda akan melihat layar seperti yang ditunjukkan di bawah, tempat Anda dapat menyiapkan Akun Pemilik:

5a3b1d60d02b13ec.png

Isi detail yang diperlukan, catat sandi, dan selesaikan penyiapan. Anda dapat melewati beberapa langkah, termasuk langkah yang meminta pengiriman kunci lisensi.

Jika semuanya berjalan lancar, Anda akan melihat halaman beranda untuk n8n seperti yang ditunjukkan di bawah:

3e072e9189ff9464.png

Jika sudah terbiasa dengan n8n, Anda akan dapat memahami dan menyelesaikan lab ini.

Jika ingin mencoba n8n, Anda dapat mencoba alur kerja berikut:

  1. Klik Kredensial, lalu Tambahkan kredensial pertama.

14a1f3d2098a266c.png

  1. Kita akan menyiapkan kredensial Kunci API Gemini. Ketik gemini untuk menampilkan opsi Google Gemini (PaLM) API, lalu klik Continue.

7f48bfe35e5d9e98.png

  1. Anda bisa mendapatkan Kunci Gemini API dari https://aistudio.google.com/app/api-keys.
  2. Setelah Anda memiliki kunci, tempelkan kunci tersebut. n8n akan memvalidasi kunci dan kredensial kini telah disiapkan.

3f31cbfc5072f113.png 5. Sekarang, buka opsi Alur kerja, lalu klik Mulai dari awal atau buat alur kerja baru. Tindakan ini akan menampilkan kanvas kosong, tempat Anda dapat membuat dua node berikut, yang satu adalah pemicu (Simple Chat) dan yang lainnya adalah Agen, tempat kita akan menyiapkan Kredensial yang kita buat, sehingga model Agen akan menjadi Google Gemini. Terakhir, Anda akan memiliki alur kerja yang terlihat seperti ini:

8f394e456ae7d1a.png

  1. Anda dapat menjalankan alur kerja ini melalui panel chat dan jika semuanya berjalan lancar, Anda akan mendapatkan respons terhadap perintah Anda. Contoh layar eksekusi ditampilkan di bawah:

aec85c84f65d0da1.png

Tindakan ini menyelesaikan validasi deployment n8n di Google Cloud Run.

8. Pembersihan

Jika Anda memilih untuk menggunakan codelab ini untuk mempelajari cara menginstal dan menjalankan n8n di Google Cloud Run dan bukan untuk persyaratan produksi / permanen, Anda dapat menghindari biaya berkelanjutan pada akun Google Cloud Anda. Untuk itu, penting untuk menghapus resource yang kita buat selama workshop ini.

Kita akan menghapus instance Cloud SQL dan menghapus layanan Cloud Run yang telah kita deploy.

Pastikan variabel lingkungan berikut ditetapkan dengan benar, sesuai dengan project dan region Anda:

export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"

Dua perintah berikut akan menghapus layanan Cloud Run yang telah kita deploy:

gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

Perintah berikut akan menghapus instance Cloud SQL:

gcloud sql instances delete n8n-db

Dua perintah berikut akan menghapus kunci Secret Manager yang kita buat:

gcloud secrets delete n8n-db-password

gcloud secrets delete n8n-encryption-key

9. Selamat

Selamat, Anda telah berhasil men-deploy n8n di Google Cloud Run dan memvalidasi penyiapan dengan alur kerja contoh.

Dokumen referensi