다음을 통해 공유


VMware Spring Cloud Gateway 구성

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

이 문서의 적용 대상:❌ 기본/표준 ✔️ Enterprise

이 문서에서는 Azure Spring Apps Enterprise 플랜을 사용하여 VMware Tanzu용 VMware Spring Cloud Gateway를 구성하는 방법을 보여줍니다.

VMware Spring Cloud Gateway는 오픈 소스 Spring Cloud Gateway 프로젝트를 기반으로 하는 상업용 VMware Tanzu 구성 요소입니다. Tanzu용 VMware Spring Cloud Gateway는 SSO(Single Sign-On), 액세스 제어, 속도 제한, 복원력 및 보안과 같은 API 개발 팀의 중요한 공통 관심 사항을 처리합니다. API를 개발하기 위해 선택한 프로그래밍 언어의 최신 클라우드 네이티브 패턴을 사용하면 API 제공을 가속화할 수 있습니다.

VMware Spring Cloud Gateway 인스턴스는 규칙에 따라 트래픽을 라우팅합니다. 스케일 인/스케일 아웃스케일 업/스케일 다운을 지원하여 동적 트래픽 로드를 충족합니다.

VMware Spring Cloud Gateway에는 다음 기능이 포함되어 있습니다.

  • 동적 라우팅 구성 - 개별 애플리케이션과 관계없이 다시 컴파일하지 않고 적용하고 변경할 수 있습니다.
  • 상업용 API 경로 필터 - 권한 있는 JWT(JSON Web Token) 클레임을 애플리케이션 서비스로 전송합니다.
  • 클라이언트 인증서 권한 부여
  • 속도 제한 방법
  • 회로 차단기 구성
  • HTTP 기본 인증 자격 증명을 통한 애플리케이션 서비스 액세스 지원

VMware Tanzu API 포털과 통합하기 위해 VMware Spring Cloud Gateway는 경로 구성을 추가하거나 변경한 후 OpenAPI 버전 3 설명서를 자동으로 생성합니다. 자세한 내용은 VMware Tanzu용 API 포털 사용을 참조하세요.

필수 조건

VMware Spring Cloud Gateway 사용 또는 사용 안 함

Azure Portal 또는 Azure CLI를 사용하여 서비스 인스턴스를 만든 후 VMware Spring Cloud Gateway를 사용하거나 사용하지 않도록 설정할 수 있습니다. VMware Spring Cloud Gateway를 사용하지 않도록 설정하려면 먼저 엔드포인트 할당을 취소하고 모든 경로 구성을 제거해야 합니다.

Azure Portal에서 다음 단계를 사용하여 VMware Spring Cloud Gateway를 사용하거나 사용하지 않도록 설정합니다.

  1. 서비스 리소스로 이동한 다음, Spring Cloud Gateway를 선택합니다.
  2. 관리를 선택합니다.
  3. Spring Cloud Gateway 사용 확인란을 선택하거나 선택 취소한 다음, 저장을 선택합니다.

이제 Spring Cloud Gateway 페이지에서 Spring Cloud Gateway 상태를 볼 수 있습니다.

Spring Cloud Gateway 페이지가 표시된 Azure Portal의 스크린샷.

VMware Spring Cloud Gateway 다시 시작

다시 시작 작업을 완료하면 VMware Spring Cloud Gateway 인스턴스가 롤링 기준으로 다시 시작됩니다.

Azure Portal에서 다음 단계를 사용하여 VMware Spring Cloud Gateway를 다시 시작합니다.

  1. 서비스 리소스로 이동한 다음, Spring Cloud Gateway를 선택합니다.
  2. 다시 시작을 선택합니다.
  3. 확인을 선택하여 다시 시작을 확인합니다.

게이트웨이 재시작 확인 메시지가 떠 있는 Spring Cloud Gateway 페이지가 표시된 Azure Portal의 스크린샷.

VMware Spring Cloud Gateway에 퍼블릭 엔드포인트 할당

이 섹션에서는 퍼블릭 엔드포인트를 VMware Spring Cloud Gateway에 할당하고 해당 속성을 구성하는 방법을 설명합니다.

Azure Portal에서 엔드포인트를 할당하려면 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스를 엽니다.
  2. 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 개요를 선택합니다.
  3. 엔드포인트 할당로 설정합니다.

몇 분 후에 URL은 구성된 엔드포인트 URL을 표시합니다. 나중에 사용할 수 있도록 URL을 저장합니다.

엔드포인트 할당이 토글된 Spring Cloud Gateway 개요 페이지가 표시된 Azure Portal의 스크린샷.

VMware Spring Cloud Gateway 메타데이터 구성

VMware Spring Cloud Gateway 메타데이터는 OpenAPI 버전 3 설명서를 자동으로 생성합니다. VMware Tanzu API 포털에서 경로 그룹을 표시하도록 VMware Spring Cloud Gateway 메타데이터를 구성할 수 있습니다. 자세한 내용은 VMware Tanzu용 API 포털 사용을 참조하세요.

다음 표에는 사용 가능한 메타데이터 옵션이 설명되어 있습니다.

속성 설명
title VMware Spring Cloud Gateway 인스턴스에서 사용할 수 있는 API의 컨텍스트를 설명하는 제목입니다. 기본값은 Spring Cloud Gateway for K8S입니다.
description VMware Spring Cloud Gateway 인스턴스에서 사용할 수 있는 API에 대한 자세한 설명입니다. 기본값은 Generated OpenAPI 3 document that describes the API routes configured for '[Gateway instance name]' Spring Cloud Gateway instance deployed under '[namespace]' namespace.*.입니다.
documentation VMware Spring Cloud Gateway 인스턴스에서 사용할 수 있는 API 설명서의 위치입니다.
version 이 VMware Spring Cloud Gateway 인스턴스에서 사용할 수 있는 API 버전입니다. 기본값은 unspecified입니다.
serverUrl VMware Spring Cloud Gateway 인스턴스의 API에 액세스하기 위한 기본 URL입니다. API 포털과 통합하려는 경우 이 속성은 필수입니다.

메타데이터 속성은 Azure Portal 또는 Azure CLI를 사용하여 편집할 수 있습니다.

Azure Portal에서 메타데이터를 편집하려면 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스를 엽니다.
  2. 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  3. API에 나열된 속성의 값을 지정합니다.
  4. 저장을 선택합니다.

API 섹션이 강조 표시된 Spring Cloud Gateway 구성 탭이 보이는 Azure Portal의 스크린샷.

Single Sign-On 구성

VMware Spring Cloud Gateway는 OpenID ID 공급자를 사용하여 SSO(Single Sign-On)를 통한 인증 및 권한 부여를 지원합니다. 공급자는 OpenID Connect 검색 프로토콜을 지원합니다. 다음 표에서는 SSO 속성을 설명합니다.

속성 필수 여부 설명
issuerUri 발급자 식별자로 어설션되는 URI입니다. 예를 들어 issuerUrihttps://example.com인 경우 OpenID 공급자 구성 요청은 https://example.com/.well-known/openid-configuration에 대해 수행됩니다. 결과는 OpenID 공급자 구성 응답이 될 것으로 예상됩니다.
clientId ID 공급자의 OpenID Connect 클라이언트 ID입니다.
clientSecret ID 공급자의 OpenID Connect 클라이언트 암호입니다.
scope JWT ID 토큰에 포함할 범위 목록입니다. 이 목록은 ID 공급자가 허용하는 범위를 기반으로 해야 합니다.

Microsoft Entra ID를 사용하여 SSO를 설정하려면 Microsoft Entra ID를 Spring Cloud Gateway 및 API 포털에 사용하여 Single Sign-On 설정을 참조하세요.

SSO 속성은 Azure Portal 또는 Azure CLI를 사용하여 편집할 수 있습니다.

Azure Portal에서 SSO 속성을 편집하려면 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스를 엽니다.
  2. 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  3. SSO에 나열된 속성의 값을 지정합니다.
  4. 저장을 선택합니다.

SSO 섹션이 강조 표시된 Spring Cloud Gateway 구성 탭이 보이는 Azure Portal의 스크린샷.

VMware Spring Cloud Gateway는 OpenID Connect 검색 프로토콜을 지원하는 권한 부여 서버만 지원합니다. 또한 게이트웨이로 다시 리디렉션할 수 있도록 외부 권한 부여 서버를 구성해야 합니다. 권한 부여 서버의 설명서를 참조하고 허용되는 리디렉션 URI 목록에 https://<gateway-external-url>/login/oauth2/code/sso를 추가합니다.

잘못된 암호와 같은 잘못된 SSO 속성을 구성하는 경우 전체 SSO 속성을 제거한 다음, 올바른 구성을 추가해야 합니다.

SSO가 구성되면 VMware Spring Cloud Gateway 경로에 대해 ssoEnabled: true를 설정해야 합니다.

SSO 로그아웃 구성

VMware Spring Cloud Gateway 서비스 인스턴스는 현재 SSO 세션에서 로그아웃하는 기본 API 엔드포인트를 제공합니다. 이 엔드포인트의 경로는 /scg-logout입니다. 로그아웃은 로그아웃 엔드포인트를 호출하는 방법에 따라 다음 결과 중 하나를 생성합니다.

  • 세션에서 로그아웃하고 IdP(ID 공급자) 로그아웃으로 리디렉션합니다.
  • 서비스 인스턴스 세션에서 로그아웃합니다.

IdP 및 SSO 세션에서 로그아웃

GET 요청을 /scg-logout 엔드포인트에 보내면 엔드포인트에서 302 리디렉션 응답을 IdP 로그아웃 URL에 보냅니다. 엔드포인트에서 사용자를 게이트웨이 서비스 인스턴스의 경로로 반환하도록 하려면 /scg-logout 엔드포인트를 사용하여 리디렉션 매개 변수를 GET 요청에 추가합니다. 예를 들어 ${server-url}/scg-logout?redirect=/home를 사용할 수 있습니다.

리디렉션 매개 변수의 값은 VMware Spring Cloud Gateway 서비스 인스턴스의 유효한 경로여야 합니다. 외부 URL로 리디렉션할 수 없습니다.

다음 단계에서는 마이크로 서비스에서 함수를 구현하는 방법의 예를 설명합니다.

  1. 로그아웃 요청을 애플리케이션으로 라우팅하는 경로 구성을 가져옵니다. 예제는 GitHub의 animal-rescue 리포지토리에 있는 경로 구성을 참조하세요.

  2. 애플리케이션에 필요한 로그아웃 논리를 추가합니다. 끝 부분에는 animal-rescue 리포지토리의 getActionButton 메서드에 대한 return 값에서 표시한 대로 게이트웨이의 /scg-logout 엔드포인트에 대한 GET 요청이 필요합니다.

SSO 세션에서만 로그아웃

XMLHttpRequest를 사용하여 GET 요청을 /scg-logout 엔드포인트에 보내면 302 리디렉션이 무시되어 응답 처리기에서 처리되지 않을 수 있습니다. 이 경우 사용자는 VMware Spring Cloud Gateway 서비스 인스턴스의 SSO 세션에서만 로그아웃됩니다. 사용자에게는 여전히 유효한 IdP 세션이 있습니다. 일반적으로 사용자가 로그인을 다시 시도하는 경우 이러한 로그인 시도는 IdP에서 인증된 대로 자동으로 게이트웨이로 다시 보내집니다.

다음 예제와 같이 로그아웃 요청을 애플리케이션으로 라우팅하려면 경로가 구성되어야 합니다. 이 코드는 게이트웨이 전용 로그아웃 SSO 세션을 만듭니다.

const req = new XMLHttpRequest();
req.open("GET", "/scg-logout);
req.send();

원본 간 리소스 공유 구성

CORS(원본 간 리소스 공유)를 사용하면 첫 번째 리소스가 제공되는 도메인 외부의 다른 도메인에서 웹 페이지의 제한된 리소스를 요청할 수 있습니다. 다음 표에서는 사용 가능한 CORS 구성 옵션을 설명합니다.

속성 설명
allowedOrigins 사이트 간 요청을 할 수 있는 원본
allowedOriginPatterns 사이트 간 요청을 수행하도록 허용되는 원본 패턴
allowedMethods 사이트 간 요청에서 허용되는 HTTP 메서드
allowedHeaders 사이트 간 요청에 허용되는 헤더
maxAge 클라이언트에서 실행 전 요청의 응답을 캐시하는 시간(초)
allowCredentials 사이트 간 요청에서 사용자 자격 증명이 지원되는지 여부
exposedHeaders 사이트 간 요청에 노출할 HTTP 응답 헤더

API 포털과 통합하려면 올바른 CORS 구성이 있는지 확인해야 합니다. 자세한 내용은 VMware Spring Cloud Gateway에 퍼블릭 엔드포인트 할당 섹션을 참조하세요.

서비스 크기 조정 사용

vCPU, 메모리, 인스턴스 수를 포함하여 VMware Spring Cloud Gateway 인스턴스에 대한 리소스 할당을 사용자 지정할 수 있습니다.

고가용성을 위해 단일 복제본을 사용하지 않는 것이 좋습니다.

다음 표에서는 기본 리소스 사용량에 대해 설명합니다.

구성 요소 이름 인스턴트 수 인스턴스당 vCPU 인스턴스당 메모리
VMware Spring Cloud Gateway 2 1 코어 2GiB
VMware Spring Cloud Gateway 연산자 2 1 코어 2GiB

게이트웨이와 애플리케이션 간 TLS 구성

보안을 강화하고 권한이 없는 당사자가 중요한 정보를 가로채지 못하도록 보호하기 위해 TLS(전송 계층 보안)를 VMware Spring Cloud Gateway와 애플리케이션 간에 사용하도록 설정할 수 있습니다.

TLS를 구성하려면 먼저 TLS 사용 애플리케이션과 TLS 인증서가 있어야 합니다. TLS 인증서를 준비하려면 신뢰할 수 있는 CA(인증 기관)에서 인증서를 생성합니다. 인증서는 서버의 ID를 확인하고 보안 연결을 설정합니다.

Azure Spring Apps에서 TLS 사용 애플리케이션이 실행되면 인증서를 Azure Spring Apps에 업로드합니다. 자세한 내용은 Azure Spring Apps의 애플리케이션에서 TLS/SSL 인증서 사용인증서 가져오기 섹션을 참조하세요.

Azure Spring Apps로 업데이트된 인증서를 사용하면 게이트웨이에 대한 TLS 인증서를 구성하고 인증서 확인을 사용하도록 설정할 수 있습니다. 인증서는 Azure Portal 또는 Azure CLI를 사용하여 구성할 수 있습니다.

다음 단계를 사용하여 Azure Portal에서 인증서를 구성합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 인증서 관리를 선택합니다.
  3. 인증서 확인 사용을 선택합니다.
  4. 인증서에서 TLS 인증서를 선택합니다.
  5. 저장을 선택합니다.

구성을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다. 구성이 완료되면 알림을 받게 됩니다.

경로 구성 준비

경로 구성에서 프로토콜을 HTTPS로 지정해야 합니다. 다음 JSON 개체는 HTTPS 프로토콜을 게이트웨이와 앱 간의 모든 트래픽에 사용하도록 VMware Spring Cloud Gateway에 지시합니다.

  1. 다음 콘텐츠를 사용하여 test-tls-route.json이라는 파일을 만듭니다.

    {
        "routes": [
          {
            "title": "Test TLS app",
            "predicates": [
              "Path=/path/to/your/app",
              "Method=GET"
            ]
          }
         ],
        "uri": "https://<app-custom-domain-name>"
    }
    
  2. 다음 명령을 사용하여 규칙을 애플리케이션에 적용합니다.

    az spring gateway route-config create \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name test-tls-app \
        --routes-file test-tls-route.json
    

이제 게이트웨이 엔드포인트를 사용하여 애플리케이션에서 TLS를 사용하도록 설정되어 있는지 테스트할 수 있습니다. 자세한 내용은 Spring Cloud Gateway 사용경로 구성 섹션을 참조하세요.

인증서 회전

인증서가 만료되면 다음 단계를 사용하여 VMware Spring Cloud Gateway에서 인증서를 회전해야 합니다.

  1. 신뢰할 수 있는 CA에서 새 인증서를 생성합니다.
  2. 인증서를 Azure Spring Apps로 가져옵니다. 자세한 내용은 Azure Spring Apps의 애플리케이션에서 TLS/SSL 인증서 사용인증서 가져오기 섹션을 참조하세요.
  3. Azure Portal 또는 Azure CLI를 사용하여 인증서를 동기화합니다.

게이트웨이에서 새 인증서를 모든 연결에 사용하는지 확인하기 위해 VMware Spring Cloud Gateway가 다시 시작됩니다.

다음 단계를 사용하여 인증서를 동기화합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 다시 시작을 선택한 다음, 작업을 확인합니다.

자동 스케일링 설정

VMware Spring Cloud Gateway에 대한 자동 크기 조정 모드를 설정할 수 있습니다.

다음 목록에서는 자동 크기 조정 요구 사항을 관리하는 데 사용할 수 있는 옵션을 보여줍니다.

  • 수동 크기 조정 옵션은 고정된 인스턴스 수를 유지 관리합니다. 최대 10개의 인스턴스까지 스케일 아웃할 수 있습니다. 이 값은 Spring Cloud Gateway의 개별 실행 인스턴스 수를 변경합니다.
  • 사용자 지정 자동 크기 조정 옵션은 메트릭을 기준으로 일정에 따라 크기 조정됩니다.

Azure Portal에서 크기를 조정하는 방법을 선택합니다. 다음 스크린샷에서는 사용자 지정 자동 크기 조정 옵션 및 모드 설정을 보여줍니다.

사용자 지정 자동 크기 조정 옵션이 강조 표시된 자동 크기 조정 설정 페이지가 보이는 Azure Portal 스크린샷.

사용 가능한 메트릭에 대한 자세한 내용은 Azure Spring Apps 메트릭사용자 메트릭 옵션 섹션을 참조하세요.

응답 캐시 구성

응답 캐시 구성은 전역적으로 또는 경로 수준에서 적용할 수 있는 HTTP 응답 캐시를 정의하는 방법을 제공합니다.

전역적으로 응답 캐시 사용

응답 캐시를 전역적으로 사용하도록 설정하면 응답 캐시가 자동으로 해당하는 모든 경로에 사용하도록 설정됩니다.

다음 단계를 사용하여 응답 캐시를 전역적으로 사용하도록 설정합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 구성을 선택합니다.
  3. 응답 캐시 섹션에서 응답 캐시 사용을 선택한 다음, 범위인스턴스로 설정합니다.
  4. 응답 캐시에 대한 크기TTL(Time to live)을 설정합니다.
  5. 저장을 선택합니다.

다음 단계를 사용하여 응답 캐시를 사용하지 않도록 설정합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 구성을 선택합니다.
  3. 응답 캐시 섹션에서 응답 캐시 사용의 선택을 취소합니다.
  4. 저장을 선택합니다.

경로 수준에서 응답 캐시 사용

응답 캐시를 경로에 사용하도록 설정하려면 LocalResponseCache 필터를 사용합니다. 다음 예제에서는 회람 규칙 구성에서 LocalResponseCache 필터를 사용하는 방법을 보여줍니다.

{
   "filters": [
      "<other-app-level-filter-of-route>",
   ],
   "routes": [
      {
        "predicates": [
            "Path=/api/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache=3m, 1MB"
         ],
      }
   ]
}

자세한 내용은 Azure Spring Apps Enterprise 플랜에서 VMware Spring Cloud Gateway 경로 필터를 사용하는 방법LocalResponseCache 섹션 및 VMware 설명서의 LocalResponseCache를 참조하세요.

LocalResponseCache 필터에 대해 개별적으로 sizetimeToLive를 구성하는 대신, Spring Cloud Gateway 수준에서 이러한 매개 변수를 설정할 수 있습니다. 이 옵션을 사용하면 이러한 값을 처음에 지정하지 않고 LocalResponseCache 필터를 사용할 수 있으며, 나중에 해당 값을 재정의할 수 있는 유연성을 유지할 수 있습니다.

다음 단계를 사용하여 경로 수준에서 응답 캐시를 사용하도록 설정하고, sizetimeToLive를 설정합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 구성을 선택합니다.
  3. 응답 캐시 섹션에서 응답 캐시 사용을 선택한 다음, 범위경로로 설정합니다.
  4. 응답 캐시에 대한 크기TTL(Time to live)을 설정합니다.
  5. 저장을 선택합니다.

다음 단계를 사용하여 경로 수준에서 응답 캐시를 사용하지 않도록 설정하여 sizetimeToLive를 지웁니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택합니다.
  2. Spring Cloud Gateway 페이지에서 구성을 선택합니다.
  3. 응답 캐시 섹션에서 응답 캐시 사용의 선택을 취소합니다.
  4. 저장을 선택합니다.

다음 예제에서는 sizetimeToLive가 Spring Cloud Gateway 수준에서 설정되는 경우 LocalResponseCache 필터를 사용하는 방법을 보여줍니다.

{
   "filters": [
      "<other-app-level-filter-of-route>",
   ],
   "routes": [
      {
        "predicates": [
            "Path=/api/path1/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache"
         ],
      },
      {
        "predicates": [
            "Path=/api/path2/**",
            "Method=GET"
         ],
         "filters": [
            "<other-filter-of-route>",
            "LocalResponseCache=3m, 1MB"
         ],
      }
   ]
}

환경 변수 구성

Azure Spring Apps 서비스는 VMware Spring Cloud Gateway를 관리하고 튜닝합니다. APM(애플리케이션 성능 모니터링) 및 로그 수준을 구성하는 사용 사례를 제외하고는 일반적으로 환경 변수를 사용하여 VMware Spring Cloud Gateway를 구성할 필요가 없습니다.

이 문서에서 설명하는 다른 구성으로 충족할 수 없는 요구 사항이 있는 경우 일반 애플리케이션 속성 목록에 나와 있는 환경 변수를 구성해 볼 수 있습니다. 프로덕션 환경에 적용하려면 먼저 테스트 환경에서 구성을 확인해야 합니다.

Azure Portal에서 환경 변수를 구성하려면 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  2. 속성비밀 섹션에서 환경 변수에 대한 키/값 쌍을 입력합니다. 중요한 정보가 포함된 변수를 비밀 섹션에 포함할 수 있습니다.
  3. 저장을 선택하여 변경 내용을 저장합니다.

환경 변수를 업데이트하면 VMware Spring Cloud Gateway가 다시 시작됩니다.

애플리케이션 성능 모니터링 구성

VMware Spring Cloud Gateway를 모니터링하기 위해 APM을 구성할 수 있습니다. 다음 표에는 VMware Spring Cloud Gateway에서 제공하는 5가지 유형의 APM Java 에이전트와 해당 필수 환경 변수가 나와 있습니다.

Java 에이전트 필수 환경 변수
Application Insights APPLICATIONINSIGHTS_CONNECTION_STRING
Dynatrace DT_TENANT
DT_TENANTTOKEN
DT_CONNECTION_POINT
New Relic NEW_RELIC_LICENSE_KEY
NEW_RELIC_APP_NAME
AppDynamics APPDYNAMICS_AGENT_APPLICATION_NAME
APPDYNAMICS_AGENT_TIER_NAME
APPDYNAMICS_AGENT_NODE_NAME
APPDYNAMICS_AGENT_ACCOUNT_NAME
APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY
APPDYNAMICS_CONTROLLER_HOST_NAME
APPDYNAMICS_CONTROLLER_SSL_ENABLED
APPDYNAMICS_CONTROLLER_PORT
탄력적 APM ELASTIC_APM_SERVICE_NAME
ELASTIC_APM_APPLICATION_PACKAGES
ELASTIC_APM_SERVER_URL

지원되는 다른 환경 변수는 다음 소스를 참조하세요.

VMware Spring Cloud Gateway에서 APM 모니터링을 사용하도록 설정하려면 서비스 인스턴스 수준에서 APM 구성을 만들고 이 구성을 Spring Cloud Gateway에 바인딩할 수 있습니다. 이 방식으로 APM을 한 번만 편리하게 구성하고 동일한 APM을 Spring Cloud Gateway와 앱에 바인딩할 수 있습니다.

Azure Portal에서 다음 단계를 사용하여 APM을 설정합니다.

  1. APM 이름, 형식 및 속성을 사용하여 서비스 인스턴스 수준에서 APM을 구성합니다. 자세한 내용은 APM 통합 및 CA 인증서를 구성하는 방법서비스 인스턴스 수준에서 APM 관리(권장) 섹션을 참조하세요.

    Azure Spring Apps APM 편집기 페이지가 표시된 Azure Portal 스크린샷.

  2. 탐색 창에서 Spring Cloud Gateway를 선택한 다음, APM을 선택합니다.

  3. APM 참조 이름 목록에서 APM 이름을 선택합니다. 목록에는 1단계에서 구성한 모든 APM 이름이 포함되어 있습니다.

  4. 저장을 선택하여 APM 참조 이름을 Spring Cloud Gateway에 바인딩합니다. 게이트웨이가 다시 시작되어 APM 모니터링이 사용하도록 설정됩니다.

VMware Spring Cloud Gateway에서 APM 관리(사용되지 않음)

Azure Portal 또는 Azure CLI를 사용하여 VMware Spring Cloud Gateway에서 APM을 설정할 수 있습니다. 사용할 APM Java 에이전트 유형과 이러한 유형에서 지원하는 해당 APM 환경 변수를 지정할 수도 있습니다.

Azure Portal에서 다음 단계를 사용하여 APM을 설정합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  2. APM 목록에서 APM 유형을 선택하여 게이트웨이를 모니터링합니다.
  3. 속성비밀 섹션에서 APM 환경 변수에 대한 키/값 쌍을 입력합니다. 중요한 정보가 있는 변수를 비밀에 넣을 수 있습니다.
  4. 저장을 선택하여 변경 내용을 저장합니다.

구성을 업데이트하는 데 몇 분 정도 걸릴 수 있습니다. 구성이 완료되면 알림을 받게 됩니다.

참고 항목

Azure Spring Apps는 APM 에이전트를 업그레이드하고 앱을 동일한 주기로 배포하여 VMware Spring Cloud Gateway와 Azure Spring Apps 간의 에이전트 호환성을 유지합니다.

기본적으로 Azure Spring Apps는 APM Java 에이전트의 로그를 STDOUT에 출력합니다. 이러한 로그는 VMware Spring Cloud Gateway 로그에 포함됩니다. 로그에 사용되는 APM 에이전트의 버전을 확인할 수 있습니다. Log Analytics에서 이러한 로그를 쿼리하여 문제를 해결할 수 있습니다.

APM 에이전트가 제대로 작동하도록 하려면 VMware Spring Cloud Gateway의 CPU와 메모리를 늘리세요.

로그 수준 구성

자세한 정보를 얻거나 로그를 줄이기 위해 다음과 같은 방법으로 VMware Spring Cloud Gateway의 로그 수준을 구성할 수 있습니다.

  • 로그 수준을 TRACE, DEBUG, INFO, WARN, ERROR 또는 OFF로 설정할 수 있습니다. VMware Spring Cloud Gateway에 대한 기본 로그 수준은 INFO입니다.
  • 로그 수준을 OFF로 설정하여 로그를 해제할 수 있습니다.
  • 로그 수준이 WARN, ERROR 또는 OFF로 설정되면 Azure Spring Apps 팀에 지원을 요청할 때 INFO로 조정해야 할 수도 있습니다. 이 변경으로 인해 VMware Spring Cloud Gateway가 다시 시작됩니다.
  • 로그 수준이 TRACE 또는 DEBUG로 설정되면 VMware Spring Cloud Gateway의 성능에 영향을 줄 수 있습니다. 프로덕션 환경에서는 이러한 설정을 사용하지 마세요.
  • root 로거 또는 io.pivotal.spring.cloud.gateway와 같은 특정 로거에 대한 로그 수준을 설정할 수 있습니다.

다음 로거에는 TRACEDEBUG 수준의 중요한 문제 해결 정보가 포함될 수 있습니다.

로거 설명
io.pivotal.spring.cloud.gateway 사용자 지정 확장이 포함된 필터 및 조건자
org.springframework.cloud.gateway API 게이트웨이
org.springframework.http.server.reactive HTTP 서버 상호 작용
org.springframework.web.reactive API 게이트웨이 반응형 흐름
org.springframework.boot.autoconfigure.web API 게이트웨이 자동 구성
org.springframework.security.web 인증 및 권한 부여 정보
reactor.netty Reactor Netty

환경 변수 키를 가져오려면 logging.level. 접두사를 추가한 다음, logging.level.{loggerName}={logLevel} 환경을 구성하여 로그 수준을 설정합니다. 다음 예제에서는 Azure Portal 및 Azure CLI 단계를 보여줍니다.

Azure Portal에서 로그 수준을 구성하려면 다음 단계를 사용합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  2. 속성비밀 섹션에서 로그 수준 환경 변수에 대한 키/값 쌍을 입력합니다. 로그 수준이 중요한 정보인 경우 비밀 섹션을 사용하여 해당 정보를 포함할 수 있습니다.
  3. 저장을 선택하여 변경 내용을 저장합니다.

로그 수준을 구성하는 Spring Cloud Gateway 환경 변수가 표시된 Azure Portal 스크린샷.

추가 기능 구성 업데이트

추가 기능 구성 기능을 사용하면 JSON 형식 문자열을 사용하여 특정 VMware Spring Cloud Gateway 속성을 사용자 지정할 수 있습니다. 이 기능은 REST API를 통해 공개되지 않는 속성을 구성해야 하는 경우에 유용합니다.

추가 기능 구성은 원하는 구성을 나타내는 키/값 쌍이 포함된 JSON 개체입니다. 다음 예제에서는 JSON 형식의 구조를 보여줍니다.

{
    "<addon-key-name>": {
        "<addon-key-name>": "<addon-value>"
        ...
    },
    "<addon-key-name>": "<addon-value>",
    ...
}

다음 목록에서는 추가 기능 키 이름 및 값 형식에 지원되는 추가 기능 구성을 보여줍니다. 이 목록은 VMware Spring Cloud Gateway 버전을 업그레이드할 때 변경될 수 있습니다.

  • SSO 구성:

    • 키 이름: sso

    • 값 형식: Object

    • 속성:

      • RolesAttributeName(문자열): SSO 세션과 연결된 역할을 포함하는 특성의 이름을 지정합니다.
      • InactiveSessionExpirationInMinutes(정수): 비활성 SSO 세션의 만료 시간(분)을 지정합니다. 0 값은 세션이 만료되지 않음을 의미합니다.
    • 예시:

      {
          "sso": {
              "rolesAttributeName": "roles",
              "inactiveSessionExpirationInMinutes": 1
          }
      }
      
  • 메타데이터 구성:

    • 키 이름: api

    • 값 형식: Object

    • 속성

      • groupId(문자열): VMware Spring Cloud Gateway 인스턴스에서 사용할 수 있는 API 그룹에 대한 고유 식별자입니다. 값에는 소문자와 숫자만 포함될 수 있습니다.
    • 예시:

      {
          "api": {
              "groupId": "id1"
          }
      }
      
  • Pod 구성

    • 키 이름: PodOverrides, 이는 기본 Pod 구성에 대한 재정의를 지정하는 데 사용됩니다.

    • 값 형식: Object

    • 속성

      • Containers: 이 배열에는 Pod 내의 개별 컨테이너에 대한 구성이 포함되어 있습니다. 현재는 gateway라는 컨테이너만 지원됩니다.
        • Name: 컨테이너의 이름을 지정합니다. 컨테이너 이름은 gateway여야 합니다.
        • Lifecycle: PreStop은 컨테이너가 종료되려고 할 때 실행되는 수명 주기 후크입니다. 이 후크를 사용하면 컨테이너가 중지되기 전에 필요한 정리를 수행할 수 있습니다.
      • TerminationGracePeriodSeconds: Pod를 강제로 종료하기 전에 Kubernetes가 Pod가 정상적으로 종료될 때까지 기다리는 시간을 지정합니다.
    • 예시:

      {
          "PodOverrides": {
              "Containers": [
                  {
                      "Name": "gateway",
                      "Lifecycle": {
                          "PreStop": {
                              "Exec": {
                                  "Command": [
                                      "/bin/sh",
                                      "-c",
                                      "sleep 20"
                                  ]
                              }
                          }
                      }
                  }
              ],
              "TerminationGracePeriodSeconds": 120
          }
      }
      

      이 컨테이너가 포함된 Pod가 종료되면 PreStop 후크는 /bin/sh -c 'sleep 20' 명령을 실행하여 컨테이너를 20초 동안 절전 모드로 전환합니다. 이 일시 중지는 컨테이너가 실제로 중지되기 전에 진행 중인 작업이나 정리를 완료할 시간을 제공합니다.

      TerminationGracePeriodSeconds 설정은 PreStop과 같은 수명 주기 후크에 걸리는 시간을 포함하여 Pod가 정상적으로 종료되는 데 총 120초를 제공합니다.

다음 단계를 사용하여 추가 기능 구성을 업데이트합니다.

  1. Azure Spring Apps 인스턴스의 탐색 창에서 Spring Cloud Gateway를 선택한 다음, 구성을 선택합니다.
  2. 추가 기능 구성에 대해 JSON 값을 지정합니다.
  3. 저장을 선택합니다.

다음 단계