앱 런타임

앱 런타임은 앱이 실행되는 환경입니다.

Buildpack 앱 컨테이너 이미지 앱
시스템 라이브러리 스택에서 제공됨 컨테이너에 제공됨
네트워크 액세스 Envoy 사이드카를 통한 전체 액세스 Envoy 사이드카를 통한 전체 액세스
파일 시스템 임시 스토리지 임시 스토리지
언어 런타임 스택 또는 Buildpack에서 제공됨 컨테이너에 기본 제공됨
사용자 스택에서 지정됨 컨테이너에 지정됨
격리 메커니즘 Kubernetes 포드 Kubernetes 포드
DNS Kubernetes에서 제공됨 Kubernetes에서 제공됨

환경 변수

Kubernetes는 런타임의 앱에 환경 변수를 삽입합니다. 변수는 다음 순서로 추가되고, 후속 값은 동일한 이름의 이전 값을 재정의합니다.

  1. 공간(관리자가 설정)
  2. 앱(개발자가 설정)
  3. 시스템 (Kf가 설정)

Kf는 다음 시스템 환경 변수를 제공합니다.

변수 목적
CF_INSTANCE_ADDR 앱 인스턴스의 클러스터에 표시되는 IP:PORT입니다.
CF_INSTANCE_GUID 앱 인스턴스의 UUID입니다.
INSTANCE_GUID CF_INSTANCE_GUID의 별칭입니다.
CF_INSTANCE_INDEX 앱 인스턴스의 색인 번호이며 항상 0입니다.
INSTANCE_INDEX CF_INSTANCE_INDEX의 별칭입니다.
CF_INSTANCE_IP 앱 인스턴스의 클러스터에 표시되는 IP입니다.
CF_INSTANCE_INTERNAL_IP CF_INSTANCE_IP의 별칭
VCAP_APP_HOST CF_INSTANCE_IP의 별칭
CF_INSTANCE_PORT 앱 인스턴스의 클러스터에 표시되는 포트입니다. Kf에서 PORT와 동일합니다.
DATABASE_URL VCAP_SERVICES 사용자 인증 정보에서 찾은 첫 번째 URI입니다.
LANG 일관적인 스크립트 로드 순서를 위해 Buildpacks에 필요합니다.
MEMORY_LIMIT 앱이 소비할 수 있는 최대 메모리 용량(MB)입니다.
PORT 앱이 요청에 대해 리슨할 포트입니다.
VCAP_APP_PORT PORT의 별칭입니다.
VCAP_APPLICATION 앱 메타데이터가 포함된 JSON 구조입니다.
VCAP_SERVICES 바인드된 서비스를 지정하는 JSON 구조입니다.

바인드된 서비스의 서비스 사용자 인증 정보가 VCAP_SERVICES 환경 변수를 통해 앱에 삽입됩니다. 변수는 다음 구조를 포함하는 유효한 JSON 객체입니다.

VCAPServices

키가 서비스 라벨이고 값이 VCAPService의 배열인 JSON 객체입니다. 배열은 해당 라벨을 포함하는 모든 바인드된 서비스를 나타냅니다. 사용자 제공 서비스user-provided 라벨 아래에 배치됩니다.

예시

{
  "mysql": [...],
  "postgresql": [...],
  "user-provided": [...]
}

VCAPService

이 유형은 단일 바인드된 서비스 인스턴스를 나타냅니다.

예시

{
  "binding_name": string,
  "instance_name": string,
  "name": string,
  "label": string,
  "tags": string[],
  "plan": string,
  "credentials": object
}

필드

필드 유형 설명
binding_name string 사용자가 서비스 결합에 할당한 이름입니다.
instance_name string 사용자가 서비스 인스턴스에 할당한 이름입니다.
name string 존재하는 경우 binding_name이고, 그렇지 않으면 instance_name입니다.
label string 서비스 제품의 이름입니다.
tags string[] 앱이 서비스 인스턴스를 식별하기 위해 사용할 수 있는 문자열의 배열입니다.
plan string[] 서비스 인스턴스가 생성되었을 때 선택된 서비스 요금제입니다.
credentials object 서비스 인스턴스에 액세스하기 위해 필요한 서비스별 사용자 인증 정보입니다.

VCAP_APPLICATION

VCAP_APPLICATION 환경 변수는 앱에 대한 메타데이터가 포함된 JSON 객체입니다.

예시

{
  "application_id": "12345",
  "application_name": "my-app",
  "application_uris": ["my-app.example.com"],
  "limits": {
    "disk": 1024,
    "mem": 256
  },
  "name": "my-app",
  "process_id": "12345",
  "process_type": "web",
  "space_name": "my-ns",
  "uris": ["my-app.example.com"]
}

필드

필드 유형 설명
application_id string 앱을 식별하는 GUID입니다.
application_name string 푸시되었을 때 앱에 할당된 이름입니다.
application_uris string[] 앱에 할당된 URI입니다.
limits object 앱에 허용되는 디스크 공간 및 메모리의 한도입니다. 메모리 및 디스크 공간 한도는 앱이 배포될 때 명령줄 또는 앱 메니페스트로 제공됩니다. 디스크 및 메모리 한도는 MB 단위로 가정되는 정수로 표시됩니다.
name string application_name과 동일합니다.
process_id string 프로세스를 식별하는 UID입니다. 실행 중인 앱 컨테이너에만 있습니다.
process_type string 프로세스의 유형입니다. 실행 중인 앱 컨테이너에만 있습니다.
space_name string 앱이 배포된 인간이 읽을 수 있는 공간 이름입니다.
uris string[] application_uris와 동일합니다.

누락된 필드

Cloud Foundry에 있는 VCAP_APPLICATION의 일부 필드는 현재 Kf에서 지원되지 않습니다.

CF 특정 필드 및 지원 중단된 필드(cf_api, host, users) 외에도 Kf에서 지원되지 않는 필드는 다음과 같습니다.

  • application_version(version과 동일)
  • organization_id
  • organization_name
  • space_id
  • start(started_at과 동일)
  • started_at_timestamp(state_timestamp와 동일)