Apigee Edge 문서입니다.
Go to the
Apigee X 문서로 이동합니다. info
환경 변수 한도
호스팅된 대상은 호스팅된 대상 런타임 환경에서 설정할 수 있는 환경 변수의 크기와 수를 제한합니다.
- 1000: 단일 환경 변수의 최대 길이입니다.
- 100: 설정할 수 있는 환경 변수의 최대 수입니다.
환경 변수 설정에 대한 자세한 내용은 매니페스트 파일을 참조하세요.
애플리케이션 런타임에 설정된 환경 변수
호스팅된 대상 애플리케이션을 배포하면 다음 환경 변수가 설정되고 런타임에 애플리케이션에서 사용할 수 있습니다.
APIGEE_ENVIRONMENT- 호스팅된 대상 프록시가 배포되는 환경입니다.APIGEE_ORGANIZATION- 호스팅된 대상 프록시가 배포되는 조직입니다.PORT- 호스팅된 대상 애플리케이션이 리슨해야 하는 포트입니다.
시스템 리소스 할당
각 호스팅된 대상 인스턴스는 다음 리소스를 수신합니다.
- 256MB 메모리
- 1.2 GHz CPU
확장
이 섹션에서는 보유한 Edge 계정 유형에 따라 호스팅된 대상 애플리케이션이 확장되는 방법을 설명합니다.- Apigee Edge 평가판은 프록시당 하나의 호스팅된 대상 인스턴스로 제한됩니다.
- 유료 Apigee Edge 계정은 프록시당 요청 비율, 응답 지연 시간,
기타 애플리케이션 측정항목을 기반으로 자동 확장을 수신합니다.
- Apigee Edge의 유료 버전과 평가판 버전 모두에 배포된 호스팅된 대상 앱은 비활성 기간에 0으로 확장됩니다. 이 경우 짧은 기간 동안 응답 시간이 느려질 수 있습니다. 알려진 문제도 참고하세요.
매니페스트 파일
호스팅된 애플리케이션을 빌드하고 배포하기 위한 런타임 정보를 수집하기 위해 Edge는 app.yaml이라는 매니페스트 파일을 resources/hosted 디렉터리에서 찾습니다. 이 파일에는 호스팅된 대상 애플리케이션을 빌드하고 배포하는 데 필요한 정보가 포함되어 있습니다.
매니페스트 파일 구문
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 - (선택사항) 애플리케이션에서 사용하는 런타임 버전입니다. 기본값: Node.js LTS (v10.x). 다른 옵션은 Node용 Docker 공식 저장소 를 참조하세요.
- command - (선택사항) 애플리케이션을 시작하는 데 사용되는 기본 명령어 이외의 명령어를 지정할 수 있습니다. 기본값:
Node.js=npm - args - (선택사항) 애플리케이션에 전달할 명령줄 인수 배열입니다 (표준 YAML 배열 구문으로 지정됨). 일반적으로 이러한 인수는 기본 명령어에 추가됩니다.
기본값은 start 입니다. 예를 들어 기본적으로 Node.js 앱에는 명령어가 전달됩니다.
npm start - env - (선택사항) 호스팅된 대상 런타임 환경에서 설정할 환경 변수 배열 (이름/값 쌍)입니다. 이러한 변수는 배포된 호스팅된 대상 앱에서 사용할 수 있습니다.
- name - 변수 이름입니다.
- value | valueRef - 두 가지 옵션이 있습니다. 리터럴 값
을 설정하거나 키-값 맵에 저장된 값을 참조할 수 있습니다. 키-값 맵은 Edge 환경에 이미
있어야 합니다. 키-값 맵 작업을 참조하세요.
- value를 사용하는 경우 변수
name와 리터럴value을 지정해야 합니다. 예를 들면 다음과 같습니다.runtime: node env: - name: NODE_ENV value: production - valueRef를 사용하는 경우 이전에 Edge에서 만든 키-값 맵 (KVM)의 name과 key를 제공해야 합니다.
예를 들면 다음과 같습니다.
runtime: node env: - name: DB_ENV value: production - name: DB_PASSWORD valueRef: name: hosted-kvm key: db-password
- value를 사용하는 경우 변수
- apigeetool -- Edge 프록시를 배포하기 위한 명령줄 도구입니다.
- get_token - apigeetool에 필요한 승인 토큰을 가져오기 위한 명령줄 도구입니다.
- 브라우저에서 https://github.com/apigee/api-platform-samples로 이동합니다.
- 클론 또는 다운로드를 클릭하고 원하는 방법을 사용하여 저장소를 로컬 시스템으로 가져옵니다.
- <설치 디렉터리>/api-platform-samples/doc-samples/hosted-targets 로 cd 합니다.
- 저장소가 다운로드되면 샘플 디렉터리로 cd하고 README 안내에 따라 샘플 프록시를 Edge에 배포할 수 있습니다. 배포 명령어는 다음과 같습니다. 표시된 매개변수를 Apigee 계정의 매개변수로 바꾸기만 하면 됩니다.
- 네트워크 지연 시간 - 이제 Node.js 애플리케이션이 MP의 JVM에서 더 이상 실행되지 않으므로 MP와 배포 사이에 네트워크 홉이 있습니다. 물론 비용이 들지만 초기 벤치마크에서는 적절한 범위 내에 있는 것으로 나타났습니다.
- 느린 API 응답 - 애플리케이션을 실행하는 인프라는 필요에 따라 자동으로 확장됩니다. 즉, 애플리케이션이 실제로 0개의 인스턴스로 축소될 수 있으며, 이 경우 다음 API 요청은 인프라가 요청을 처리하기 위해 인스턴스를 스핀업하므로 일반적인 API 요청보다 약간 더 오래 걸립니다.
- 배포 오류 - 호스팅된 대상 프록시를 배포할 때 배포 오류가 발생하면 프록시를 다시 배포해 보세요. 경우에 따라 배포가 시간 초과될 수 있으며 다시 배포하면 문제가 해결됩니다.
매니페스트 파일 예시
이 섹션에는 Node.js
애플리케이션의 매니페스트 파일 예시가 포함되어 있습니다. 호스팅된 대상 앱을 배포하려면 매니페스트 파일이 필요하며
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는 Node.js로 작성된 호스팅된 대상 애플리케이션이 포함된 샘플 프록시를 GitHub에 제공합니다. 이 저장소를 클론하고 README 안내에 따라 프록시를 배포할 수 있습니다.
기본 요건
샘플을 배포하려면 시스템에 두 가지 도구가 설치되어 있어야 합니다.
샘플을 로컬에서 테스트하려면 Node.js도 설치되어 있어야 합니다.
샘플 저장소 가져오기
get_token && apigeetool deployproxy \ -o YOUR_ORGANIZATION \ -e YOUR_ENVIRONMENT \ --json \ --token "$(< ~/.sso-cli/valid_token.dat)"\ --api NAME_OF_THE_PROXY \ --directory .
예시: 샘플 앱 실행
샘플 저장소 클론
cd ~/myhomegit clone https://github.com/apigee/api-platform-samples.gitcd ~/myhome/api-platform-samples/doc-samples/hosted-targetscd node-hosted-hello
로컬로 애플리케이션 테스트
이 로컬 테스트를 실행하려면 Node.js가 설치되어 있어야 합니다.
PORT=8081 node apiproxy/resources/hosted/index.jscurl 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!"