ECS 구성 참조
ECS 구성 참조 (ECS Configuration)
이 문서는 consul-ecs 바이너리에서 사용하는 JSON 구성 형식의 구성 옵션을 설명해요. CONSUL_ECS_CONFIG_JSON 환경 변수를 통해 문자열로 전달하며, 검증에 사용할 수 있는 JSON 스키마를 따릅니다.
출처: 문서
본문
이 항목은 consul-ecs 바이너리에서 사용하는 JSON 구성 형식의 구성 옵션을 설명합니다. 이 구성은 CONSUL_ECS_CONFIG_JSON 환경 변수를 사용해 문자열로 consul-ecs 바이너리에 전달됩니다.
이 구성 형식은 검증에 사용할 수 있는 JSON 스키마를 따릅니다.
Terraform 메시 태스크 모듈 구성 (Terraform Mesh Task Module Configuration)
mesh-task Terraform 모듈은 일반적으로 사용되는 필드에 대한 입력 변수를 제공합니다. 다음 표는 Consul ECS 구성의 각 필드에 해당하는 Terraform 입력 변수를 보여줍니다. mesh-task 모듈에서 지원되는 입력 변수의 전체 참조는 Terraform 레지스트리 문서를 참조하세요.
| Terraform 입력 변수 (Terraform Input Variable) | Consul ECS 구성 필드 (Consul ECS Config Field) |
| upstreams | proxy.upstreams |
| checks | service.checks |
| consul_service_name | service.name |
| consul_service_tags | service.tags |
| consul_service_meta | service.meta |
| consul_namespace | service.namespace |
| consul_partition | service.partition |
이 Terraform 입력 변수들은 각각 Consul ECS 구성 스키마를 따릅니다. 이 표에 나열되지 않은 Consul ECS 구성의 나머지 필드는 consul_ecs_config 입력 변수를 사용해 전달할 수 있습니다.
최상위 수준 필드 (Top-level fields)
다음은 Consul ECS 구성 형식의 최상위 수준 필드입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| bootstrapDir | string | required | consul-ecs mesh-init이 Envoy 부트스트랩 구성을 쓰는 공유 볼륨을 마운트할 디렉터리. |
| consulCACertFile | string | optional | Consul 서버 CA 인증서의 파일 경로. |
| consulHTTPAddr | string | optional | Consul 서버의 HTTP(S) URL. authMethod.enabled가 설정되면 필수. |
| consulLogin | object | optional | AWS IAM 인증 메서드에 로그인하기 위한 구성. |
| gateway | object | optional | 게이트웨이 프록시 등록 구성. |
| healthSyncContainers | array | optional | health check 상태가 ECS에서 Consul로 동기화될 컨테이너 이름. service.checks와 함께 지정할 수 없음. |
| logLevel | string | optional | consul-ecs mesh-init 및 consul-ecs health-sync 명령의 로그 수준을 설정. 기본값 INFO. TRACE, DEBUG, INFO, WARN, ERROR, 또는 null 중 하나여야 함. |
| proxy | object | optional | Consul과의 사이드카 프록시 등록 구성. |
| service | object | optional | Consul 서비스 등록 구성. |
consulLogin
AWS IAM 인증 메서드에 로그인하기 위한 구성입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| enabled | boolean | optional | ACL 토큰을 얻기 위해 Consul의 AWS IAM 인증 메서드에 로그인을 활성화. 인증 메서드는 Consul 서버에서 구성되어야 하며 ECS 태스크 역할이 인증 메서드에 의해 신뢰되어야 함. 로그인 후 토큰은 <bootstrapDir>/service-token 파일에 기록됨. |
| extraLoginFlags | array | optional | consul login 명령에 전달할 추가 CLI 플래그. consul login -type aws -method <name> -token-sink-file <file> -aws-auto-bearer-token -aws-include-identity 명령에 추가됨. |
| includeEntity | boolean | optional | consul login 명령에 -aws-include-entity 플래그를 추가. 기본값 true. false로 설정하면 명령에서 플래그를 제거. -aws-include-entity 플래그는 Consul AWS IAM 인증 메서드가 EnableIAMEntityDetails=true로 구성된 경우에만 전달해야 함. |
| method | string | optional | Consul 인증 메서드의 이름. consul login 명령에 -method 옵션으로 전달됨. 기본값 iam-ecs-service-token. |
gateway
게이트웨이 프록시 등록 구성입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| kind | string | required | 등록할 게이트웨이 유형을 지정. mesh-gateway여야 함. |
| lanAddress | object | optional | 게이트웨이의 LAN 주소와 포트. 지정하지 않으면 기본적으로 태스크/노드 주소로 설정. |
| meta | object | optional | 게이트웨이에 포함할 메타데이터의 키-값 쌍. |
| name | string | optional | Consul에서 게이트웨이가 등록될 이름. 기본값은 태스크 패밀리 이름. |
| namespace | string | optional | 게이트웨이가 등록될 Enterprise Consul 네임스페이스. |
| partition | string | optional | 게이트웨이가 등록될 Enterprise Consul 어드민 파티션. |
| proxy | object | optional | 프록시 매개변수를 포함하는 객체. |
| tags | array | optional | 게이트웨이에 라벨을 추가하는 데 사용할 수 있는 문자열 값 목록. |
| wanAddress | object | optional | 게이트웨이의 WAN 주소와 포트. 지정하지 않으면 기본적으로 태스크/노드 주소로 설정. |
gateway.lanAddress
게이트웨이의 LAN 주소와 포트입니다. 지정하지 않으면 기본적으로 태스크/노드 주소로 설정됩니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| address | string | optional | |
| port | integer | optional | |
gateway.proxy
프록시 매개변수를 포함하는 객체입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| config | object | optional | |
gateway.wanAddress
게이트웨이의 WAN 주소와 포트입니다. 지정하지 않으면 기본적으로 태스크/노드 주소로 설정됩니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| address | string | optional | |
| port | integer | optional | |
proxy
Consul과의 사이드카 프록시 등록 구성입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| config | object | optional | 불투명한 JSON 구성을 지정하는 객체 값. API에서 호출될 때 서비스 인스턴스와 함께 JSON이 저장되고 반환됨. |
| meshGateway | object | optional | 프록시의 메시 게이트웨이 구성을 지정. |
| upstreams | array | optional | 프록시가 리스너를 만들어야 하는 업스트림 서비스 목록. |
proxy.meshGateway
프록시의 메시 게이트웨이 구성을 지정합니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| mode | string | required | 원격 대상 데이터센터가 있는 업스트림이 해석되는 방식을 지정. none, local, 또는 remote 중 하나여야 함. |
proxy.upstreams
프록시가 리스너를 만들어야 하는 업스트림 서비스 목록입니다. 각 upstream 객체는 다음 필드를 포함할 수 있습니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| config | object | optional | 업스트림에 대해 프록시 인스턴스에 제공될 불투명한 구성 옵션을 지정. |
| datacenter | string | optional | 디스커버리 쿼리를 발행할 데이터센터를 지정. |
| destinationName | string | required | 서비스 메시를 라우팅할 업스트림 서비스 또는 prepared query의 이름을 지정. |
| destinationNamespace | string | optional | Enterprise 업스트림 서비스가 포함된 네임스페이스를 지정. |
| destinationPartition | string | optional | Enterprise 업스트림 서비스가 포함된 어드민 파티션의 이름을 지정. |
| destinationType | string | optional | 프록시가 서비스 메시 인스턴스를 찾는 데 사용해야 하는 디스커버리 쿼리 유형을 지정. service, prepared_query, 또는 null 중 하나여야 함. |
| localBindAddress | string | optional | 로컬 리스너를 바인딩할 주소를 지정. |
| localBindPort | integer | required | 로컬 리스너를 바인딩할 포트를 지정. 애플리케이션은 로컬 포트에서 업스트림으로 아웃바운드 연결을 만들게 됨. |
| meshGateway | object | optional | 이 업스트림에 대한 프록시의 메시 게이트웨이 구성을 지정. |
proxy.upstreams.meshGateway
이 업스트림에 대한 프록시의 메시 게이트웨이 구성을 지정합니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| mode | string | required | 원격 대상 데이터센터가 있는 업스트림이 해석되는 방식을 지정. none, local, 또는 remote 중 하나여야 함. |
service
Consul 서비스 등록 구성입니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| checks | array | optional | 서비스의 Consul check 목록. healthSyncContainers와 함께 지정할 수 없음. |
| enableTagOverride | boolean | optional | 서비스의 안티엔트로피(anti-entropy) 기능이 활성화되는지 결정. |
| meta | object | optional | Consul 서비스에 포함할 메타데이터의 키-값 쌍. |
| name | string | optional | Consul에서 서비스가 등록될 이름. 비어 있거나 null이면 기본값은 태스크 패밀리 이름. |
| namespace | string | optional | Enterprise 서비스가 등록될 Consul 네임스페이스. |
| partition | string | optional | Enterprise 서비스가 등록될 Consul 어드민 파티션. |
| port | integer | required | 애플리케이션이 수신하는 포트(있는 경우). |
| tags | array | optional | 서비스 수준 라벨을 추가하는 데 사용할 수 있는 문자열 값 목록. |
| weights | object | optional | DNS 서비스(SRV) 응답 측면에서 서비스의 가중치를 구성. |
service.checks
서비스의 Consul check를 정의합니다. 각 check 객체는 다음 필드를 포함할 수 있습니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| aliasNode | string | optional | 별칭(alias) check의 노드 ID를 지정. |
| aliasService | string | optional | 별칭 check의 서비스 ID를 지정. |
| args | array | optional | check 상태를 업데이트하기 위해 실행할 명령 인수. |
| body | string | optional | HTTP check와 함께 보내야 하는 본문을 지정. |
| checkId | string | optional | 노드에서 이 check의 고유 ID. 기본값은 check name. |
| failuresBeforeCritical | integer | optional | check 상태가 critical로 전환되기 전에 필요한 연속 실패 횟수를 지정. |
| grpc | string | optional | gRPC check를 지정. 표준 gRPC health checking 프로토콜을 지원하는 엔드포인트여야 함. 엔드포인트는 interval마다 프로브됨. |
| grpcUseTls | boolean | optional | 이 gRPC health check에 TLS를 사용할지 지정. |
| h2ping | string | optional | h2ping check임을 지정. interval마다 ping될 주소여야 함. |
| h2pingUseTls | boolean | optional | h2ping check에 TLS를 사용할지 지정. |
| header | object | optional | HTTP check에 설정해야 하는 헤더 집합을 지정. 각 헤더는 여러 값을 가질 수 있음. |
| http | string | optional | HTTP check임을 지정. interval마다 요청이 수행되는 URL이어야 함. |
| interval | string | optional | 이 check를 실행할 빈도를 지정. HTTP, TCP 및 UDP check에 필수. |
| method | string | optional | HTTP check에 사용할 HTTP 메서드를 지정. 값이 지정되지 않으면 GET이 사용됨. |
| name | string | optional | check의 이름. |
| notes | string | optional | 사람을 위한 임의 정보를 지정. Consul 내부적으로 사용되지 않음. |
| os_service | string | optional | OS 서비스 check를 수행할 서비스의 이름을 지정. check는 interval 매개변수에 지정된 빈도에 따라 실행됨. |
| status | string | optional | health check의 초기 상태를 지정. passing, warning, critical, maintenance, 또는 null 중 하나여야 함. |
| successBeforePassing | integer | optional | check 상태가 passing으로 전환되기 전에 필요한 연속 성공 횟수를 지정. |
| tcp | string | optional | TCP check임을 지정. interval마다 TCP 연결이 이루어지는 IP/호스트네임 더하기 포트여야 함. |
| tcpUseTls | boolean | optional | 이 TCP health check에 TLS를 사용할지 지정. TLS가 활성화되면 기본적으로 유효한 TLS 인증서가 예상됨. TLSSkipVerify를 true로 설정하면 인증서 검증을 비활성화할 수 있음. |
| timeout | string | optional | 아웃바운드 연결의 제한 시간을 지정. 스크립트, HTTP, TCP, UDP 및 gRPC check에 적용됨. 10s 또는 5m 같은 duration 문자열이어야 함. |
| tlsServerName | string | optional | TLS로 연결할 때 SNI 호스트를 설정하는 데 사용되는 선택적 문자열을 지정. |
| tlsSkipVerify | boolean | optional | check가 검사 중인 서버가 제시한 인증서의 체인과 호스트네임을 검증할지 지정. true로 설정하면 검증을 비활성화. 프로덕션에서는 false로 설정할 것을 권장. 기본값 false. 지원되는 check 유형: HTTP, H2Ping, gRPC, TCP |
| ttl | string | optional | TTL check임을 지정. 10s 또는 5m 같은 duration 문자열이어야 함. |
| udp | string | optional | UDP check임을 지정. interval마다 UDP 데이터그램이 전송되는 IP/호스트네임 더하기 포트여야 함. |
service.weights
DNS 서비스(SRV) 응답 측면에서 서비스의 가중치를 구성합니다.
| 필드 (Field) | 유형 (Type) | 필수 (Required) | 설명 (Description) |
| passing | integer | required | health check가 passing일 때 서비스의 가중치. |
| warning | integer | required | health check가 warning 상태일 때 서비스의 가중치. |