Apigee Edge로 Envoy용 Apigee 어댑터 사용

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

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

기본 요건

시작하기 전에

개요

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

Apigee Edge 프로비저닝

이 단계에서는 원격 서비스 CLI를 사용하여 Envoy 애셋용 Apigee 어댑터를 프로비저닝합니다. Apigee Edge입니다 프로비저닝 명령어는 Apigee Edge에 API 프록시를 배포합니다. GCP 콘솔에서 인증서를 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에 대한 자세한 내용은 참조를 확인하세요.