worker 스탠자

worker 스탠자

worker 스탠자는 Boundary 워커 특화 파라미터를 구성해요. 워커의 공개 주소, 업스트림 연결, 세션 녹화를 위한 로컬 저장소, 태그 같은 것들을 여기서 정해요.

출처: HashiCorp Boundary docs

본문

worker 스탠자는 Boundary 워커 특화 파라미터를 구성해요.

다음 필드들은 모든 등록 메커니즘에 적용돼요.

worker {
  public_addr = "5.1.23.198"

  # Local storage path required if session recording is enabled
  recording_storage_path = "tmp/boundary/"

  # Minimum available disk space required in the local storage path if session recording is enabled
  recording_storage_minimum_available_capacity = "500MB"

  # Mutually exclusive with hcp_boundary_cluster_id
  initial_upstreams = [
    "10.0.0.1",
    "10.0.0.2",
  ]

  tags {
    type   = ["prod", "webservers"]
    region = ["us-east-1"]
  }

  # HCP Boundary only
  # hcp_boundary_cluster_id = "....."
}
  • public_addr — 클라이언트가 프록싱을 위해 워커에 도달할 수 있는 공개 호스트 또는 IP 주소(그리고 선택적으로 포트)를 지정해요. 기본적으로는 proxy 용도로 표시된 리스너의 주소를 사용해요. Amazon EIP처럼 공개적으로 접근 가능한 IP를 호스트의 NIC에 직접 바인딩하지 않는 클라우드 환경에서 유용해요. 이 self-managed 워커가 업스트림 HCP-managed 워커에 연결하는 멀티홉(multi-hop) 구성에서는 이 파라미터를 생략해야 해요. 이 값은 다음 중 하나를 참조할 수 있어요: 직접 주소 문자열, 디스크의 파일(file://)에서 주소를 읽거나, 환경 변수(env://)에서 주소를 읽는 것.
  • initial_upstreams — Boundary 클러스터에 도달하기 위한 호스트/IP 주소와 선택적으로 포트의 목록이에요. 포트는 지정하지 않으면 기본적으로 :9201로 설정돼요. 이 값은 주소를 가진 직접 접근 문자열 배열일 수도 있고, 주소를 읽어올 디스크의 파일(file://)을 가리키거나, 주소를 읽어올 환경 변수(env://)를 가리킬 수도 있어요. 환경 변수나 파일을 사용할 때 그 내용은 JSON 배열로 형식화되어야 해요: ["127.0.0.1", "192.168.0.1", "10.0.0.1"]. HCP Boundary에 연결하는 self-managed 워커는, HCP-managed 워커를 인그레스(ingress) 워커로 구성하지 않는 한 initial_upstreams 대신 hcp_boundary_cluster_id 파라미터를 필요로 해요. self-managed 워커를 initial_upstreams와 hcp_boundary_cluster_id 둘 다로 구성하면 워커 구성이 실패해요.
  • hcp_boundary_cluster_id — initial_upstreams를 지정하는 대신, worker-led 또는 controller-led 등록을 사용하는 워커가 HCP Boundary 클러스터에 연결하도록 구성하는 데 필요한 문자열이에요. 이 파라미터는 worker-led 또는 controller-led 등록 방식을 사용하는 워커와 HCP Boundary에 직접 연결된 워커에만 유효해요.
  • ssh_known_hosts_path — 워커가 SSH 대상의 SSH 호스트 키를 검증하는 데 사용하는 known_hosts 파일의 경로를 지정해요. 경로가 이미 존재해야 해요. 경로를 제공하지 않으면 워커는 호스트 키 검증을 건너뛰어요. SIGHUP에서 known_hosts 파일을 다시 파싱하고 새 값을 사용해요.
  • recording_storage_path — 녹화된 세션을 위한 로컬 저장소 경로예요. Boundary는 세션이 진행되는 동안 세션 녹화를 로컬 저장소에 보관해요. 세션이 완료되면 Boundary는 로컬 세션 녹화를 원격 저장소로 옮기고 로컬 복사본을 삭제해요.
  • recording_storage_minimum_available_capacity — 바이트 단위로 측정되는 값으로 워커의 로컬 저장소 상태를 정의해요. Boundary는 이 값을 recording_storage_path에서 발견한 사용 가능한 로컬 디스크 공간과 비교해 워커가 세션 녹화 작업을 수행할 수 있는지 판단해요. 지원되는 접미사는 kb, kib, mb, mib, gb, gib, tb, tib이며 대소문자를 구분하지 않아요. 예: 2GB, 2gb, 2GiB, 2gib. recording_storage_minimum_available_capacity에 따른 가능한 저장소 상태는 다음과 같아요.
    • Available — 워커가 임계값 이상의 저장소를 가지며, 세션 녹화가 활성화된 세션을 프록시할 수 있어요.
    • Low storage — 워커의 저장소가 임계값 이하예요. 기존 세션은 중단 없이 계속되도록 허용하지만, 세션 녹화가 활성화된 새 세션을 프록시하는 것은 막아요. 워커는 새 세션을 녹화할 수도, 기존 녹화를 재생할 수도 없어요.
    • Critically low storage — 워커가 저장소 임계값의 절반 이하로 떨어졌어요. 세션 녹화가 있는 기존 세션을 강제로 닫아요. 워커는 새 세션을 녹화할 수도, 기존 녹화를 재생할 수도 없어요.
    • Out of storage — 워커의 로컬 디스크 공간이 없어요. 새 세션을 녹화할 수도, 기존 녹화를 재생할 수도 없어요. 워커는 복구할 수 없는 상태에 들어가 관리자가 개입해 문제를 해결해야 해요.
    • Not configured — 워커에 구성된 로컬 저장소 경로가 없어요.
    • Unknown — 워커가 이 기본 로컬 저장소 상태로 시작해요. 워커의 로컬 저장소 상태가 아직 알려지지 않았음을 나타내요.
  • tags — 값이 문자열 배열인 키-값 쌍의 맵이에요. 워커가 프록시할 수 있는 대상을 워커 태그로 필터링하는 데 가장 흔히 사용돼요. SIGHUP에서 여기 설정한 태그를 다시 파싱하고 새 값을 사용해요. 디스크의 파일(file://)이나 환경 변수(env://)를 가리키는 문자열일 수도 있어요.

완전한 구성 예시

listener "tcp" {
    purpose = "proxy"
    tls_disable = true
    address = "127.0.0.1"
}

worker {
  # Path for worker storage, assuming worker-led or controller-led registration. Must be unique across workers
  auth_storage_path="/boundary/demo-worker-1"

  # Local storage path required if session recording is enabled
  recording_storage_path = "tmp/boundary/"

  # Minimum available disk space required in the local storage path if session recording is enabled
  recording_storage_minimum_available_capacity = "500MB"

  # Workers typically need to reach upstreams on :9201
  initial_upstreams = [
    "10.0.0.1",
    "10.0.0.2",
    "10.0.0.3",
  ]

  public_addr = "myhost.mycompany.com"

  tags {
    type   = ["prod", "webservers"]
    region = ["us-east-1"]
  }
}

# The following KMS config is an example only
# Use a production KMS such as AWS KMS for production installs
kms "aead" {
  purpose = "worker-auth-storage"
    aead_type = "aes-gcm"
    key = "X+IJMVT6OnsrIR6G/9OTcJSX+lM9FSPN"
    key_id = "worker-auth-storage"
}