Raw Fork/Exec 작업 드라이버 구성하기

Raw Fork/Exec 작업 드라이버 구성하기

이름: raw_exec

raw_exec 드라이버는 어떤 격리(isolation) 없이 작업을 위해 명령을 실행하는 데 사용돼요. 또한 작업은 노마드 프로세스와 같은 사용자로 시작돼요. 따라서 극도로 주의해서 사용해야 하며 기본적으로 비활성화되어 있어요.

출처: 문서

본문

기능

raw_exec 드라이버는 다음 기능을 구현해요.

Feature Implementation
nomad alloc signal true
nomad alloc exec true
filesystem isolation none
network isolation host, group
volume mounting none

클라이언트 요구사항

raw_exec 드라이버는 지원되는 모든 운영 체제에서 실행할 수 있어요. 보안상의 이유로 기본적으로 비활성화되어 있어요. raw exec를 활성화하려면 노마드 클라이언트 구성이 플러그인 옵션에서 raw_exec 드라이버를 명시적으로 활성화해야 해요:

plugin "raw_exec" {
  config {
    enabled = true
  }
}

v0.9 이전 노마드 버전은 다음 클라이언트 구성을 사용해요. 이 구성은 Nomad v0.9.0에서도 지원되지만, plugin 블록을 위해 폐기(deprecated)됐어요:

client {
  options = {
    "driver.raw_exec.enable" = "1"
  }
}

플러그인 옵션

  • enabled — 드라이버를 활성화할지 비활성화할지 지정해요. 기본값은 false예요.
  • denied_host_uids (Optional) — 거부할 쉼표로 구분된 호스트 uid 목록을 지정해요. 범위는 두 포함 끝점을 구분하는 하이픈으로 지정할 수 있어요. 작업 구성에 "user" 값이 지정되어 있고 그 사용자의 user id가 주어진 범위 안에 있으면, 작업은 시작 전에 오류가 나요. Windows 클라이언트에서는 확인되지 않아요.
    config {
      denied_host_uids = "0,10-15,22"
    }
    
  • denied_host_gids (Optional) — 거부할 쉼표로 구분된 호스트 gid 목록을 지정해요. 범위는 두 포함 끝점을 구분하는 하이픈으로 지정할 수 있어요. 작업 구성에 "user" 값이 지정되어 있고 그 사용자가 지정된 범위의 gid를 가진 그룹 중 하나에 속하면, 작업은 시작 전에 오류가 나요. Windows 클라이언트에서는 확인되지 않아요.
    config {
      denied_host_gids = "2,4-8"
    }
    
  • denied_envvars (Optional) — 드라이버가 모든 작업 환경에서 제거(scrub)해야 하는 환경 변수 목록을 전달해요. 접두사나 접미사로 받아들여지는 "*" 와일드카드를 사용한 글로빙을 지원해요.
    config {
      denied_envvars = ["AWS_SECRET_KEY", "*_TOKEN"]
    }
    

클라이언트 옵션

참고: 클라이언트 구성 옵션은 곧 폐기될 예정이에요. 대신 플러그인 옵션을 사용해 주세요. 자세한 내용은 plugin 블록 문서를 참고해 주세요.

  • driver.raw_exec.enable — 드라이버를 활성화할지 비활성화할지 지정해요. 기본값은 false예요.

클라이언트 속성

raw_exec 드라이버는 다음 클라이언트 속성을 설정해요:

  • driver.raw_exec — 드라이버가 사용 가능함을 나타내도록 "1"로 설정돼요.

리소스 격리

raw_exec 드라이버는 파일시스템 격리를 제공하지 않아요.

실행된 프로세스가 새 프로세스 그룹을 만들면, 애플리케이션이 신호를 제대로 전달하지 않을 경우 노마드가 종료 시 프로세스를 누출(leak)시킬 수 있어요. 프로세스 트리를 관리하는 데 cgroups를 사용하고 있다면 노마드는 프로세스를 누출시키지 않아요. cgroups는 노마드가 적절한 권한으로 실행되고 cgroup 시스템이 마운트되어 있을 때 Linux에서 사용돼요.

클러스터가 메모리 초과 할당(oversubscription)을 활성화하도록 구성되어 있다면, memory_max = -1로 설정해 raw_exec 드라이버를 사용하는 작업이 최대 메모리 제한을 갖지 않도록 구성할 수 있어요.

resources {
  cpu        = 500
  memory     = 128
  memory_max = -1 # no limit
}

다음 단계

작업에서 raw_exec 드라이버를 사용해요.

더 알아보기 (Learn more)