네임스페이스 만들고 사용하기

네임스페이스 만들고 사용하기 (Create and use namespaces)

노마드는 네임스페이스(namespaces)를 지원하며, 이를 통해 작업과 관련 객체를 서로 그리고 클러스터의 다른 사용자로부터 분리할 수 있어요.

노마드는 모든 작업과 그 파생 객체를 네임스페이스에 배치해요. 여기에는 작업, 할당, 배포, 평가가 포함돼요.

노마드는 여러 네임스페이스에 걸쳐 공유되는 객체는 네임스페이스 처리하지 않아요. 여기에는 노드, ACL 정책, Sentinel 정책, 쿼터 명세가 포함돼요.

이 가이드에서는 CLI로 네임스페이스를 만들고 관리해요. 네임스페이스를 만든 뒤 그 네임스페이스 안에서 작업을 배포하고 관리하는 방법을 배우고, 마지막으로 네임스페이스를 보호하는 방법을 연습해요.

출처: 문서

본문

네임스페이스 만들고 보기

nomad namespace 하위 명령으로 네임스페이스를 관리할 수 있어요.

클러스터의 네임스페이스를 만들어요.

$ nomad namespace apply -description "QA instances of webservers" web-qa
Successfully applied namespace "web-qa"!

클러스터의 네임스페이스를 나열해요.

$ nomad namespace list
Name      Description
default   Default shared namespace
api-prod  Production instances of backend API servers
api-qa    QA instances of backend API servers
web-prod  Production instances of webservers
web-qa    QA instances of webservers

네임스페이스에서 작업 실행

특정 네임스페이스에서 작업을 실행하려면 작업에 namespace 파라미터를 주석으로 지정해요. 생략하면 작업은 기본 네임스페이스에서 실행돼요. 아래는 새로 만든 web-qa 네임스페이스에서 작업을 실행하는 예시예요:

job "rails-www" {

    ## Run in the QA environments
    namespace = "web-qa"

    ## Only run in one datacenter when QAing
    datacenters = ["us-west1"]
    # ...
}

CLI와 UI에서 네임스페이스 사용

노마드 CLI

네임스페이스가 지정된 객체를 다루는 명령을 사용할 때 네임스페이스는 -namespace 플래그로 지정하거나 NOMAD_NAMESPACE 환경 변수에서 읽을 수 있어요.

-namespace 플래그로 작업 상태를 요청해요.

$ nomad job status -namespace=web-qa
ID         Type     Priority  Status   Submit Date
rails-www  service  50        running  09/17/17 19:17:46 UTC

NOMAD_NAMESPACE 환경 변수를 내보내요.

$ export NOMAD_NAMESPACE=web-qa

내보낸 환경 변수를 사용해 작업 상태를 요청해요.

$ nomad job status
ID         Type     Priority  Status   Submit Date
rails-www  service  50        running  09/17/17 19:17:46 UTC

노마드 UI

노마드 UI는 운영자가 제어하려는 네임스페이스를 선택할 수 있는 드롭다운 메뉴를 제공해요. 드롭다운은 네임스페이스가 정의되면 나타나요. 인터페이스 왼쪽 열 상단의 "WORKLOAD" 라벨 아래에 위치해요.

네임스페이스 보호

네임스페이스에 대한 접근은 ACL로 제한할 수 있어요. 예를 들어 web 네임스페이스의 QA 환경에는 전체 접근을 허용하되 프로덕션 접근을 제한하는 ACL 정책을 만들 수 있어요:

# Allow read only access to the production namespace
namespace "web-prod" {
    policy = "read"
}

# Allow writing to the QA namespace
namespace "web-qa" {
    policy = "write"
}

Consul 네임스페이스

엔터프라이즈

노마드는 service 블록에 지정된 서비스 등록과 template 블록의 Consul KV 읽기에 대한 Consul 네임스페이스 통합을 제공해요.

기본적으로 노마드는 서비스 등록이나 KV 저장소 읽기에 Consul 네임스페이스를 지정하지 않으며, Consul은 이를 암시적으로 "default" 네임스페이스로 해석해요. 이 기본 네임스페이스 동작은 노마드 에이전트 Consul 구성 블록에서 namespace 필드를 설정해 수정할 수 있어요.

Consul 네임스페이스에 대한 더 많은 제어를 위해, 노마드 엔터프라이즈는 노마드 job 명세의 그룹 또는 작업 수준에서 Consul 네임스페이스를 구성하는 것과 job run의 -consul-namespace 명령줄 인자를 지원해요.

그룹 내의 그룹·작업 서비스 등록 집합 및 템플릿 KV 저장소 접근에 사용되는 Consul 네임스페이스는 높은 우선순위에서 낮은 우선순위 순서로 다음 계층에 따라 결정돼요:

  • 그룹 및 작업 구성: 작업·그룹 수준에서 작업에 정의된 Consul namespace 필드.
  • job run 명령 옵션: 작업 제출 시 -consul-namespace 명령줄 옵션에 정의된 Consul namespace.
  • job run 명령 환경 변수: 작업 제출 시 CONSUL_NAMESPACE 환경 변수로 정의된 Consul namespace.
  • 에이전트 구성: 노마드 에이전트 Consul 구성 파라미터의 namespace에 정의된 Consul namespace.
  • Consul 기본값: Consul 네임스페이스 옵션이 구성되지 않으면 Consul은 자동으로 "default" 네임스페이스를 사용해요.

Consul 통합 지침은 Consul networking integration 가이드를 참고해 주세요.

리소스

네임스페이스 작업에 대한 자세한 내용은 namespace 명령과 HTTP API 문서를 참고해 주세요.

더 알아보기 (Learn more)