Hosted Targets 작업

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

Hosted Targets 프록시 배포 취소

Hosted Targets 애플리케이션이 포함된 Edge 프록시를 배포 취소하면 연결된 Hosted Targets 앱은 배포 취소되지만 기본 애플리케이션 이미지는 삭제되지 않습니다. 프록시를 다시 배포하면 Hosted Targets 앱이 다시 배포됩니다.

Hosted Targets 프록시 삭제

Hosted Targets 프록시를 삭제하면 일정 시간 내에 기본 런타임 인스턴스 실행이 중지됩니다. 그러나 애플리케이션 코드는 유지됩니다.

로그 파일 액세스

로그 파일은 디버깅 및 문제 해결에 유용합니다. Hosted Targets 배포에 대한 두 가지 유형의 로그 파일을 볼 수 있습니다.

  • 빌드 로그 - Hosted Targets 앱의 배포 및 빌드와 관련된 출력을 표시합니다.
  • 런타임 로그 - 실행 중인 Hosted Targets 앱과 관련된 출력을 표시합니다. 런타임 로그의 범위는 해당 환경으로 지정되며 현재 배포된 프록시 버전의 로그 정보를 표시합니다.

Edge UI에서 로그에 액세스

  1. apigee.com/edge로 이동
  2. 로그인 사용자 인증 정보를 입력하고 로그인을 클릭합니다.
  3. 측면 탐색 메뉴에서 개발 > API 프록시를 선택합니다.
  4. 로그를 보려는 프록시를 선택합니다.
  5. 개발 탭을 클릭합니다.
  6. 빌드 로그를 보려면 Build Logs를 클릭합니다.
  7. 런타임 로그를 보려면 런타임 로그를 클릭합니다.

API로 로그 액세스

Edge API를 사용하여 호스팅된 대상 로그를 검색할 수도 있습니다. 자세한 내용은 캐시된 Node.js 로그 가져오기를 참조하세요.

비공개 npm 저장소 사용

이 섹션에서는 개발 환경에서 비공개 NPM 저장소를 사용하는 경우 호스팅된 대상에 Node.js 프록시를 배포하는 방법을 설명합니다.

비공개 저장소 사용에 대해 알아야 할 사항

Node.js 앱을 Edge에 배포하면 배포 프로세스의 일부로 프로젝트의 모든 종속 항목을 자동으로 가져옵니다. 기본적으로 Hosted Target은 코드가 배포될 때 코드에서 npm install를 실행합니다. 하지만 개발 환경에서 비공개 NPM 저장소를 사용하는 경우 클라우드에서 비공개 종속 항목을 확인할 수 없습니다. 이 경우 해결 방법은 배포 유틸리티 apigeetool을 사용할 때 --bundled-dependencies 옵션을 사용하는 것입니다. 시스템에서 Edge로 Node.js 배포도 참조하세요.

apigeetool에서 --bundled-dependencies 플래그를 사용하면 Node.js 앱이 호스팅된 대상에 업로드되고 package.jsonbundledDependencies 배열에 나열된 모든 로컬/비공개 파일이 압축되어 번들로 업로드됩니다.

일반적인 경우는 아니지만 내부적으로 공개 NPM 저장소를 미러링하는 경우 배포 번들에 비공개 미러를 가리키는 .npmrc 또는 package-lock.json 파일이 포함되어 있으면 배포가 실패합니다. 이 경우 배포할 프록시 번들에서 .npmrc 또는 package-lock.json를 생략해야 합니다.

비공개 NPM 저장소로 배포

비공개 NPM 저장소에서 제공되는 모듈을 사용하려면 다음 단계를 따르세요.

  1. npm에 로그인합니다.
    npm login
  2. npm 인증 토큰을 가져옵니다.
    1. .npmrc를 찾습니다 (~/.npmrc에 있어야 함).
    2. .npmrc에서 다음과 같은 줄 끝에 있는 토큰을 확인합니다.

      //registry.npmjs.org/:_authToken=****
    3. 또는 npm token <list | create | revoke> 명령어를 사용하여 인증 토큰을 나열, 생성 또는 취소할 수 있습니다. 자세한 내용은 npm-token 문서를 참조하세요.
  3. 아래에 설명된 대로 키-값 맵 구성 페이지에 액세스합니다.

    에지

    Edge UI를 사용하여 키-값 맵 구성 페이지에 액세스하려면 다음 단계를 따르세요.

    1. apigee.com/edge에 로그인합니다.
    2. 왼쪽 탐색 메뉴에서 관리 > 환경 > 키-값 맵을 선택합니다.

    Classic Edge (Private Cloud)

    기본 Edge UI를 사용하여 키-값 맵 구성 페이지에 액세스하려면 다음 단계를 따르세요.

    1. http://ms-ip:9000에 로그인합니다. 여기서 ms-ip는 관리 서버 노드의 IP 주소 또는 DNS 이름입니다.
    2. 상단 탐색 메뉴에서 API > 환경 구성 > 키-값 맵을 선택합니다.
  4. + 키-값 맵을 클릭합니다.
  5. 새 키-값 맵 대화상자에서 이름을 입력하고 암호화됨을 선택합니다.
  6. Add를 클릭합니다.
  7. 앞에서 찾거나 만든 인증 토큰을 방금 만든 각 KVM에 새 항목으로 추가합니다.
  8. app.yaml 파일에 KVM 및 npm 인증 토큰과 연결된 키를 참조하는 항목을 추가합니다. 예를 들면 다음과 같습니다.
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

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

    • 최상위 name 속성은 생성될 환경 변수의 이름에 해당합니다.
    • valueRef 아래의 name은 이전에 만든 KVM에 상응합니다.
    • key 속성은 KVM에 추가한 npm 토큰에 매핑되는 키에 해당합니다.
  10. package.json과 동일한 디렉터리에 .npmrc 파일을 만듭니다. 이 파일은
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    와 유사합니다. registry.npmjs.org를 사용하지 않는 경우 @myscope:registry=https://mycustomregistry.example.org과 같은 줄을 추가하여 .npmrc 파일에서 범위를 설정할 수 있습니다. npmrc 문서도 참조하세요.
  11. .npmrc 파일 및 app.yaml 파일을 포함하여 Node.js 프록시를 업로드하거나 업데이트합니다.
  12. 새 프록시 또는 업데이트된 프록시가 원하는 비공개 저장소 모듈을 배포하고 그와 함께 작동하는지 확인합니다.
  13. 프록시가 배포되지 않으면 빌드 로그를 확인하여 비공개 npm 모듈 설치에 실패했는지 확인합니다. 이 경우 다음 단계를 따르세요.
    1. 개발 탭에서 .npmrc가 있는지 확인합니다.
    2. 토큰이 유효한지 확인합니다. kvm에 있는 토큰을 사용하여 로컬에서 모듈을 설치해 봅니다.
    3. 맞춤 범위를 사용하는 경우 범위가 설정되어 있는지 확인합니다.

번들 종속 항목의 NPM 버전 지정

기본적으로 NPM v4는 Hosted Targets 환경에 번들된 종속 항목을 설치하는 데 사용됩니다. 그러나 다른 NPM 버전을 사용하려는 경우 NPM_VERSION 환경 변수에서 지정할 수 있습니다. 애플리케이션의 매니페스트 파일에서 이 변수를 설정할 수 있습니다. 자세한 내용은 매니페스트 파일 요소를 참고하세요.

번들 종속 항목을 사용하는 경우 NPM_VERSION를 지정하지 않으면 호스팅된 대상은 기본적으로 NPM v4를 사용합니다. 번들 종속 항목을 사용하지 않는 경우 지정된 Node.js 런타임에 포함된 NPM 버전이 사용됩니다.

번들 종속 항목 예

호스팅된 대상이 있는 번들 종속 항목 기능을 보여주는 예시는 커스텀 모듈을 사용하여 호스팅된 함수로 Node.js 애플리케이션을 만드는 방법을 참조하세요.

상태 점검 엔드포인트 추가

Node.js 애플리케이션에 상태 점검 엔드포인트를 구현하는 옵션이 있습니다. Apigee는 Node.js 애플리케이션이 컨테이너에서 애플리케이션이 실행 중인지 확인하기 위해 이 엔드포인트를 사용합니다.

기본적으로 Apigee에서 예상하는 엔드포인트는 /health입니다. HOSTED_TARGET_HEALTH_CHECK_PATH 환경 변수에 엔드포인트를 지정하여 기본 엔드포인트를 변경할 수 있습니다. 애플리케이션의 매니페스트 파일에서 이 변수를 설정할 수 있습니다. 자세한 내용은 매니페스트 파일 요소를 참고하세요.

상태 점검 엔드포인트를 구현할 필요는 없습니다. 그러나 상태 확인 엔드포인트를 구현하는 경우 다음 사항에 유의하세요.

  • Apigee가 엔드포인트에 도달했을 때 애플리케이션이 종료되면 애플리케이션이 예상대로 시작되지 않습니다.
  • 엔드포인트가 404 Not Found HTTP 상태를 반환해도 괜찮습니다. /health 또는 HOSTED_TARGET_HEALTH_CHECK_PATH는 애플리케이션이 실행 중인지 확인하는 데만 사용됩니다. 실제 응답은 무시됩니다.

NPM 캐시 위치 변경

최신 버전의 Node.js는 NPM 캐시에 /root/.npm를 사용하는 NPM 버전을 사용합니다. 이 위치는 호스팅된 타겟에 문제가 있는데, 이는 디렉터리 위치가 읽기 전용입니다. 호스팅된 타겟 런타임이 /tmp만 쓰기 가능한 tmpfs 파일 시스템을 사용하기 때문입니다. 이 문제를 해결하려면 애플리케이션의 app.yaml 파일 (매니페스트 파일)에서 npm_config_cache 환경 변수를 /tmp 내 디렉터리로 설정하면 됩니다. 예를 들면 다음과 같습니다.

  runtime: node
  application: my-express-app
  env:
    - name: npm_config_cache
      value: /tmp/.npm
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  

NPM 없이 애플리케이션 실행

기본적으로 Hosted Target은 npm start를 사용하여 Hosted Target 애플리케이션을 실행합니다. 그러나 이전 작업에서는 NPM을 사용하는 경우 발생하는 문제에 대해 설명했습니다. 최신 버전이 NPM 캐시에 /root/.npm를 사용하려고 하기 때문에 쓰기가 불가능하고 호스팅된 대상이 시작되지 않기 때문입니다. 이전 작업에서 이 문제를 해결할 수 있지만 NPM 없이 애플리케이션을 실행할 수도 있습니다. 이렇게 하려면 애플리케이션의 app.yaml 파일 (매니페스트 파일)에 있는 commandargs 값을 사용하여 node index.js를 사용하는 Hosted Target을 직접 실행하면 됩니다. 예:

  runtime: node
  application: my-express-app
  command: node
  args:
    - index.js
  env:
    - name: NODE_ENV
      value: production
    - name: LOG_LEVEL
      value: 3
  
물론 적절하다고 생각되는 명령어를 사용할 수 있으며 node index.js는 예시일 뿐입니다.