1. Введение
В этом практическом задании вы настроите n8n в Google Cloud Run. n8n — это инструмент автоматизации рабочих процессов с открытым исходным кодом, который позволяет пользователям подключать различные приложения и сервисы для автоматизации повторяющихся задач.
Данная практическая работа основана на руководстве по документации n8n , в котором объясняется, как разместить n8n в Google Cloud Run. Мы будем устанавливать и настраивать версию n8n, которая представляет собой более надежную, готовую к использованию в производственной среде версию n8n в Cloud Run. Она включает в себя такие ресурсы, как база данных для постоянного хранения данных и менеджер секретов для конфиденциальных данных.
Что вы будете делать
- Разверните n8n на Google Cloud Run , полностью управляемой бессерверной вычислительной платформе, которая запускает контейнеры без сохранения состояния на инфраструктуре Google.
Что вы узнаете
- Создание и заполнение базы данных Cloud SQL for PostgreSQL, которая будет выступать в качестве постоянной и надежной версии для нашей инсталляции n8n.
- Разверните образ контейнера n8n в Google Cloud Run.
- Протестируйте установку n8n в Google Cloud Run.
Что вам понадобится
- Веб-браузер Chrome
- Аккаунт Gmail
- Облачный проект с включенной функцией выставления счетов.
2. Прежде чем начать
Создать проект
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
- Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud и поставляемую с предустановленным bq. Нажмите «Активировать Cloud Shell» в верхней части консоли Google Cloud.

- После подключения к Cloud Shell необходимо проверить, прошли ли вы аутентификацию и установлен ли идентификатор вашего проекта, используя следующую команду:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Если ваш проект не задан, используйте следующую команду для его установки:
gcloud config set project <YOUR_PROJECT_ID>
- Включите необходимые API с помощью команды, указанной ниже. Это может занять несколько минут, поэтому, пожалуйста, наберитесь терпения.
gcloud services enable run.googleapis.com \
sqladmin.googleapis.com \
secretmanager.googleapis.com
После успешного выполнения команды вы должны увидеть сообщение, похожее на показанное ниже:
Operation "operations/..." finished successfully.
Если какой-либо API отсутствует, вы всегда можете включить его в процессе внедрения. Для получения информации о командах gcloud и их использовании обратитесь к документации .
Наконец, мы установим несколько переменных среды, которые будем использовать в скриптах, запускаемых на следующих этапах. В терминале Cloud Shell выполните следующие две команды (не забудьте заменить GCP_PROJECT_ID и GCP_REGION соответствующими значениями идентификатора вашего проекта и региона (например us-central1 ), где вы хотите выполнить развертывание. Мы будем использовать регион us-central1 для развертывания).
export PROJECT_ID=GCP_PROJECT_ID
export REGION=us-central1
3. Создайте экземпляр Cloud SQL.
Мы будем использовать экземпляр Google Cloud SQL для PostgreSQL , который послужит уровнем постоянного хранения данных для нашего экземпляра n8n и данных о выполнении. Это необходимо для обеспечения надежности нашей системы.
Cloud SQL for PostgreSQL — это полностью управляемый сервис баз данных, который помогает настраивать, поддерживать, управлять и администрировать ваши реляционные базы данных PostgreSQL на платформе Google Cloud Platform.
Для создания экземпляра выполните следующую команду в Cloud Shell:
gcloud sql instances create n8n-db \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres
Выполнение этой команды занимает приблизительно 5 минут . После успешного выполнения команды вы увидите сообщение о завершении работы, а также информацию о вашем экземпляре Cloud SQL, такую как NAME, DATABASE_VERSION, LOCATION и т. д.
Обратите внимание, что мы использовали значение root-password как postgres . Если вы измените его на другое, пожалуйста, сохраните это значение.
4. Настройка базы данных n8n и учетных данных пользователя базы данных.
Теперь, когда у нас готов экземпляр Cloud SQL for PostgreSQL, мы можем создать в нем базу данных n8n, а также сохранить пароль к базе данных и ключ шифрования в Google Cloud Secrets Manager.
Для начала давайте создадим базу данных с именем n8n в нашем экземпляре Cloud SQL ( n8n-db ), который мы создали. Все приведенные ниже команды следует выполнять в терминале Google Cloud Shell.
gcloud sql databases create n8n --instance=n8n-db
После успешного создания вы должны увидеть следующее сообщение:
Creating Cloud SQL database...done.
Created database [n8n].
instance: n8n-db
name: n8n
project: YOUR_GCP_PROJECT_ID
Теперь, когда база данных создана, давайте создадим для неё учётную запись пользователя. Мы будем использовать следующие учетные данные:
- идентификатор пользователя:
n8n-user - пароль:
n8n
Примечание : Если вы хотите использовать другой, более надежный пароль (рекомендуется для производственной среды), используйте его вместо выбранного нами пароля, а именно n8n, но обязательно используйте его последовательно и в следующих нескольких командах.
Команда для создания пользователя базы данных приведена ниже:
gcloud sql users create n8n-user \
--instance=n8n-db \
--password="n8n"
На данном этапе целесообразно сохранить учетные данные для пароля базы данных пользователей и ключа шифрования в Google Cloud Secret Manager , который представляет собой безопасную и удобную систему хранения ключей API, паролей, сертификатов и других конфиденциальных данных.
Начнём со следующей команды, которая принимает использованный нами пароль ( n8n) и передаёт его в команду gcloud secrets create . Наш секретный ключ будет n8n-db-password .
printf "n8n" | gcloud secrets create n8n-db-password --replication-policy="automatic" --data-file=-
Аналогичным образом, мы воспользуемся следующим набором команд для генерации ключа шифрования, а затем создадим секретную переменную n8n-encryption-key, которая будет хранить это значение.
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.
На следующем шаге мы развернем n8n в Google Cloud Run. Для подготовки к этому мы создадим учетную запись службы, которую Cloud Run будет использовать для выполнения рабочих процессов n8n. Для этого нам нужно убедиться, что созданная нами учетная запись службы имеет только минимально необходимые роли/разрешения в Google Cloud.
С учетом текущих требований, для создаваемой нами учетной записи службы потребуются следующие роли:
-
roles/cloudsql.client: Это необходимо для доступа учетной записи службы к нашей базе данных Cloud SQL. -
roles/secretAccessor: Нам потребуется предоставить эту роль для доступа к ключам менеджера секретов как дляn8n-db-passwordтак и дляn8n-encryption-key.
Начнём. Все приведённые ниже команды необходимо выполнить в Google Cloud Shell. Первая команда создаёт учётную запись службы, а затем мы предоставляем необходимые роли, как обсуждалось ранее. Выполняйте каждую команду по очереди. Если вас попросят указать условие для какой-либо из команд ниже, выберите "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"
Теперь мы готовы развернуть образ контейнера n8n в Google Cloud Run.
6. Разверните n8n в Google Cloud Run.
Выполните следующую команду в 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
Развертывание, вероятно, займет около минуты. После успешного развертывания вы должны увидеть сообщение, похожее на показанное ниже:
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
Запишите URL-адрес службы из приведенного выше результата, поскольку вы будете использовать его на следующем шаге для запуска консоли n8n.
7. Запустите рабочий процесс n8n.
Откройте браузер и перейдите по URL-адресу сервиса, полученному на предыдущем шаге. Вы также можете получить URL-адрес сервиса на главной странице Cloud Run, где n8n будет указан в списке сервисов.
Примечание : Если вы получаете ошибку « Cannot GET / screen» или сообщение о том, что n8n is starting up , это обычно означает, что n8n всё ещё находится в процессе запуска. Вы можете обновить страницу, и она должна загрузиться.
В итоге вы увидите экран, подобный показанному ниже, где сможете настроить учетную запись владельца:

Заполните необходимые данные, запишите пароль и завершите настройку. Вы можете пропустить некоторые шаги, в том числе шаг, на котором запрашивается отправка лицензионного ключа.
Если все пройдет успешно, вы увидите главную страницу n8n, как показано ниже:

Если вы знакомы с n8n, вы сможете разобраться в этом и выполнить лабораторную работу.
Если вы хотите немного протестировать n8n, можете попробовать следующий алгоритм действий:
- Нажмите на «Учетные данные», а затем «Добавить первые учетные данные» .

- Мы настроим учетные данные для API-ключа Gemini. Введите gemini, чтобы открыть окно API Google Gemini (PaLM), а затем нажмите « Продолжить» .

- Ключ API Gemini можно получить по ссылке https://aistudio.google.com/app/api-keys .
- Получив ключ, вставьте его. n8n проверит ключ, и учетные данные будут настроены.
5. Теперь перейдите в раздел «Рабочие процессы» и нажмите «Начать с нуля» или «Создать новый рабочий процесс». Откроется пустое поле, где вы можете создать два узла: один — триггер (Simple Chat), а другой — агент, для которого мы настроим созданные нами учетные данные, так что модель агента будет Google Gemini. В итоге у вас должен получиться рабочий процесс, который выглядит примерно так:

- Вы можете запустить этот рабочий процесс через панель чата, и если все пройдет успешно, получите ответ на ваши запросы. Примеры экранов выполнения показаны ниже:

На этом завершается проверка работоспособности нашей системы n8n, развернутой в Google Cloud Run.
8. Уборка
Если вы решили использовать этот практический урок для изучения установки и запуска n8n в Google Cloud Run, а не для производственной/постоянной работы, вы можете избежать постоянных расходов на свой аккаунт Google Cloud. В этом случае важно удалить ресурсы, созданные нами во время этого урока.
Мы удалим экземпляр Cloud SQL и службу Cloud Run, которую мы развернули.
Убедитесь, что следующие переменные среды установлены правильно в соответствии с вашим проектом и регионом:
export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"
Следующие две команды удаляют развернутые нами службы Cloud Run:
gcloud run services delete n8n --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet
Следующая команда удаляет экземпляр Cloud SQL:
gcloud sql instances delete n8n-db
Следующие две команды удаляют созданные нами ключи Secret Manager:
gcloud secrets delete n8n-db-password
gcloud secrets delete n8n-encryption-key
9. Поздравляем!
Поздравляем, вы успешно развернули n8n в Google Cloud Run и проверили настройку с помощью тестового рабочего процесса.