앱 런타임은 앱이 실행되는 환경입니다.
Buildpack 앱 | 컨테이너 이미지 앱 | |
---|---|---|
시스템 라이브러리 | 스택에서 제공됨 | 컨테이너에 제공됨 |
네트워크 액세스 | Envoy 사이드카를 통한 전체 액세스 | Envoy 사이드카를 통한 전체 액세스 |
파일 시스템 | 임시 스토리지 | 임시 스토리지 |
언어 런타임 | 스택 또는 Buildpack에서 제공됨 | 컨테이너에 기본 제공됨 |
사용자 | 스택에서 지정됨 | 컨테이너에 지정됨 |
격리 메커니즘 | Kubernetes Pod | Kubernetes Pod |
DNS | Kubernetes에서 제공됨 | Kubernetes에서 제공됨 |
환경 변수
Kubernetes는 런타임의 앱에 환경 변수를 삽입합니다. 변수는 다음 순서로 추가되고, 후속 값은 동일한 이름의 이전 값을 재정의합니다.
- 공간(관리자가 설정)
- 앱(개발자가 설정)
- 시스템 (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
와 동일)