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 상태일 때 서비스의 가중치. |

더 알아보기 (Learn more)