InfoGrab Docs

Google Kubernetes Engine에서 n8n 호스팅

요약

Google Cloud는 Cloud Run(컨테이너 실행에 최적화), Compute Engine(VM), Kubernetes Engine(Kubernetes로 실행되는 컨테이너) 등 n8n 호스팅에 적합한 여러 옵션을 제공합니다.

Google Cloud는 Cloud Run(컨테이너 실행에 최적화), Compute Engine(VM), Kubernetes Engine(Kubernetes로 실행되는 컨테이너) 등 n8n 호스팅에 적합한 여러 옵션을 제공합니다.

이 가이드는 호스팅 옵션으로 Google Kubernetes Engine(GKE)을 사용합니다. Cloud Run을 사용하려면 이 지침을 참조하세요.

이 가이드의 대부분 단계는 Google Cloud UI를 사용하지만, gcloud 명령줄 도구를 사용하여 모든 단계를 수행할 수도 있습니다.

사전 요구 사항#

셀프 호스팅 사전 지식 요구사항

n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다:

  • 서버 및 컨테이너 설정 및 구성
  • 애플리케이션 리소스 관리 및 확장
  • 서버 및 애플리케이션 보안
  • n8n 구성

n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. 실수하면 데이터 손실, 보안 문제, 다운타임이 발생할 수 있습니다. 서버 관리 경험이 없다면 n8n Cloud를 권장합니다.

안정(Stable) 및 베타(Beta) 버전

n8n은 매주 새로운 마이너 버전을 릴리스합니다. stable 버전은 프로덕션 사용을 위한 것입니다. beta는 가장 최근 릴리스입니다. beta 버전은 불안정할 수 있습니다. 문제를 보고하려면 포럼을 이용하세요.

현재 stable: 2.14.2 현재 beta: 2.15.0

프로젝트 생성#

GCP는 리소스와 설정을 논리적으로 구성하기 위해 프로젝트를 생성하도록 권장합니다. Google Cloud Console에서 n8n 배포를 위한 새 프로젝트를 생성합니다: 프로젝트 드롭다운 메뉴를 선택한 다음 NEW PROJECT 버튼을 선택합니다. 그런 다음 새로 생성된 프로젝트를 선택합니다. 이 가이드의 다른 단계를 따를 때 올바른 프로젝트가 선택되어 있는지 확인하세요.

Kubernetes Engine API 활성화#

GKE는 기본적으로 활성화되어 있지 않습니다. 상단 검색 표시줄에서 "Kubernetes"를 검색하고 결과에서 "Kubernetes Engine"을 선택합니다.

ENABLE을 선택하여 이 프로젝트에 대한 Kubernetes Engine API를 활성화합니다.

클러스터 생성#

GKE 서비스 페이지에서 Clusters > CREATE를 선택합니다. "Standard" 클러스터 옵션을 선택해야 합니다. n8n은 "Autopilot" 클러스터에서 작동하지 않습니다. 위치와 같이 특별히 변경해야 할 사항이 없으면 클러스터 설정을 기본값으로 둘 수 있습니다.

Kubectl 컨텍스트 설정#

이 가이드의 나머지 단계는 GCP 인스턴스를 Kubectl 컨텍스트로 설정해야 합니다. 클러스터 인스턴스의 연결 세부 정보는 해당 상세 페이지를 열고 CONNECT를 선택하면 찾을 수 있습니다. 표시되는 코드 스니펫은 gcloud CLI 도구에 대한 연결 문자열을 보여줍니다. 코드 스니펫을 gcloud CLI에 붙여넣고 실행하여 로컬 Kubernetes 설정을 새 gcloud 클러스터를 사용하도록 변경합니다.

설정 리포지터리 클론#

Kubernetes와 n8n은 일련의 설정 파일이 필요합니다. 이 리포지터리에서 로컬로 이 파일들을 클론할 수 있습니다. 다음 단계에서 파일 설정과 정보를 추가하는 방법을 설명합니다.

다음 명령으로 리포지터리를 클론합니다:

git clone https://github.com/n8n-io/n8n-hosting.git

디렉터리를 변경합니다:

cd n8n-hosting/kubernetes

Postgres 구성#

대규모 n8n 배포의 경우 Postgres는 SQLite보다 더 강력한 데이터베이스 백엔드를 제공합니다.

영구 스토리지를 위한 볼륨 생성#

파드 재시작 간에 데이터를 유지하려면 Postgres 배포에 영구 볼륨이 필요합니다. GCP에서 Postgres를 실행하려면 특정 Kubernetes 스토리지 클래스가 필요합니다. 이 가이드에서 세부 내용을 읽을 수 있지만, storage.yaml 매니페스트가 이를 대신 생성합니다. allowedTopologies > matchedLabelExpressions > values 키 아래에서 스토리지를 생성할 리전을 변경하고 싶을 수 있습니다. 기본값은 us-central로 설정되어 있습니다.


allowedTopologies:
  - matchLabelExpressions:
      - key: failure-domain.beta.kubernetes.io/zone
        values:
          - us-central1-b
          - us-central1-c

Postgres 환경 변수#

Postgres는 컨테이너에서 실행 중인 애플리케이션에 전달할 몇 가지 환경 변수가 필요합니다.

예제 postgres-secret.yaml 파일에는 고유한 값으로 교체해야 하는 플레이스홀더가 포함되어 있습니다. Postgres는 데이터베이스 생성 시 이 세부 정보를 사용합니다.

postgres-deployment.yaml 매니페스트는 이 매니페스트 파일의 값을 사용하여 애플리케이션 파드에 전달합니다.

n8n 구성#

파일 스토리지를 위한 볼륨 생성#

n8n 실행에 필수적이지는 않지만, 다음과 같은 경우 영구 볼륨이 필요합니다:

  • 바이너리 데이터 노드 등 파일과 상호 작용하는 노드를 사용하는 경우.
  • 재시작 간에 수동 n8n 암호화 키를 유지하려는 경우. 이는 시작 시 키가 포함된 파일을 파일 스토리지에 저장합니다.

n8n-claim0-persistentvolumeclaim.yaml 매니페스트가 이를 생성하고, n8n 배포는 n8n-deployment.yaml 매니페스트의 volumes 섹션에서 해당 클레임을 마운트합니다.


volumes:
  - name: n8n-claim0
    persistentVolumeClaim:
      claimName: n8n-claim0

파드 리소스#

Kubernetes를 사용하면 선택적으로 애플리케이션 컨테이너에 필요한 최소 리소스와 실행 가능한 한도를 지정할 수 있습니다. 위에서 클론한 예제 YAML 파일은 n8n-deployment.yamlpostgres-deployment.yaml 파일의 resources 섹션에 다음 내용을 포함합니다:


resources:
  requests:
    memory: "250Mi"
  limits:
    memory: "500Mi"

이는 컨테이너당 최소 250MB, 최대 500MB를 정의하고 Kubernetes가 CPU를 처리하도록 합니다. 이 값은 필요에 따라 변경할 수 있습니다. 참고로 n8n 클라우드 제공 서비스의 리소스 값은 다음과 같습니다:

  • 스타터: RAM 320MB, CPU 10 millicore 버스트 가능
  • Pro (실행 1만 회): RAM 640MB, CPU 20 millicore 버스트 가능
  • Pro (실행 5만 회): RAM 1280MB, CPU 80 millicore 버스트 가능

선택 사항: 환경 변수#

환경 변수를 사용하여 n8n 설정과 동작을 구성할 수 있습니다.

n8n-secret.yaml 파일을 생성합니다. n8n 환경 변수에 대한 자세한 내용은 환경 변수를 참조하세요.

배포#

두 개의 배포 매니페스트(n8n-deployment.yamlpostgres-deployment.yaml)는 Kubernetes에 n8n과 Postgres 애플리케이션을 정의합니다.

매니페스트는 다음을 정의합니다:

  • 각 애플리케이션 파드에 정의된 환경 변수 전달
  • 사용할 컨테이너 이미지 정의
  • resources 객체를 사용하여 리소스 소비 한도 설정
  • 앞서 정의한 volumes와 컨테이너에서 볼륨을 마운트할 경로를 정의하는 volumeMounts
  • 스케일링 및 재시작 정책. 예제 매니페스트는 각 파드의 인스턴스 하나를 정의합니다. 필요에 맞게 변경해야 합니다.

서비스#

두 개의 서비스 매니페스트(postgres-service.yamln8n-service.yaml)는 각각 포트 5432와 5678을 사용하여 Kubernetes 로드 밸런서를 통해 서비스를 외부에 노출합니다.

Kubernetes 클러스터로 전송#

다음 명령으로 모든 매니페스트를 클러스터에 전송합니다:

kubectl apply -f .
네임스페이스 오류

"n8n" 네임스페이스를 찾을 수 없다는 오류 메시지가 표시될 수 있습니다. 해당 리소스가 아직 준비되지 않았기 때문입니다. 동일한 명령을 다시 실행하거나 다음 명령으로 먼저 네임스페이스 매니페스트를 적용할 수 있습니다:

kubectl apply -f namespace.yaml

DNS 설정#

n8n은 일반적으로 서브도메인에서 작동합니다. DNS 제공업체에서 서브도메인에 대한 DNS 레코드를 생성하고 n8n 서비스의 IP 주소를 가리키도록 합니다. n8n 서비스의 IP 주소는 사용하려는 클러스터의 Services & Ingress 메뉴 항목에서 Endpoints 열 아래에서 찾을 수 있습니다.

GKE 및 IP 주소

GKE에서 예약된 IP 주소와 Kubernetes 리소스가 어떻게 작동하는지에 대한 자세한 내용은 이 GKE 튜토리얼을 읽어보세요.

리소스 삭제#

다음 명령으로 매니페스트에 의해 생성된 리소스를 제거합니다:

kubectl delete -f .

다음 단계#

Google Kubernetes Engine에서 n8n 호스팅

원문 보기
요약

Google Cloud는 Cloud Run(컨테이너 실행에 최적화), Compute Engine(VM), Kubernetes Engine(Kubernetes로 실행되는 컨테이너) 등 n8n 호스팅에 적합한 여러 옵션을 제공합니다.

Google Cloud는 Cloud Run(컨테이너 실행에 최적화), Compute Engine(VM), Kubernetes Engine(Kubernetes로 실행되는 컨테이너) 등 n8n 호스팅에 적합한 여러 옵션을 제공합니다.

이 가이드는 호스팅 옵션으로 Google Kubernetes Engine(GKE)을 사용합니다. Cloud Run을 사용하려면 이 지침을 참조하세요.

이 가이드의 대부분 단계는 Google Cloud UI를 사용하지만, gcloud 명령줄 도구를 사용하여 모든 단계를 수행할 수도 있습니다.

사전 요구 사항#

셀프 호스팅 사전 지식 요구사항

n8n 셀프 호스팅에는 다음을 포함한 기술적 지식이 필요합니다:

  • 서버 및 컨테이너 설정 및 구성
  • 애플리케이션 리소스 관리 및 확장
  • 서버 및 애플리케이션 보안
  • n8n 구성

n8n은 전문 사용자에게 셀프 호스팅을 권장합니다. 실수하면 데이터 손실, 보안 문제, 다운타임이 발생할 수 있습니다. 서버 관리 경험이 없다면 n8n Cloud를 권장합니다.

안정(Stable) 및 베타(Beta) 버전

n8n은 매주 새로운 마이너 버전을 릴리스합니다. stable 버전은 프로덕션 사용을 위한 것입니다. beta는 가장 최근 릴리스입니다. beta 버전은 불안정할 수 있습니다. 문제를 보고하려면 포럼을 이용하세요.

현재 stable: 2.14.2 현재 beta: 2.15.0

프로젝트 생성#

GCP는 리소스와 설정을 논리적으로 구성하기 위해 프로젝트를 생성하도록 권장합니다. Google Cloud Console에서 n8n 배포를 위한 새 프로젝트를 생성합니다: 프로젝트 드롭다운 메뉴를 선택한 다음 NEW PROJECT 버튼을 선택합니다. 그런 다음 새로 생성된 프로젝트를 선택합니다. 이 가이드의 다른 단계를 따를 때 올바른 프로젝트가 선택되어 있는지 확인하세요.

Kubernetes Engine API 활성화#

GKE는 기본적으로 활성화되어 있지 않습니다. 상단 검색 표시줄에서 "Kubernetes"를 검색하고 결과에서 "Kubernetes Engine"을 선택합니다.

ENABLE을 선택하여 이 프로젝트에 대한 Kubernetes Engine API를 활성화합니다.

클러스터 생성#

GKE 서비스 페이지에서 Clusters > CREATE를 선택합니다. "Standard" 클러스터 옵션을 선택해야 합니다. n8n은 "Autopilot" 클러스터에서 작동하지 않습니다. 위치와 같이 특별히 변경해야 할 사항이 없으면 클러스터 설정을 기본값으로 둘 수 있습니다.

Kubectl 컨텍스트 설정#

이 가이드의 나머지 단계는 GCP 인스턴스를 Kubectl 컨텍스트로 설정해야 합니다. 클러스터 인스턴스의 연결 세부 정보는 해당 상세 페이지를 열고 CONNECT를 선택하면 찾을 수 있습니다. 표시되는 코드 스니펫은 gcloud CLI 도구에 대한 연결 문자열을 보여줍니다. 코드 스니펫을 gcloud CLI에 붙여넣고 실행하여 로컬 Kubernetes 설정을 새 gcloud 클러스터를 사용하도록 변경합니다.

설정 리포지터리 클론#

Kubernetes와 n8n은 일련의 설정 파일이 필요합니다. 이 리포지터리에서 로컬로 이 파일들을 클론할 수 있습니다. 다음 단계에서 파일 설정과 정보를 추가하는 방법을 설명합니다.

다음 명령으로 리포지터리를 클론합니다:

git clone https://github.com/n8n-io/n8n-hosting.git

디렉터리를 변경합니다:

cd n8n-hosting/kubernetes

Postgres 구성#

대규모 n8n 배포의 경우 Postgres는 SQLite보다 더 강력한 데이터베이스 백엔드를 제공합니다.

영구 스토리지를 위한 볼륨 생성#

파드 재시작 간에 데이터를 유지하려면 Postgres 배포에 영구 볼륨이 필요합니다. GCP에서 Postgres를 실행하려면 특정 Kubernetes 스토리지 클래스가 필요합니다. 이 가이드에서 세부 내용을 읽을 수 있지만, storage.yaml 매니페스트가 이를 대신 생성합니다. allowedTopologies > matchedLabelExpressions > values 키 아래에서 스토리지를 생성할 리전을 변경하고 싶을 수 있습니다. 기본값은 us-central로 설정되어 있습니다.


allowedTopologies:
  - matchLabelExpressions:
      - key: failure-domain.beta.kubernetes.io/zone
        values:
          - us-central1-b
          - us-central1-c

Postgres 환경 변수#

Postgres는 컨테이너에서 실행 중인 애플리케이션에 전달할 몇 가지 환경 변수가 필요합니다.

예제 postgres-secret.yaml 파일에는 고유한 값으로 교체해야 하는 플레이스홀더가 포함되어 있습니다. Postgres는 데이터베이스 생성 시 이 세부 정보를 사용합니다.

postgres-deployment.yaml 매니페스트는 이 매니페스트 파일의 값을 사용하여 애플리케이션 파드에 전달합니다.

n8n 구성#

파일 스토리지를 위한 볼륨 생성#

n8n 실행에 필수적이지는 않지만, 다음과 같은 경우 영구 볼륨이 필요합니다:

  • 바이너리 데이터 노드 등 파일과 상호 작용하는 노드를 사용하는 경우.
  • 재시작 간에 수동 n8n 암호화 키를 유지하려는 경우. 이는 시작 시 키가 포함된 파일을 파일 스토리지에 저장합니다.

n8n-claim0-persistentvolumeclaim.yaml 매니페스트가 이를 생성하고, n8n 배포는 n8n-deployment.yaml 매니페스트의 volumes 섹션에서 해당 클레임을 마운트합니다.


volumes:
  - name: n8n-claim0
    persistentVolumeClaim:
      claimName: n8n-claim0

파드 리소스#

Kubernetes를 사용하면 선택적으로 애플리케이션 컨테이너에 필요한 최소 리소스와 실행 가능한 한도를 지정할 수 있습니다. 위에서 클론한 예제 YAML 파일은 n8n-deployment.yamlpostgres-deployment.yaml 파일의 resources 섹션에 다음 내용을 포함합니다:


resources:
  requests:
    memory: "250Mi"
  limits:
    memory: "500Mi"

이는 컨테이너당 최소 250MB, 최대 500MB를 정의하고 Kubernetes가 CPU를 처리하도록 합니다. 이 값은 필요에 따라 변경할 수 있습니다. 참고로 n8n 클라우드 제공 서비스의 리소스 값은 다음과 같습니다:

  • 스타터: RAM 320MB, CPU 10 millicore 버스트 가능
  • Pro (실행 1만 회): RAM 640MB, CPU 20 millicore 버스트 가능
  • Pro (실행 5만 회): RAM 1280MB, CPU 80 millicore 버스트 가능

선택 사항: 환경 변수#

환경 변수를 사용하여 n8n 설정과 동작을 구성할 수 있습니다.

n8n-secret.yaml 파일을 생성합니다. n8n 환경 변수에 대한 자세한 내용은 환경 변수를 참조하세요.

배포#

두 개의 배포 매니페스트(n8n-deployment.yamlpostgres-deployment.yaml)는 Kubernetes에 n8n과 Postgres 애플리케이션을 정의합니다.

매니페스트는 다음을 정의합니다:

  • 각 애플리케이션 파드에 정의된 환경 변수 전달
  • 사용할 컨테이너 이미지 정의
  • resources 객체를 사용하여 리소스 소비 한도 설정
  • 앞서 정의한 volumes와 컨테이너에서 볼륨을 마운트할 경로를 정의하는 volumeMounts
  • 스케일링 및 재시작 정책. 예제 매니페스트는 각 파드의 인스턴스 하나를 정의합니다. 필요에 맞게 변경해야 합니다.

서비스#

두 개의 서비스 매니페스트(postgres-service.yamln8n-service.yaml)는 각각 포트 5432와 5678을 사용하여 Kubernetes 로드 밸런서를 통해 서비스를 외부에 노출합니다.

Kubernetes 클러스터로 전송#

다음 명령으로 모든 매니페스트를 클러스터에 전송합니다:

kubectl apply -f .
네임스페이스 오류

"n8n" 네임스페이스를 찾을 수 없다는 오류 메시지가 표시될 수 있습니다. 해당 리소스가 아직 준비되지 않았기 때문입니다. 동일한 명령을 다시 실행하거나 다음 명령으로 먼저 네임스페이스 매니페스트를 적용할 수 있습니다:

kubectl apply -f namespace.yaml

DNS 설정#

n8n은 일반적으로 서브도메인에서 작동합니다. DNS 제공업체에서 서브도메인에 대한 DNS 레코드를 생성하고 n8n 서비스의 IP 주소를 가리키도록 합니다. n8n 서비스의 IP 주소는 사용하려는 클러스터의 Services & Ingress 메뉴 항목에서 Endpoints 열 아래에서 찾을 수 있습니다.

GKE 및 IP 주소

GKE에서 예약된 IP 주소와 Kubernetes 리소스가 어떻게 작동하는지에 대한 자세한 내용은 이 GKE 튜토리얼을 읽어보세요.

리소스 삭제#

다음 명령으로 매니페스트에 의해 생성된 리소스를 제거합니다:

kubectl delete -f .

다음 단계#