콘텐츠로 이동
📣 인포그랩에서 OpenAI 기술 기반으로 자체 개발한 자동화 번역 프로그램을 통해 n8n 공식 문서의 한글판을 국내 최초로 제공합니다.

Azure에서 n8n 호스팅#

이 호스팅 가이드는 Azure에서 n8n을 자체 호스팅하는 방법을 보여줍니다. Kubernetes를 사용하여 필요한 리소스와 리버스 프록시를 관리하면서 Postgres를 데이터베이스 백엔드로 사용하는 n8n을 설명합니다.

요구 사항#

Azure 명령줄 도구가 필요합니다.

자체 호스팅 사전 요구 사항

n8n을 자체 호스팅하려면 다음과 같은 기술적 지식이 필요합니다:

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

n8n은 전문가 수준의 사용자에게 자체 호스팅을 권장합니다. 실수로 인해 데이터 손실, 보안 문제, 서비스 중단이 발생할 수 있습니다. 서버 관리 경험이 부족한 경우, n8n은 n8n Cloud 사용을 추천합니다.

최신 및 차기 버전

n8n은 대부분의 주에 새로운 마이너 버전을 출시합니다. latest 버전은 프로덕션 환경에서 사용하도록 설계된 안정적인 버전입니다. next 버전은 가장 최근에 출시된 버전으로, 베타 버전으로 간주해야 하며 불안정할 수 있습니다. 문제를 발견하면 포럼에서 보고해 주세요.

현재 latest: 1.77.3
현재 next: 1.78.0

호스팅 옵션#

Azure는 Azure Container Instances(컨테이너 실행에 최적화됨), Linux 가상 머신, Azure Kubernetes Service(컨테이너가 Kubernetes와 함께 실행됨) 등 n8n 호스팅에 적합한 여러 가지 방법을 제공합니다.

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

이 가이드의 단계는 Azure UI와 명령줄 도구를 혼합하여 사용하지만, 대부분의 작업을 수행하는 데 둘 중 하나를 사용할 수 있습니다.

Azure Kubernetes Service 열기#

Aazure 포털에서 Kubernetes 서비스를 선택합니다.

클러스터 만들기#

Kubernetes 서비스 페이지에서 만들기 > Kubernetes 클러스터 만들기를 선택합니다.

필요에 맞는 구성 옵션을 선택한 후 완료하면 만들기를 선택합니다.

Kubectl 컨텍스트 설정#

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

구성 저장소 복제#

Kubernetes와 n8n은 일련의 구성 파일을 필요로 합니다. 이 저장소에서 이를 복제할 수 있습니다. 다음 단계에서는 어떤 파일이 무엇을 구성하는지와 변경해야 하는 내용에 대해 설명합니다.

다음 명령으로 저장소를 복제합니다:

1
git clone https://github.com/n8n-io/n8n-kubernetes-hosting.git -b azure

그리고 복제한 저장소의 최상위 디렉터리로 변경합니다:

1
cd azure

Postgres 구성#

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

지속 저장을 위한 볼륨 구성#

포드 재시작 간 데이터를 유지하기 위해 Postgres 배포에는 지속 볼륨이 필요합니다. 기본 스토리지 클래스를 이 목적에 적합하게 정의한 postgres-claim0-persistentvolumeclaim.yaml 매니페스트에서 확인할 수 있습니다.

전문 저장소 클래스

저장소 클래스에 대한 특수한 요구 사항이 있는 경우, Azure에서 제공하는 옵션에 대한 더 많은 정보를 문서에서 읽어보세요.

Postgres 환경 변수#

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

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

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

n8n 구성#

파일 저장을 위한 볼륨 생성#

n8n을 실행하는 데 필수는 아니지만, 지속 볼륨을 사용하는 것은 다음을 위해 필요합니다:

  • 이진 데이터 노드와 같은 파일과 상호작용하는 노드를 사용할 경우.
  • 재시작 간 수동 n8n 암호화 키를 지속하려는 경우. 이는 시작 시 키를 파일 저장소에 포함하는 파일을 저장합니다.

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

1
2
3
4
5
6

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

Pod 리소스#

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

1
2
3
4
5
6
7

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

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

  • Start: 320mb RAM, 10 millicore CPU burstable
  • Pro (10k executions): 640mb RAM, 20 millicore CPU burstable
  • Pro (50k executions): 1280mb RAM, 80 millicore CPU burstable

선택 사항: 환경 변수#

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

n8n-secret.yaml 파일을 생성하십시오. n8n 환경 변수의 세부정보는 환경 변수를 참조하십시오.

배포#

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

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

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

서비스#

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

Kubernetes 클러스터에 전송#

다음 명령어를 사용하여 모든 매니페스트를 클러스터에 전송하십시오:

1
kubectl apply -f .

네임스페이스 오류

"n8n" 네임스페이스를 찾지 못했다는 오류 메시지가 표시될 수 있습니다. 이 자원은 아직 준비되지 않았습니다. 같은 명령어를 다시 실행하거나 다음 명령어로 네임스페이스 매니페스트를 먼저 적용할 수 있습니다:

1
kubectl apply -f namespace.yaml

DNS 설정#

n8n은 일반적으로 서브도메인에서 운영됩니다. 제공업체와 함께 서브도메인에 대한 DNS 레코드를 생성하고 n8n 서비스의 IP 주소로 가리키도록 설정하십시오. External IP 열 아래에서 사용하려는 클러스터의 Services & ingresses 메뉴 항목에서 n8n 서비스의 IP 주소를 찾으십시오. URL에 n8n 포트 "5678"을 추가해야 합니다.

AKS의 정적 IP 주소

정적 IP 주소를 AKS와 함께 사용하는 방법에 대한 자세한 내용은 이 튜토리얼을 읽어보십시오.

리소스 삭제#

다음 명령어로 매니페스트에 의해 생성된 리소스를 제거하십시오:

1
kubectl delete -f .

다음 단계#

인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!