작업에서 Raw Fork/Exec 태스크 드라이버 사용하기

작업에서 Raw Fork/Exec 태스크 드라이버 사용하기 (Use the Raw Fork/Exec task driver in a job)

이름: raw_exec

raw_exec 드라이버는 격리 없이 태스크에 명령을 실행하는 데 사용돼요. 또한 태스크는 Nomad 프로세스와 같은 사용자로 시작돼요. 따라서 매우 주의해서 사용해야 하며 기본적으로 비활성화되어 있어요.

기능, 클라이언트 요구 사항, 플러그인 구성은 Raw Fork/Exec 태스크 드라이버 구성을 참조하세요.

출처: 문서

본문

작업 구성 (Task configuration)

task "webservice" {
  driver = "raw_exec"

  config {
    command = "my-binary"
    args    = ["-flag", "1"]
  }
}

raw_exec 드라이버는 작업 명세에서 다음 구성을 지원해요:

  • command — 실행할 명령. 반드시 제공해야 해요. 호스트에 존재하는 바이너리를 실행한다면 경로는 절대 경로여야 해요. artifact에서 다운로드한 바이너리를 실행한다면, 경로는 할당의 루트 디렉토리에서 상대 경로일 수 있어요.

  • args — (선택) command에 대한 인수 목록. 환경 변수 또는 해석 가능한 Nomad 변수에 대한 참조는 태스크 실행 전에 해석돼요.

  • cgroup_v1_override — (선택) 컨트롤러 이름에서 경로로의 맵. 태스크는 이 cgroup에 추가돼요. 이 cgroup이 존재하지 않으면 태스크는 실패해요. 경고: 다른 Nomad 드라이버의 cgroup과 충돌해 의도하지 않은 부작용이 있을 수 있어요.

  • cgroup_v2_override — (선택) 태스크를 통합 cgroup 경로에 추가해요. 경로는 cgroupfs 루트에 상대적이거나 절대적일 수 있어요. 경고: 다른 Nomad 드라이버의 cgroup과 충돌해 의도하지 않은 부작용이 있을 수 있어요.

Linux에서 프로덕션 가이드에 따라 Nomad 클라이언트를 강화했다면 raw_exec 드라이버를 사용하는 태스크에 task.user 필드를 설정할 수 없어요. Windows에서 Nomad가 시스템 서비스로 실행 중이라면 덜 권한이 있는 서비스 사용자를 지정할 수 있어요. 예를 들어 NT AUTHORITY\LocalService, NT AUTHORITY\NetworkService처럼요.

  • oom_score_adj — (선택) 태스크가 OOM 킬되기 쉬운 정도를 나타내는 양의 정수(Linux에서만 유효). 기본값은 0이에요.

  • work_dir — (선택) 태스크에 대한 사용자 지정 작업 디렉토리를 설정해요. 이 경로는 절대 경로여야 해요. nomad alloc exec를 사용할 때도 작업 디렉토리가 바뀌어요.

  • denied_envvars — (선택) 드라이버가 태스크 환경에서 지워야 하는 환경 변수 목록을 전달해요. "*" 와일드카드를 접두사 및/또는 접미사로 허용하는 globbing을 지원해요.

예제 (Examples)

노드에 존재하는 바이너리를 실행하려면:

task "example" {
  driver = "raw_exec"
  
  config {
    # When running a binary that exists on the host, the path must be absolute/
    command = "/bin/sleep"
    args    = ["1"]
  }
}

artifact에서 다운로드한 바이너리를 실행하려면:

task "example" {
  driver = "raw_exec"
  
  config {
    command = "name-of-my-binary"
  }
  
  artifact {
    source = "https://internal.file.server/name-of-my-binary"
    options {
      checksum = "sha256:abd123445ds4555555555"
    }
  }
}

더 알아보기 (Learn more)