컨테이너용 Application Gateway에 대한 사용자 지정 상태 프로브

컨테이너용 Application Gateway는 기본적으로 모든 백 엔드 대상의 상태를 모니터링합니다. 백 엔드 대상이 정상이거나 비정상이 되면 컨테이너용 Application Gateway는 트래픽을 정상 엔드포인트로만 분산합니다.

기본 상태 프로브 모니터링 사용 외에도 애플리케이션 프로그의 요구 사항에 맞게 상태 프로브를 사용자 지정할 수도 있습니다. 이 문서에서는 기본 상태 프로브와 사용자 지정 상태 프로브를 모두 설명합니다.

상태 검색의 순서와 논리는 다음과 같습니다.

  1. HealthCheckPolicy CR(사용자 지정 리소스)의 정의를 사용합니다.
  2. HealthCheckPolicy CR이 없는 경우 준비 프로브를 사용합니다.
  3. 준비 프로브가 정의되지 않은 경우 기본 상태 프로브를 사용합니다.

다음 속성은 사용자 지정 상태 프로브를 구성합니다.

속성 기본값
interval 백 엔드 대상에 상태 프로브를 전송해야 하는 빈도(초)입니다. 최소 간격은 > 0초여야 합니다.
시간 제한 요청이 실패로 표시될 때까지 기다려야 하는 시간(초). 최소 간격은 > 0초여야 합니다.
healthyThreshold 대상 엔드포인트를 정상 상태로 표시하기 전의 상태 프로브 수입니다. 최소 간격은 > 0이어야 합니다.
port 백 엔드 대상을 조사할 때 사용되는 포트 번호.
unhealthyTreshold 백 엔드 대상에 비정상 레이블을 지정하기 전에 실패할 상태 프로브의 수입니다. 최소 간격은 > 0이어야 합니다.
grpc 백 엔드 서비스가 gRPC 연결을 기대하는 경우 지정됩니다. 값은 {}여야 합니다.
(http) 백 엔드 서비스가 http 연결을 예상하는 경우 지정됩니다.
(http) 호스트 백 엔드 대상에 대한 요청에 지정된 호스트 이름입니다.
(http) 경로 요청의 특정 경로입니다. 단일 파일을 로드해야 하는 경우 경로는 /index.html일 수 있습니다.
(http -> 일치) statusCodes 백 엔드에서 반환된 유효한 HTTP 상태 코드의 범위를 정의하는 두 가지 속성(startend)을 포함합니다.
UseTLS UseTLS는 상태 검사에서 TLS를 적용해야 하는지 여부를 나타냅니다. 지정하지 않으면, 상태 검사는 동일한 포트가 상태 검사에 사용되는 경우 서비스와 동일한 프로토콜을 사용합니다. 포트가 다르면 상태 검사는 일반 텍스트입니다.

백 엔드 상태를 확인하기 위해 사용자 지정 상태 프로브를 사용하는 컨테이너용 Application Gateway를 보여 주는 다이어그램.

기본 상태 프로브

사용자 지정 프로브 구성을 정의하지 않거나 준비 프로브를 구성하지 않은 경우 컨테이너용 Application Gateway는 기본 상태 프로브를 자동으로 구성합니다. 모니터링 동작은 구성된 백 엔드 대상의 IP 주소에 대해 HTTP GET 요청을 수행하는 방식으로 작동합니다. 기본 프로브의 경우 백 엔드 대상이 HTTPS용으로 구성된 경우 프로브는 HTTPS를 사용하여 백 엔드 대상의 상태를 테스트합니다.

구현에 대한 자세한 내용은 API 사양의 HealthCheckPolicyConfig를 참조하세요.

기본 상태 프로브를 사용하는 경우 각 상태 프로브 속성에 대해 다음 값이 사용됩니다.

속성 기본값
interval 5초
시간 제한 30초
healthyTrehshold 프로브 1개
unhealthyTreshold 프로브 3개
port 사용되는 포트 번호는 수신 리소스의 백 엔드 포트 번호 또는 HttpRoute 리소스의 HttpRoute 백 엔드 포트로 정의됩니다.
(http) 호스트 localhost
(http) 경로 /
UseTLS TLS가 지정된 경우 HTTP 및 HTTPS용 HTTP.

1 backendTLSPolicy가 대상 백 엔드 서비스(게이트웨이 API 구현용)를 참조하거나 HTTPS의 backendSetting 프로토콜(수신 API 구현용)이 있는 IngressExtension이 지정된 경우 HTTPS가 사용됩니다.

참고 항목

상태 프로브는 Microsoft-Azure-Application-LB/AGCUser-Agent 값으로 시작됩니다.

사용자 지정 상태 프로브

게이트웨이 API와 수신 API 모두에서 HealthCheckPolicyPolicy 리소스를 정의하고 상태 프로브가 확인해야 하는 서비스를 참조하여 사용자 지정 상태 프로브를 정의할 수 있습니다. 서비스가 컨테이너용 Application Gateway에 대한 클래스 참조가 있는 HTTPRoute 또는 수신 리소스에서 참조되므로 사용자 지정 상태 프로브는 각 참조에 사용됩니다.

이 예제에서 컨테이너용 Application Gateway에서 내보낸 상태 프로브는 test-service를 구성하는 Pod에 호스트 이름 contoso.com을 보냅니다. 요청된 프로토콜은 http이며 경로는 /입니다. 5초마다 프로브가 발사되고 연결 시간이 초과되었는지 확인하기 전까지 3초 동안 기다립니다. 응답이 수신되면 200~299(200 및 299 포함) 사이의 HTTP 응답 코드는 정상으로 간주되며 다른 모든 응답은 비정상으로 간주됩니다.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
  name: gateway-health-check-policy
  namespace: test-infra
spec:
  targetRef:
    group: ""
    kind: Service
    name: test-service
    namespace: test-infra
  default:
    interval: 5s
    timeout: 3s
    healthyThreshold: 1
    unhealthyThreshold: 1
    port: 8123
    # grpc: {} # defined if probing a gRPC endpoint
    http:
      host: contoso.com
      path: /
      match:
        statusCodes: 
        - start: 200
          end: 299
    UseTLS: true
EOF