Envoy용 Apigee 어댑터 출시 노트

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

v2.1.1

2023년 6월 7일에 Envoy용 Apigee 어댑터 버전 2.1.1이 출시되었습니다.

해결된 문제

  • 제품 수준에서 할당량이 공유되는 대신 작업 간에 할당량이 부적절하게 복제되는 문제가 해결되었습니다.

v2.1.0

2023년 6월 5일에 Envoy용 Apigee 어댑터 버전 2.1.0이 출시되었습니다.

해결된 문제

  • application_id 클레임이 /verifyApiKey 응답에 추가되었습니다.

v2.0.7

2023년 3월 9일에 Envoy용 Apigee 어댑터 버전 2.0.7이 출시되었습니다.

기능 및 개선사항

  • JWT는 이제 x-apigee-customattributes라는 헤더의 대상에 값을 전달할 customattributes라는 클레임을 추가할 수 있습니다 (append_metadata_headerstrue로 구성된 경우).

해결된 문제

  • 잘못된 API 키로 인해 잘못된 로그 항목과 분석 레코드가 생성될 수 있는 문제가 수정되었습니다.
  • 지원 중단된 버전 확인이 프록시에서 삭제되어 최신 버전의 Apigee에서 문제가 발생했습니다.

v2.0.6

2022년 10월 18일에 Envoy용 Apigee 어댑터 버전 2.0.6이 출시되었습니다.

해결된 문제

  • 종속 항목 라이브러리의 서비스 거부 (DoS) 취약점을 해결하기 위한 보안 출시입니다. CVE-2022-28948을 참고하세요.

v2.0.5

2022년 3월 3일에 Envoy용 Apigee 어댑터 버전 2.0.5가 출시되었습니다.

해결된 문제

  • Prometheus 라이브러리의 서비스 거부 (DoS) 위험을 해결하기 위한 보안 출시입니다. CVE-2022-21698을 참고하세요.

v2.0.4

2021년 12월 3일에 Envoy용 Apigee 어댑터 버전 2.0.4가 출시되었습니다.

기능 및 개선사항

  • CLI samples 명령어에 지원되는 Envoy 및 Istio 버전 목록이 업데이트되었습니다. 이제 샘플에는 다음 버전이 지원됩니다.
    • Envoy 버전 1.18~1.20
    • Istio 버전 1.10~1.12

해결된 문제

  • 패닉을 방지하기 위해 PEM 블록 비공개 키 로드 시 nil 확인이 추가되었습니다. (문제 #360)
  • 이제 원격 서비스 승인 오류가 디버그 수준에서 로깅됩니다. API 키에 대한 토큰 가져오기 오류에는 이 분류가 적용되지 않습니다. 이 경우 오류가 오류 수준에서 로깅되므로 apigee-remote-service-envoy의 디버그 로그 수준이 사용 중지된 경우에도 표시됩니다. 원격 서비스 로그 수준 설정도 참조하세요. (문제 #104)

v2.0.3

2021년 9월 21일에 Envoy용 Apigee 어댑터 버전 2.0.3이 출시되었습니다.

해결된 문제

  • 직접 응답의 애널리틱스 로깅 문제가 해결되었습니다. 이 문제는 특정 상황에서만 발생했습니다. 예를 들면 다음과 같습니다.
    • authn/z 확인이 필요하지 않은 요청의 경우 authContext가 생성되지 않았고 동적 메타데이터가 nil이므로 액세스 로그 항목이 무시됩니다.
    • 거부된 응답에서 HTTP 코드 대신 RPC 코드를 사용하므로 레코드가 Apigee UI에 성공으로 표시됩니다.

v2.0.2

2021년 6월 7일에 Envoy용 Apigee 어댑터 버전 2.0.2가 출시되었습니다.

해결된 문제

  • JWT 클레임 범위가 nil일 때 403 오류 및 패닉을 발생시킬 수 있는 경합 상태가 수정되었습니다.

v2.0.0

2021년 4월 6일 화요일 Envoy용 Apigee 어댑터 버전 2.0.0이 출시되었습니다.

기능 및 개선사항

기능 설명
멀티 테넌트 환경 지원

이제 어댑터를 사용 설정하여 Apigee 조직에 여러 환경을 제공할 수 있습니다. 이 기능을 사용하면 Apigee 조직 하나와 연결된 Envoy용 Apigee 어댑터 하나를 사용하여 여러 환경을 제공할 수 있습니다. 이 변경사항 이전에는 어댑터 하나가 항상 Apigee 환경 하나에 연결되었습니다. 이 기능에 대한 자세한 내용은 멀티 테넌트 환경 지원을 참조하세요.

Envoy v3 API 지원
Envoy 메타데이터 지원

Envoy 1.16 이상에서는 헤더를 사용하지 않고도 ext_authz 메타데이터를 보낼 수 있습니다. 이 변경사항 및 관련 변경사항을 사용하여 거부된 요청에 더 나은 HTTP 응답 코드를 제공하며 더 이상 Envoy에 RBAC 필터를 설치할 필요가 없습니다. 자세한 내용은

이 기능은 Envoy 1.16 이상 및 Istio 1.9 이상에만 지원됩니다.

이 변경사항으로 인해 다음 구성이 더 이상 Envoy 구성 파일(envoy-config.yaml)에 추가되지 않습니다.

additional_request_headers_to_log:
    - x-apigee-accesstoken
    - x-apigee-api
    - x-apigee-apiproducts
    - x-apigee-application
    - x-apigee-clientid
    - x-apigee-developeremail
    - x-apigee-environment

특별한 사례의 요청에 헤더를 추가하려면 어댑터의 config.yaml 파일에서 append_metadata_headers:true 속성을 설정합니다.

remote-service 프록시에서 remote-token 프록시 분할

remote-service 프록시가 개별 프록시 두 개로 리팩터링되었습니다. v2.0.x 프로비저닝은 remote-serviceremote-token 등 API 프록시 두 개를 설치합니다. /token/certs 엔드포인트가 remote-service 프록시에서 remote-token으로 이동했습니다.

이 변경사항으로 인해 유용한 함수 구분이 생성됩니다. 이제 remote-service 프록시는 내부 어댑터 통신에만 사용되며 remote-token 프록시는 맞춤설정할 수 있는 샘플 OAuth 워크플로를 제공합니다. provision --force-proxy-install 명령어를 사용하더라도 커스텀 remote-token 프록시를 덮어쓰지 않습니다.

데이터 캡처 지원

Apigee X 및 Apigee Hybrid에서만 사용할 수 있습니다.

이제 어댑터에서 Envoy 메타데이터를 Apigee의 데이터 캡처 기능으로 전달할 수 있습니다. 이 기능은 커스텀 보고서에 사용할 수 있도록 Apigee 분석으로 지정한 변수에 캡처된 데이터를 전송합니다.

RBAC 필요 없음

앞의 Envoy 메타데이터 지원의 설명대로 이제 별도의 RBAC 필터를 사용하지 않고도 승인되지 않은 요청을 즉시 거부합니다. RBAC가 사용되지 않으므로 클라이언트는 이제 어댑터에서 이러한 HTTP 상태 코드를 적절하게 수신합니다.

  • 401 승인되지 않음
  • 403 금지됨
  • 429 너무 많은 요청
  • 500 내부 서버 오류

승인되지 않은 요청을 계속 진행하려면 어댑터의 config.yaml 파일에서 auth:allow_unauthorized:true를 설정하면 됩니다.

기본적으로 x-apigee-* 헤더가 더 이상 추가되지 않음

앞의 Envoy 메타데이터 지원 섹션 설명대로 기본적으로 x-apigee-* 헤더가 더 이상 추가되지 않습니다. 추가하려면 config.yaml 파일에서 append_metadata_headers:true를 설정합니다. 이 구성은 완전히 선택사항이며 헤더를 업스트림 대상 서비스로 전달하려는 경우에만 사용해야 합니다.

요청을 원격 서비스 대상과 커스텀 일치

api_header 구성 속성의 시맨틱은 이전 target_header 속성과 동일하게 유지되며 (기본값은 여전히 대상 호스트 이름임), 지정된 헤더의 콘텐츠는 API 제품 작업의 API 제품 원격 서비스 타겟 속성 또는 apiSource 필드와 계속 일치합니다 (Apigee Hybrid 및 Apigee X만 해당).

Envoy 메타데이터를 사용하여 이 헤더 값을 재정의하려면 apigee_api 메타데이터 요소를 Envoy에서 어댑터로 전달하여 API 제품의 원격 서비스 타겟 또는 API 제품 작업의 API 소스를 직접 지정하면 됩니다. 구성하려면 다음과 비슷한 코드를 Envoy 구성 파일에 추가합니다(어댑터의 CLI를 사용하여 생성 가능).

typed_per_filter_config:
  envoy.filters.http.ext_authz:
    "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
    check_settings:
      context_extensions:
        apigee_api: httpbin.org
거부된 요청의 애널리틱스가 즉시 로깅됨

이제 Envoy 어댑터는 요청이 액세스 로그에 반환될 때까지 기다리는 대신 필요에 따라 거부된 요청을 애널리틱스에 즉시 로깅합니다. 이 방법이 보다 효율적이며 요청에 메타데이터를 연결할 필요가 없습니다.

UDCA 지원이 삭제됨

Apigee Hybrid와 Apigee X에서 Apigee 범용 데이터 수집 에이전트(UDCA)로 스트리밍이 직접 업로드로 대체되었으므로 더 이상 분석할 필요가 없습니다. 이 변경사항으로 인해 이 옵션의 기존 지원이 간단히 삭제됩니다.

프로비저닝/binding CLI 명령어에서 Private Cloud용 Edge에 mTLS 지원 추가

Private Cloud용 Apigee Edge 사용자는 CLI를 사용하여 제품 binding을 프로비저닝하거나 나열할 경우 각각 ‑‑tls‑cert, ‑‑tls‑key, ‑‑tls‑ca를 통해 클라이언트 측 TLS 인증서와 루트 인증서를 제공할 수 있습니다.

어댑터와 Apigee 런타임 사이에서 mTLS 지원

어댑터의 config.yaml 파일에 있는 tenant 섹션에 클라이언트 측 TLS 인증서를 제공하여 어댑터와 Apigee 런타임 간에 mTLS를 사용할 수 있습니다. 이 변경사항은 지원되는 모든 Apigee 플랫폼에 적용됩니다. 또한 프라이빗 클라우드용 Apigee Edge 플랫폼 분석에 mTLS를 사용 설정합니다. 자세한 내용은 어댑터와 Apigee 런타임 간 mTLS 구성을 참조하세요.

해결된 문제

  • API 소스가 동일한 여러 작업 구성이 동일한 할당량 버킷 식별자를 공유하여 발생하는 할당량 계산 충돌 문제가 수정되었습니다. (문제 #34)
  • 지정된 동사가 없는 작업에서 요청이 거부되는 문제가 해결되었습니다(지정된 동작이 없는 경우에는 모든 동사를 허용하는 것이 예상되는 동작입니다). (문제 #39)

v1.4.0

2020년 12월 16일 수요일, Envoy용 Apigee 어댑터 버전 1.4.0이 출시되었습니다.

지원되는 플랫폼

MacOS, Linux 및 Windows용 바이너리를 게시합니다.

저희는 Google의 distroles, Ubuntu, Boring Crypto와 함께 Ubuntu에서 Docker 이미지를 게시합니다.

이번 버전에서 지원되는 플랫폼은 다음과 같습니다.

  • Apigee Hybrid 버전 1.3.x, 1.4.x(출시일 미정), 퍼블릭 클라우드용 Apigee Edge, 프라이빗 클라우드용 Apigee Edge, Google Cloud의 Apigee
  • Istio 버전 1.5, 1.6, 1.7, 1.8
  • Envoy 버전 1.14, 1.15, 1.16

기능 및 개선사항

기능 설명
remote-service 프록시는 더 이상 원격 서비스 대상을 사용하는 API 제품과의 연결이 필요하지 않습니다.

이 연결은 더 이상 필요하지 않으므로 다음 변경사항을 참고하세요.

  • 프로비저닝 중에 remote-service API 제품은 더 이상 생성되지 않습니다.
  • bindings verify CLI 명령어는 더 이상 관련이 없으므로 지원 중단되었습니다.
Apigee 조직 관리자 역할이 더 이상 프로비저닝되지 않아도 됩니다.

이제 프로비저닝하기 위해 조직 관리자 권한이 필요하지 않고 IAM 역할 API 생성자 및 배포자를 대신 사용할 수 있습니다. 성공적으로 프로비저닝하려면 두 역할을 모두 부여해야 합니다.
(Google Cloud 기반 Apigee 및 Apigee Hybrid에만 적용)

기타 문제 및 수정사항

  • --rotate 옵션 없이 Apigee를 다시 프로비저닝하면 오류가 발생하며 종료되는 문제가 수정되었습니다.
  • 이제 프로비저닝 CLI가 지정된 config.yaml 파일에서 애널리틱스 서비스 계정 사용자 인증 정보를 읽고 재사용합니다(문제 #133).

v1.3.0

11월 23일 월요일에 Envoy용 Apigee 어댑터 버전 1.3.0이 출시되었습니다.

지원되는 플랫폼

MacOS, Linux 및 Windows용 바이너리를 게시합니다.

저희는 Google의 distroles, Ubuntu, Boring Crypto와 함께 Ubuntu에서 Docker 이미지를 게시합니다.

이번 버전에서 지원되는 플랫폼은 다음과 같습니다.

  • Apigee Hybrid 버전 1.3.x, 1.4.x(출시일 미정), 퍼블릭 클라우드용 Apigee Edge, 프라이빗 클라우드용 Apigee Edge, Google Cloud의 Apigee
  • Istio 버전 1.5, 1.6, 1.7, 1.8
  • Envoy 버전 1.14, 1.15, 1.16

기능 및 개선사항

기능 설명
API 제품 OperationGroups 지원. OperationGroups는 HTTP 메서드를 사용하여 프록시 또는 원격 서비스의 리소스 및 관련 할당량 적용을 바인딩합니다.
(Google Cloud 기반 Apigee 및 Apigee Hybrid에만 적용)
샘플 세대에서 동적 전달 프록시 지원을 삭제합니다. 이러한 변경으로 인해 호스트 이름이 API 제품에 설정된 원격 서비스 대상 호스트와 다른 경우 클라이언트는 HOST 헤더를 포함해야 합니다. 예를 들면 다음과 같습니다.
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"

API 제품 만들기를 참조하세요.

서비스 계정 및 워크로드 아이덴티티 지원 Apigee Hybrid 클러스터 외부에서 어댑터를 실행할 때 애널리틱스 데이터를 Apigee에 업로드할 수 있게 하려면 analytics-sa 매개변수를 apigee-remote-service-cli provision 명령어와 함께 사용해야 합니다. 또한 이제 어댑터는 Google Kubernetes Engine(GKE)에서 워크로드 아이덴티티를 지원합니다. 프로비저닝 명령어를 참조하세요.
(Google Cloud 기반 Apigee 및 Apigee Hybrid에만 적용)
jwt_provider_key 구성 속성. 이 키는 구성 파일에 추가됩니다. Envoy 구성의 JWT 제공업체의 payload_in_metadata 키 또는 Istio 구성의 RequestAuthentication JWT 발급기관을 나타냅니다.
KeepAliveMaxConnectionAge 구성 속성의 기본값은 이제 1분. 이전 기본값은 10분입니다. 이 변경으로 원활한 확장이 가능합니다. 이 값은 액세스 로그 스트림 수명에도 사용됩니다. 구성 파일을 참조하세요.
CLI 명령어 삭제됨 다음 CLI 명령어는 지원 중단되었습니다. 대신 Edge API를 사용하여 API 제품의 원격 서비스 대상을 업데이트하는 것이 좋습니다.
  • apigee-remote-service-cli bindings add
  • apigee-remote-service-cli bindings remove
새 CLI 명령어 추가됨 명령어:
apigee-remote-service-cli samples templates

samples create 명령어의 --template 플래그와 함께 사용할 수 있는 옵션을 나열합니다. CLI 참조를 확인하세요.

기존 CLI 명령어가 변경됨. apigee-remote-service-cli samples create 명령어가 변경되었습니다. Envoy 또는 Istio 템플릿 관련 플래그는 엄격하게 검사되며 잘못 사용된 플래그에 오류가 반환됩니다. native 템플릿 옵션은 지원 중단되었습니다. 사용 가능한 템플릿 목록을 가져오려면 apigee-remote-service-cli samples templates 명령어를 사용합니다. CLI 참조도 확인하세요.
이제 /token 엔드포인트 응답이 OAuth2 사양을 따릅니다. access_token 매개변수가 응답에 추가되었으며 token 매개변수는 지원 중단되었습니다.

v1.2.0

9월 30일 수요일, Envoy용 Apigee 어댑터 버전 1.2.0이 출시되었습니다.

지원되는 플랫폼

MacOS, Linux 및 Windows용 바이너리를 게시합니다.

저희는 Google의 distroles, Ubuntu, Boring Crypto와 함께 Ubuntu에서 Docker 이미지를 게시합니다.

이번 버전에서 지원되는 플랫폼은 다음과 같습니다.

  • Apigee Hybrid 버전 1.3.x
  • Istio 버전 1.5, 1.6, 1.7
  • Envoy 버전 1.14, 1.15

기능 및 개선사항

기능 설명
Google Cloud에서 Apigee 지원 이제 Google Cloud 기반 Apigee로 Envoy용 Apigee 어댑터를 사용할 수 있습니다. 자체 클러스터에서 또는 Envoy용 원격 서비스를 기본 바이너리로 실행하거나 컨테이너에서 실행하는 방식으로 어댑터를 실행할 수 있습니다. 프로비저닝 명령어를 사용하여 Apigee에서 어댑터를 프로비저닝합니다.
분석 데이터 직접 업로드 이제 분석 데이터를 Apigee에 직접 업로드하도록 Apigee 어댑터를 구성할 수 있습니다. Apigee Hybrid를 사용하는 경우 이 새 기능을 통해 Apigee Hybrid가 설치된 클러스터 외부의 고유 Kubernetes 클러스터에 어댑터를 배포할 수 있습니다. 직접 업로드를 사용 설정하려면 provision 명령어에 새 --analytics-sa 플래그를 사용합니다. 프로비저닝 명령어를 참조하세요.
상태 확인을 수행하면 Apigee에서 API 제품 데이터가 로드된 다음 '준비'가 반환됩니다. Kubernetes 상태 확인은 API 제품 데이터가 Apigee에서 로드될 때까지 '준비'를 반환하지 않습니다. 이 변경사항은 준비될 때까지 새로 인스턴스화된 어댑터로 트래픽이 전송되지 않으므로 확장 및 업그레이드에 도움이 됩니다.

기타 문제 및 수정사항

  • 잠재적인 할당량 동기화 교착 문제를 해결하기 위해 문제가 수정되었습니다 (문제 #17).
  • Prometheus 주석이 Pod 사양으로 이동되었습니다(문제 #69).
  • 잘못 내보낸 확인 오류를 해결하도록 문제가 수정되었습니다(문제 #62).

v1.1.0

8월 26일 수요일, Envoy용 Apigee 어댑터 버전 1.1.0이 출시되었습니다.

지원되는 플랫폼

MacOS, Linux 및 Windows용 바이너리를 게시합니다.

저희는 Google의 distroles, Ubuntu, Boring Crypto와 함께 Ubuntu에서 Docker 이미지를 게시합니다.

버전 1.1.0에서는 다음 플랫폼을 지원합니다.

  • Apigee Hybrid 버전 1.3
  • Istio 버전 1.5, 1.6, 1.7
  • Envoy 버전 1.14, 1.15

기능 및 개선사항

기능 설명
binding 확인 새 명령어 apigee-remote-service-cli bindings verify가 CLI에 추가되었습니다. 이 명령어는 지정된 결합 API 제품 및 관련 개발자 앱에도 원격 서비스 제품이 연결되어 있는지 확인합니다. binding 확인을 참조하세요.
샘플 생성 새 명령어 apigee-remote-service-cli samples create가 CLI에 추가되었습니다. 이 명령어는 기본 Envoy 또는 Istio 배포를 위한 샘플 구성 파일을 만듭니다. 이 명령어로 생성하는 구성 파일은 이전 버전에서 Envoy용 어댑터로 설치된 샘플 파일 대신 사용됩니다. 샘플 명령어를 참조하세요.
OAuth2 인증 Apigee Edge에 어댑터에 다단계 인증(MFA)이 사용 설정되었으면 이제 OAuth2 인증이 사용됩니다. --legacy 플래그를 사용할 때마다 --mfa 플래그를 사용합니다.
Distroless 컨테이너 이제 어댑터는 기본 Docker 이미지 베이스에 scratch 대신 Google의 distroless(gcr.io/distroless/base) 이미지를 사용합니다.

기타 문제 및 수정사항

  • OPDK의 binding 명령어에 대한 CLI 문제가 수정되었습니다. (#29)
  • 연결이 끊어지면 할당량이 손실될 수 있습니다(apigee/apigee-remote-service-envoy). (#31)
  • 이제 Docker 이미지가 루트가 아닌 사용자로 빌드됩니다(999).
  • Kubernetes 샘플에서 사용자가 루트가 아니어야 합니다.
  • 프록시 엔드포인트에 curl 명령어를 실행할 때 --http1.1이 더 이상 필요하지 않습니다. 플래그가 예시에서 삭제되었습니다.

v1.0.0

7월 31일 금요일, Envoy용 Apigee 어댑터의 일반 안정화 버전이 출시되었습니다.

지원되는 플랫폼

MacOS, Linux 및 Windows용 바이너리를 게시합니다.

Docker 이미지를 처음부터 게시하고, Ubuntu, Ubuntu에서 Boring Crypto를 사용합니다.

버전 1.0.0에서는 다음 플랫폼이 지원됩니다.

  • Apigee Hybrid 버전 1.3
  • Istio 버전 1.5, 1.6
  • Envoy 버전 1.14, 1.15

추가 및 변경사항

v1.0-beta4 버전과 GA 버전 사이에 어댑터가 다음과 같이 변경되었습니다.

  • Go Boring 빌드

    이제 FIPS 호환 Go BoringSSL 라이브러리를 사용하는 새 빌드를 사용할 수 있습니다.

  • 로그 수준 플래그 변경사항

    일관성을 위해 apigee-remote-service-envoy 서비스의 로깅 수준 플래그가 변경되었습니다.

    이전 플래그 새 플래그
    log_level log-level
    json_log json-log
  • 새 CLI 플래그

    CLI token 명령어에 새 플래그가 추가되었습니다.

    플래그 설명
    --legacy Apigee Edge Cloud를 사용하는 경우 이 플래그를 설정합니다.
    --opdk Apigee Edge for Private Cloud를 사용하는 경우 이 플래그를 설정합니다.