InfoGrab DocsInfoGrab Docs

Azure에서 n8n 호스팅하기

요약

이 호스팅 가이드는 Azure에서 n8n을 셀프 호스팅하는 방법을 보여줍니다. 이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요. Azure 커맨드라인 도구가 필요합니다. Azure는 n8n 호스팅에 적합한 여러 방법을 제공합니다.

이 호스팅 가이드는 Azure에서 n8n을 셀프 호스팅하는 방법을 보여줍니다. 필요한 리소스와 역방향 프록시를 관리하기 위해 Kubernetes를 사용하며, 데이터베이스 백엔드로 Postgres를 사용하는 n8n을 대상으로 합니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

사전 준비 사항#

Azure 커맨드라인 도구가 필요합니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

호스팅 옵션#

Azure는 n8n 호스팅에 적합한 여러 방법을 제공합니다. 여기에는 컨테이너 실행에 최적화된 Azure Container Instances, Linux 가상 머신, 그리고 Kubernetes로 컨테이너를 실행하는 Azure Kubernetes Service가 포함됩니다.

이 가이드에서는 호스팅 옵션으로 Azure Kubernetes Service(AKS)를 사용합니다. Kubernetes를 사용하면 약간의 추가 복잡성과 구성이 필요하지만, 수요 변화에 따라 n8n을 확장하는 데 가장 좋은 방법입니다.

이 가이드의 단계에서는 Azure UI와 커맨드라인 도구를 함께 사용하지만, 대부분의 작업은 둘 중 하나만으로도 수행할 수 있습니다.

Azure Kubernetes Service 열기#

Azure 포털에서 Kubernetes services를 선택합니다.

클러스터 생성#

Kubernetes services 페이지에서 Create > Create a Kubernetes cluster를 선택합니다.

필요에 맞는 구성 옵션을 선택한 다음, 완료되면 Create를 선택합니다.

Kubectl 컨텍스트 설정#

이 가이드의 나머지 단계에서는 Azure 인스턴스를 Kubectl 컨텍스트로 설정해야 합니다. 클러스터 인스턴스의 연결 세부 정보는 해당 인스턴스의 상세 페이지를 연 다음 Connect 버튼을 클릭하면 확인할 수 있습니다. 결과로 나오는 코드 스니펫은 터미널에 붙여넣고 실행하여 로컬 Kubernetes 설정이 새 클러스터를 사용하도록 변경하는 단계를 보여줍니다.

구성 리포지터리 클론하기#

Kubernetes와 n8n에는 일련의 구성 파일이 필요합니다. 이 리포지터리에서 해당 파일을 클론할 수 있습니다. 다음 단계에서는 어떤 파일이 무엇을 구성하는지, 그리고 무엇을 변경해야 하는지 알려줍니다.

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

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

그리고 디렉터리를 변경합니다.

cd n8n-hosting/kubernetes

Postgres 구성하기#

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

영구 스토리지용 볼륨 구성하기#

파드가 재시작되어도 데이터를 유지하려면 Postgres 배포에 영구 볼륨이 필요합니다. 기본 스토리지 클래스가 이 용도에 적합하며, postgres-claim0-persistentvolumeclaim.yaml 매니페스트에 정의되어 있습니다.

Note

특수 스토리지 클래스

스토리지 클래스에 대해 특수하거나 더 높은 요구 사항이 있는 경우, Azure가 제공하는 옵션에 대해 문서에서 자세히 확인하세요.

Postgres 환경 변수#

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

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

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

n8n 구성하기#

파일 스토리지용 볼륨 생성하기#

n8n을 실행하는 데 필수는 아니지만, 영구 볼륨을 사용하는 것은 다음 경우에 필요합니다.

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

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

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

파드 리소스#

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

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

이는 컨테이너당 최소 250mb, 최대 500mb를 정의하며, CPU는 Kubernetes가 처리하도록 둡니다. 이 값은 필요에 맞게 변경할 수 있습니다. 참고로, n8n 클라우드 제품의 리소스 값은 다음과 같습니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

선택 사항: 환경 변수#

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

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

배포#

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

Warning

매니페스트는 PostgreSQL 18을 실행합니다. 처음 설정하는 경우 추가로 필요한 작업은 없습니다.

이전 PostgreSQL 메이저 버전으로 실행 중인 데이터베이스가 이미 있다면 여기에 적용하지 마세요. PostgreSQL 18은 이전 메이저 버전이 기록한 데이터 디렉터리를 열 수 없으며, 폴더를 옮겨도 해결되지 않습니다. 파드는 database files are incompatible with server 메시지와 함께 CrashLoopBackOff 상태에 머뭅니다. PostgreSQL은 데이터를 건드리지 않으며, 이미지를 이전에 사용하던 버전으로 고정할 수 있습니다.

기존 데이터베이스를 옮기려면 먼저 공식 PostgreSQL 업그레이드 가이드를 따르세요.

이 매니페스트들은 다음을 정의합니다.

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

서비스#

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

Kubernetes 클러스터로 전송하기#

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

kubectl apply -f .
Note

네임스페이스 오류

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

kubectl apply -f namespace.yaml

DNS 설정하기#

n8n은 일반적으로 서브도메인에서 동작합니다. 서브도메인용 DNS 레코드를 제공업체에서 생성하고 이를 n8n 서비스의 IP 주소로 지정합니다. n8n 서비스의 IP 주소는 사용하려는 클러스터의 Services & ingresses 메뉴 항목에서 External IP 열을 통해 확인할 수 있습니다. URL에 n8n 포트인 "5678"을 추가해야 합니다.

Note

AKS의 고정 IP 주소

AKS에서 고정 IP 주소를 사용하는 방법에 대한 자세한 내용은 이 튜토리얼을 읽어보세요.

리소스 삭제하기#

다음 명령으로 매니페스트가 생성한 리소스를 제거합니다.

kubectl delete -f .

다음 단계#

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

관련 리소스#

Azure에서 n8n 호스팅하기

n8n v2.42
원문 보기

요약

이 호스팅 가이드는 Azure에서 n8n을 셀프 호스팅하는 방법을 보여줍니다. 이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요. Azure 커맨드라인 도구가 필요합니다. Azure는 n8n 호스팅에 적합한 여러 방법을 제공합니다.

이 호스팅 가이드는 Azure에서 n8n을 셀프 호스팅하는 방법을 보여줍니다. 필요한 리소스와 역방향 프록시를 관리하기 위해 Kubernetes를 사용하며, 데이터베이스 백엔드로 Postgres를 사용하는 n8n을 대상으로 합니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

사전 준비 사항#

Azure 커맨드라인 도구가 필요합니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

호스팅 옵션#

Azure는 n8n 호스팅에 적합한 여러 방법을 제공합니다. 여기에는 컨테이너 실행에 최적화된 Azure Container Instances, Linux 가상 머신, 그리고 Kubernetes로 컨테이너를 실행하는 Azure Kubernetes Service가 포함됩니다.

이 가이드에서는 호스팅 옵션으로 Azure Kubernetes Service(AKS)를 사용합니다. Kubernetes를 사용하면 약간의 추가 복잡성과 구성이 필요하지만, 수요 변화에 따라 n8n을 확장하는 데 가장 좋은 방법입니다.

이 가이드의 단계에서는 Azure UI와 커맨드라인 도구를 함께 사용하지만, 대부분의 작업은 둘 중 하나만으로도 수행할 수 있습니다.

Azure Kubernetes Service 열기#

Azure 포털에서 Kubernetes services를 선택합니다.

클러스터 생성#

Kubernetes services 페이지에서 Create > Create a Kubernetes cluster를 선택합니다.

필요에 맞는 구성 옵션을 선택한 다음, 완료되면 Create를 선택합니다.

Kubectl 컨텍스트 설정#

이 가이드의 나머지 단계에서는 Azure 인스턴스를 Kubectl 컨텍스트로 설정해야 합니다. 클러스터 인스턴스의 연결 세부 정보는 해당 인스턴스의 상세 페이지를 연 다음 Connect 버튼을 클릭하면 확인할 수 있습니다. 결과로 나오는 코드 스니펫은 터미널에 붙여넣고 실행하여 로컬 Kubernetes 설정이 새 클러스터를 사용하도록 변경하는 단계를 보여줍니다.

구성 리포지터리 클론하기#

Kubernetes와 n8n에는 일련의 구성 파일이 필요합니다. 이 리포지터리에서 해당 파일을 클론할 수 있습니다. 다음 단계에서는 어떤 파일이 무엇을 구성하는지, 그리고 무엇을 변경해야 하는지 알려줍니다.

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

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

그리고 디렉터리를 변경합니다.

cd n8n-hosting/kubernetes

Postgres 구성하기#

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

영구 스토리지용 볼륨 구성하기#

파드가 재시작되어도 데이터를 유지하려면 Postgres 배포에 영구 볼륨이 필요합니다. 기본 스토리지 클래스가 이 용도에 적합하며, postgres-claim0-persistentvolumeclaim.yaml 매니페스트에 정의되어 있습니다.

Note

특수 스토리지 클래스

스토리지 클래스에 대해 특수하거나 더 높은 요구 사항이 있는 경우, Azure가 제공하는 옵션에 대해 문서에서 자세히 확인하세요.

Postgres 환경 변수#

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

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

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

n8n 구성하기#

파일 스토리지용 볼륨 생성하기#

n8n을 실행하는 데 필수는 아니지만, 영구 볼륨을 사용하는 것은 다음 경우에 필요합니다.

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

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

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

파드 리소스#

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

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

이는 컨테이너당 최소 250mb, 최대 500mb를 정의하며, CPU는 Kubernetes가 처리하도록 둡니다. 이 값은 필요에 맞게 변경할 수 있습니다. 참고로, n8n 클라우드 제품의 리소스 값은 다음과 같습니다.

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

선택 사항: 환경 변수#

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

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

배포#

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

Warning

매니페스트는 PostgreSQL 18을 실행합니다. 처음 설정하는 경우 추가로 필요한 작업은 없습니다.

이전 PostgreSQL 메이저 버전으로 실행 중인 데이터베이스가 이미 있다면 여기에 적용하지 마세요. PostgreSQL 18은 이전 메이저 버전이 기록한 데이터 디렉터리를 열 수 없으며, 폴더를 옮겨도 해결되지 않습니다. 파드는 database files are incompatible with server 메시지와 함께 CrashLoopBackOff 상태에 머뭅니다. PostgreSQL은 데이터를 건드리지 않으며, 이미지를 이전에 사용하던 버전으로 고정할 수 있습니다.

기존 데이터베이스를 옮기려면 먼저 공식 PostgreSQL 업그레이드 가이드를 따르세요.

이 매니페스트들은 다음을 정의합니다.

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

서비스#

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

Kubernetes 클러스터로 전송하기#

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

kubectl apply -f .
Note

네임스페이스 오류

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

kubectl apply -f namespace.yaml

DNS 설정하기#

n8n은 일반적으로 서브도메인에서 동작합니다. 서브도메인용 DNS 레코드를 제공업체에서 생성하고 이를 n8n 서비스의 IP 주소로 지정합니다. n8n 서비스의 IP 주소는 사용하려는 클러스터의 Services & ingresses 메뉴 항목에서 External IP 열을 통해 확인할 수 있습니다. URL에 n8n 포트인 "5678"을 추가해야 합니다.

Note

AKS의 고정 IP 주소

AKS에서 고정 IP 주소를 사용하는 방법에 대한 자세한 내용은 이 튜토리얼을 읽어보세요.

리소스 삭제하기#

다음 명령으로 매니페스트가 생성한 리소스를 제거합니다.

kubectl delete -f .

다음 단계#

참고

이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.

관련 리소스#