호스팅된 대상 참조

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

<ph type="x-smartling-placeholder">

환경 변수 한도

호스팅된 대상은 환경 변수의 크기와 수를 제한함 타겟 런타임 환경에서 설정할 수 있습니다

  • 1000: 단일 환경 변수의 최대 길이
  • 100개: 설정할 수 있는 환경 변수의 최대 개수입니다.

환경 변수 설정에 대한 자세한 내용은 다음을 참조하세요. 매니페스트 파일.

애플리케이션 런타임에 설정된 환경 변수

Hosted Targets 애플리케이션을 배포할 때 다음 환경 변수가 설정되고 애플리케이션에서 사용할 수 있습니다.

  • APIGEE_ENVIRONMENT - Hosted Target 프록시가 배포되는 환경입니다.
  • APIGEE_ORGANIZATION - Hosted Target 프록시가 배포된 조직입니다.
  • PORT - Hosted Target 애플리케이션이 리슨해야 하는 포트입니다.

시스템 리소스 할당

각 Hosted Targets 인스턴스는 다음 리소스를 수신합니다.

  • 256MB 메모리
  • 1.2 GHz CPU

확장

이 섹션에서는 Edge 계정 유형에 따라 호스팅된 대상 애플리케이션이 확장되는 방식을 설명합니다. 있습니다.
  • Apigee Edge 평가판 버전은 프록시당 호스팅된 대상 인스턴스 1개로 제한됩니다.
  • 유료 Apigee Edge 계정은 요청 비율, 응답 지연 시간, 기타 애플리케이션 측정항목을 모니터링할 수 있습니다
  • Apigee Edge 유료 버전과 무료 체험판 버전에 모두 배포된 호스팅된 대상 앱은 활동이 없는 기간에 0으로 조정됩니다. 이 경우 잠시 동안 응답 속도가 느려질 수 있습니다. 참고 항목 알려진 문제

매니페스트 파일

호스팅된 애플리케이션을 빌드하고 배포하기 위한 런타임 정보를 수집하기 위해 Edge는 resources/Host 디렉터리에 이름이 app.yaml인 매니페스트 파일 이 파일에는 Hosted Targets 애플리케이션을 빌드하고 배포하는 데 필요한 정보가 포함되어 있습니다.

Manfiest 파일 구문

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

매니페스트 파일 요소

app.yaml 매니페스트 파일에는 다음 요소가 포함되어 있습니다.

  • runtime - (필수) 배포할 애플리케이션의 유형을 지정합니다. node를 지정해야 합니다.
  • runtimeVersion - (선택사항) 실행되는 런타임의 버전 API에 액세스할 수 있습니다 기본값: Node.js LTS (v10.x) Node용 Docker 공식 저장소 참조 를 참조하세요.
  • command - (선택사항) 현재 실행 중인 명령어 외에 실행할 명령어를 기본 명령을 사용합니다. 기본값: Node.js=npm
  • args - (선택사항) (표준 YAML 배열 구문에 지정됨) 일반적으로 이러한 명령어는 기본 명령어에 추가됩니다. 기본값은 start입니다. 예를 들어 기본적으로 Node.js 앱에는 npm start
  • env - (선택사항) 환경 변수의 배열 (이름/값 쌍) 호스팅 타겟 런타임 환경에서 설정할 수 있습니다. 이러한 변수는 애플리케이션을 배포할 수 있습니다 <ph type="x-smartling-placeholder">
    • name - 변수 이름입니다.
    • 값 | valueRef - 두 가지 옵션이 있습니다. 리터럴 값을 설정하여 키-값 맵에 저장된 값을 참조할 수 있습니다. 키-값 맵은 이미 Edge 환경에 존재할 수 있습니다 키-값 맵 작업을 참조하세요. <ph type="x-smartling-placeholder">
        </ph>
      • value를 사용하는 경우 name 변수와 리터럴 value를 지정합니다. 예를 들면 다음과 같습니다.
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • valueRef를 사용하는 경우 그런 다음 이전에 Edge에서 만든 키-값 맵 (KVM)의 이름를 제공해야 합니다. 예를 들면 다음과 같습니다.
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password
        드림

    매니페스트 파일의 예

    이 섹션에는 Node.js의 매니페스트 파일 예시가 포함되어 있습니다. 애플리케이션을 실행할 수 있습니다 Hosted Targets 앱을 배포하려면 매니페스트 파일이 필요하며 파일이 있어야 합니다. apiproxy/resources/hosted 디렉터리에 있고 파일 이름은 app.yaml여야 합니다.

    다음은 Node.js 앱의 app.yaml (매니페스트) 파일의 예입니다.

    리터럴 환경 변수를 지정하는 예는 다음과 같습니다.

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    시작 명령어, 명령줄 인수, 환경 변수 포함 예

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    키-값 맵 (KVM) 참조를 지정하는 예시:

    KVM 액세스에 관한 자세한 내용은 매니페스트 파일을 참고하세요.

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub의 호스팅된 대상 애플리케이션 샘플

    Apigee는 호스팅된 대상 애플리케이션을 작성하여 GitHub에서 샘플 프록시를 제공합니다. 사용할 수 있습니다 이 저장소를 클론하고 README 안내에 따라 배포할 수 있습니다

    기본 요건

    샘플을 배포하려면 시스템에 두 가지 도구가 설치되어 있어야 합니다.

    • apigeetool -- 명령줄 에지 프록시 배포를 위한 도구입니다
    • get_token - apigeetool에 필요한 승인 토큰을 가져오기 위한 명령줄 도구입니다.

    샘플을 로컬에서 테스트하려면 Node.js도 설치되어 있어야 합니다.

    샘플 저장소 가져오기

    1. 브라우저에서 https://github.com/apigee/api-platform-samples로 이동합니다.
    2. 클론 또는 다운로드를 클릭하고 다음을 사용하여 저장소를 로컬 시스템으로 가져옵니다. 선택합니다.
    3. cd - <your install dir>/api-platform-samples/doc-samples/Host-targets
    4. 저장소가 다운로드되면 cd 명령으로 원하는 샘플 디렉토리로 이동하고 Edge에 샘플 프록시를 배포하기 위한 README 안내 배포 명령어는 다음과 같습니다. Simply 표시된 매개변수를 Apigee 계정의 매개변수로 바꿉니다.
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    예: 샘플 앱 실행

    샘플 저장소 클론

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    로컬로 애플리케이션 테스트

    이 로컬 테스트를 실행하려면 Node.js가 설치되어 있어야 합니다.

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    출력 예시:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    프록시 배포

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    배포 테스트

    배포를 완료하는 데 몇 분 정도 걸릴 수 있습니다. 배포 오류가 발생하면 배포 명령어를 다시 실행합니다

    curl http://myorg-test.apigee.net/node-hosted-hello

    출력 예시:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    알려진 문제

    • 네트워크 지연 시간 - 이제 Node.js 애플리케이션이 더 이상 실행되지 않습니다. 이제 MP와 배포 사이에 네트워크 홉이 있습니다. 물론 비용이 부과되기는 하지만 초기 업계 기준치에 따르면 합리적인 비용 범위 내에 있는 것으로 나타났습니다.
    • 느린 API 응답 - 애플리케이션을 실행하는 인프라 필요에 따라 자동으로 확장합니다 즉, 애플리케이션이 실제로 이 경우에는 다음 API 요청이 이전 호출보다 일반적인 API 요청이 없는데 이는 인프라가 합니다.
    • 배포 오류 - 애플리케이션을 배포할 때 배포 오류가 발생하는 경우 호스팅된 대상 프록시를 사용하는 경우 프록시를 다시 배포해 보세요. 경우에 따라 배포가 타임아웃될 수 있음 다시 배포하면 문제가 저절로 해결됩니다.