Apigee Edge로 Envoy용 Apigee 어댑터 사용

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

이 예시에서는 Apigee Edge와 함께 Envoy용 Apigee 어댑터를 사용하는 방법을 보여줍니다.

기본 요건

시작하기 전에

개요

이 예시에서는 퍼블릭 클라우드용 Apigee Edge와 함께 Envoy용 Apigee 어댑터를 사용하는 방법을 설명합니다. API 프록시 호출은 Edge가 Envoy용 Apigee 원격 서비스를 통해 API 관리 서비스를 제공하는 기본 애플리케이션으로 실행되는 Envoy를 통해 전달됩니다.

Apigee Edge 프로비저닝

이 단계에서는 원격 서비스 CLI를 사용하여 Envoy 애셋용 Apigee 어댑터를 Apigee Edge에 프로비저닝합니다. 프로비저닝 명령어는 API 프록시를 Apigee Edge에 배포하고 Apigee에 인증서를 설정하며 원격 서비스가 시스템에서 Apigee로 안전하게 연결하는 데 사용할 사용자 인증 정보를 생성합니다.

  1. $CLI_HOME 디렉터리로 이동합니다.
    cd $CLI_HOME
  2. 다음의 환경 변수를 만듭니다. 다음 변수는 프로비저닝 스크립트의 매개변수로 사용됩니다.
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    각 항목의 의미는 다음과 같습니다.

    변수 설명
    organization_name Apigee 조직의 이름입니다.
    environment_name 조직의 환경 이름입니다.
    your_apigee_username Apigee 계정 사용자 이름입니다. 일반적으로 사용자 이름은 이메일 주소입니다.
    your_apigee_password Apigee 비밀번호입니다.
  3. 다음 명령어를 실행하여 Apigee Edge에서 원격 서비스 프록시를 프로비저닝합니다.

    업그레이드하지 않는 경우 다음 명령어를 사용하여 Apigee를 프로비저닝합니다.

    $CLI_HOME/apigee-remote-service-cli provision --legacy --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml

    업그레이드하는 경우 이 명령어를 --force-proxy-install 플래그와 함께 사용하여 Apigee를 프로비저닝합니다.

    $CLI_HOME/apigee-remote-service-cli provision --legacy --force-proxy-install --mfa $MFA \
      --username $USER --password $PASSWORD --organization $ORG --environment $ENV > config.yaml
  4. config.yaml 파일의 콘텐츠를 확인합니다. 다음과 같이 표시됩니다.
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75
       ...

    키와 보안 비밀 값은 원격 서비스 프록시에서 Apigee Edge에 대한 요청을 검증하는 데 사용됩니다.

Envoy용 Apigee 원격 서비스 실행

원격 서비스는 네이티브 바이너리로 또는 Docker에서 실행할 수 있습니다.

기본적으로 서비스 실행

프로비저닝 명령어로 출력된 구성 파일로 서비스 바이너리를 실행합니다.

$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Docker에서 서비스 실행

Docker 이미지는 출시 태그와 함께 게시됩니다. 설치하려면 최신 버전을 사용합니다. 선택할 수 있는 이미지 변형에는 다음 세 가지가 있습니다.

변형 이미지
Google distroless google/apigee-envoy-adapter:v2.0.0
Ubuntu google/apigee-envoy-adapter:v2.0.0-ubuntu
Boring Crypto를 포함한 Ubuntu google/apigee-envoy-adapter:v2.0.0-boring

예를 들어 볼륨 마운트를 통해 /config.yaml로 사용 가능한 로컬 config.yaml로 스크래치 이미지를 실행하려면 다음 명령어를 사용합니다.

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.0

샘플 구성 파일 만들기

CLI를 사용하여 Envoy 구성 파일을 생성합니다.

  1. 현재 위치가 $ENVOY_HOME 디렉터리인지 확인합니다.
  2. 사용 가능한 구성 템플릿을 나열합니다.
    $CLI_HOME/apigee-remote-service-cli samples templates
  3. 샘플 명령어를 실행합니다. TEMPLATE을 지원되는 Envoy 템플릿 중 하나로 대체합니다.

    $CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml

    이 명령어는 ./samples/envoy-config.yaml 파일을 만듭니다.

자세한 내용은 샘플 명령어를 참고하세요.

Envoy 프록시 설치 및 실행

Envoy 프록시를 설치하고 실행하려면 다음 단계를 수행합니다.

  1. Envoy 바이너리를 다운로드하거나 빌드하거나 Docker를 사용합니다.
  2. 이전에 httpbin.org 서비스용으로 생성한 샘플 구성 파일을 사용하여 Envoy를 실행합니다.
    envoy -c ./samples/envoy-config.yaml

설치 테스트

  1. API 키를 가져오는 방법의 설명에 따라 API 제품을 구성하고 API 키를 가져옵니다.
  2. API 키 없이 httpbin 서비스를 호출합니다.
    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    

    이제 Apigee가 서비스를 관리하고 있으며 API 키를 제공하지 않았기 때문에 호출이 다음 오류를 반환합니다.

    curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  3. 키를 사용하여 API를 호출합니다.
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    호출이 성공하면 200 상태가 표시되고 응답에 헤더 목록을 반환해야 합니다. 예를 들면 다음과 같습니다.

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

다음 단계

이제 httpbin 서비스로의 API 트래픽을 Apigee에서 관리합니다. 다음과 같은 기능을 사용해 볼 수 있습니다.

  • API 키를 가져오는 방법의 설명에 따라 API 제품을 구성한 경우 할당량 한도가 분당 요청 5건으로 설정되었습니다. httpbin 서비스를 몇 번 더 호출하여 할당량을 트리거해 보세요. 할당량이 소진되면 HTTP 상태 403 오류가 반환됩니다.
  • Edge UI에서 Apigee 애널리틱스에 액세스합니다. 분석 > API 측정항목 > API 프록시 성능으로 이동합니다.
  • JWT 토큰을 생성하고 사용하여 API 호출을 인증합니다.
  • CLI를 사용하여 토큰을 관리 및 생성하고 바인딩을 제어합니다. CLI에 대한 자세한 내용은 참조를 확인하세요.