Consul 서비스 등록 구성

Consul 서비스 등록 구성

Consul Service Registration은 기본 상태 검사(health check)와 함께 Vault를 Consul의 서비스로 등록합니다. Consul이 storage backend로 구성되면 service_registration 스탠자는 필요하지 않습니다. Vault가 자동으로 서비스로 등록하기 때문입니다.

출처: 문서

본문

버전 정보: service_registration 구성 옵션은 Vault 1.4.0에서 도입되었습니다.

호환성 정보: Consul 1.14.0부터 Consul on Kubernetes는 클라이언트 에이전트 대신 기본적으로 Consul Dataplane을 사용합니다. Vault는 현재 Consul Dataplane을 지원하지 않습니다. Consul 1.14.0 업그레이드 가이드를 따라 Consul on Kubernetes 배포가 계속 클라이언트 에이전트를 사용하도록 하세요.

  • HashiCorp 지원 – Consul Service Registration은 HashiCorp가 공식 지원합니다.

구성

service_registration "consul" {
  address      = "127.0.0.1:8500"
}

Vault가 HA 모드로 실행 중이라면 주소에 전송 프로토콜(http:// 또는 https://)을 포함하세요:

service_registration "consul" {
  address      = "http://127.0.0.1:8500"
}

올바르게 구성되면 봉인 해제된 Vault 설치는 다음에서 접근할 수 있어야 합니다:

active.vault.service.consul

standby 모드의 봉인 해제된 Vault 인스턴스는 다음에서 접근할 수 있습니다:

standby.vault.service.consul

모든 봉인 해제된 Vault 인스턴스는 정상(healthy) 상태로 다음에서 접근할 수 있습니다:

vault.service.consul

봉인된(sealed) Vault 인스턴스는 Consul의 서비스 검색 레이어에서 반환되지 않도록 스스로 비정상(unhealthy) 상태로 표시합니다.

consul 파라미터

  • address (string: "127.0.0.1:8500") – 통신할 Consul 에이전트의 주소를 지정합니다. IP 주소, DNS 레코드, 또는 unix 소켓일 수 있습니다. 로컬 Consul 에이전트와 통신하는 것을 권장합니다. 서버와 직접 통신하지 마세요.

  • check_timeout (string: "5s") – 상태 검사 정보를 Consul로 다시 보내는 데 사용되는 검사 간격을 지정합니다. "30s""1h" 같은 라벨 접미사로 지정합니다.

  • disable_registration (string: "false") – Vault가 Consul에 스스로를 등록해야 하는지 여부를 지정합니다.

  • scheme (string: "http") – Consul과 통신할 때 사용할 스킴을 지정합니다. "http" 또는 "https"로 설정할 수 있습니다. 비로컬 연결에서는 Consul과 https로 통신하는 것을 적극 권장합니다. unix 소켓으로 통신할 때는 이 옵션이 무시됩니다.

  • service (string: "vault") – Consul에 등록할 서비스의 이름을 지정합니다.

  • service_tags (string: "") – Consul의 서비스 등록에 연결할 대소문자 구분 태그의 쉼표로 구분된 목록을 지정합니다.

  • service_meta (map[string]string: {}) – Consul의 서비스 등록에 연결할 메타 태그의 키-값 목록을 지정합니다. 자세한 내용은 Consul 문서의 ServiceMeta를 참고하세요.

  • service_address (string: nil) – Consul의 서비스 등록에 설정할 서비스별 주소를 지정합니다. 설정하지 않으면 Vault가 자신이 아는 HA 리다이렉트 주소를 사용하는데, 보통 바람직합니다. 이 파라미터를 ""로 설정하면 Consul이 서비스가 등록된 노드의 구성을 동적으로 활용하도록 지시합니다. 이는 Consul의 translate_wan_addrs 파라미터를 활용하려는 경우 유용할 수 있습니다.

  • token (string: "") – Vault 서비스를 Consul의 서비스 카탈로그에 등록할 권한이 있는 Consul ACL 토큰을 지정합니다. 이는 Vault 토큰이 아닙니다. 도움이 필요하면 아래 ACL 섹션을 참고하세요.

다음 설정은 암호화된 연결로 Consul과 통신할 때 적용됩니다. Consul 연결 암호화에 대한 자세한 내용은 Consul encryption 페이지에서 읽을 수 있습니다.

  • tls_ca_file (string: "") – Consul 통신에 사용되는 CA 인증서의 경로를 지정합니다. 지정하지 않으면 시스템 번들로 기본 설정됩니다. Consul의 ca_file 설정에 따라 설정해야 합니다.

  • tls_cert_file (string: "") (선택 사항) – Consul 통신을 위한 인증서의 경로를 지정합니다. Consul의 cert_file 설정에 따라 설정해야 합니다.

  • tls_key_file (string: "") – Consul 통신을 위한 개인 키의 경로를 지정합니다. Consul의 key_file 설정에 따라 설정해야 합니다.

  • tls_min_version (string: "tls12") – 사용할 최소 TLS 버전을 지정합니다. 허용되는 값은 "tls10", "tls11", "tls12" 또는 "tls13"입니다.

  • tls_skip_verify (string: "false") – TLS 인증서 검증을 비활성화합니다. 이 옵션 사용은 권장되지 않습니다.

ACL

Consul에서 ACL을 사용한다면 Vault 서비스를 등록하기 위한 적절한 권한이 필요합니다. 서비스 이름이 vault라고 가정할 때 다음 ACL 정책이 대부분의 사용 사례에 작동합니다:

{
  "service": {
    "vault": {
      "policy": "write"
    }
  }
}

consul 예시

로컬 에이전트

이 예시는 127.0.0.1:8500에서 실행 중인 로컬 Consul 에이전트와 통신하는 샘플 구성을 보여줍니다.

service_registration "consul" {}

상세 사용자 지정

이 예시는 ACL 토큰과 함께 사용자 지정 주소의 Consul과 통신하는 방법을 보여줍니다.

service_registration "consul" {
  address = "10.5.7.92:8194"
  token   = "abcd1234"
}

unix 소켓을 통한 Consul

이 예시는 로컬 unix 소켓을 통해 Consul과 통신하는 방법을 보여줍니다.

service_registration "consul" {
  address = "unix:///tmp/.consul.http.sock"
}

사용자 지정 TLS

이 예시는 사용자 지정 CA, 인증서, 키 파일을 사용해 TLS로 Consul과 안전하게 통신하는 방법을 보여줍니다.

service_registration "consul" {
  scheme        = "https"
  tls_ca_file   = "/etc/pem/vault.ca"
  tls_cert_file = "/etc/pem/vault.cert"
  tls_key_file  = "/etc/pem/vault.key"
}

더 알아보기