앱 매니페스트는 개발자가 앱 실행 환경을 선언적인 방법으로 기록할 수 있는 방법을 제공합니다. 이렇게 해서 일관적이고 재현 가능한 방법으로 앱을 배포할 수 있습니다.
형식
매니페스트는 앱의 루트 디렉터리에 있는 YAML 파일입니다. 이 파일은 manifest.yml
또는 manifest.yaml
로 이름을 지정해야 합니다.
Kf 앱 매니페스트는 단일 최상위 요소인 applications
를 가질 수 있습니다.
applications
요소는 하나 이상의 애플리케이션 항목을 포함할 수 있습니다.
애플리케이션 필드
다음 필드는 applications
아래의 객체에 유효합니다.
필드 | 유형 | 설명 |
---|---|---|
name |
string |
애플리케이션의 이름입니다. 앱 이름은 소문자 영숫자 문자 및 대시여야 합니다. 대시로 시작할 수 없습니다. |
path |
string |
앱의 소스 경로입니다. 기본적으로 매니페스트 디렉터리로 지정됩니다. |
buildpacks |
string[] |
앱에 적용할 buildpack 목록입니다. |
stack |
string |
buildpack으로 만든 앱에 사용할 기본 이미지입니다. |
docker |
object |
Docker 객체입니다. 자세한 내용은 Docker 필드 섹션을 참조하세요. |
env |
map |
앱 및 빌드의 환경 변수로 사용할 키-값 쌍입니다. |
services |
string[] |
앱에 자동으로 바인드할 서비스 인스턴스 이름 목록입니다. |
disk_quota |
quantity |
애플리케이션이 가져올 디스크 양입니다. 기본값은 1GiB입니다. |
memory |
quantity |
앱을 제공할 RAM 양입니다. 기본값은 1GiB입니다. |
cpu † |
quantity |
애플리케이션에 제공할 CPU 양입니다. 기본값은 0.1입니다(CPU의 1/10). |
instances |
int |
실행할 앱의 인스턴스 수입니다. 기본값은 1입니다. |
routes |
object |
앱이 리슨할 경로 목록입니다. 자세한 내용은 경로 필드 섹션을 참조하세요. |
no-route |
boolean |
true로 설정하면 애플리케이션을 라우팅할 수 없습니다. |
random-route |
boolean |
true로 설정하면 앱에 무작위 경로가 제공됩니다. |
timeout |
int |
앱이 정상 상태가 될 때까지 기다리는 시간(초)입니다. |
health-check-type |
string |
port , process , none , http 를 사용할 상태 확인 유형입니다. 기본값: port |
health-check-http-endpoint |
string |
상태 확인 중에 대상으로 지정할 엔드포인트입니다. health-check-type 이 http 인 경우에만 유효합니다. |
command |
string |
앱을 시작하는 명령어입니다. 제공된 경우 컨테이너 진입점으로 전달됩니다. |
entrypoint † |
string |
앱 컨테이너의 진입점을 재정의합니다. |
args † |
string[] |
앱 컨테이너의 인수를 재정의합니다. |
ports † |
object |
컨테이너에 노출할 포트 목록입니다. 제공된 경우 이 목록의 첫 번째 항목이 기본 포트로 사용됩니다. |
† Kf에 고유
Docker 필드
다음 필드는 application.docker
객체에 유효합니다.
필드 | 유형 | 설명 |
---|---|---|
image |
string |
사용할 Docker 이미지입니다. |
경로 필드
다음 필드는 application.routes
객체에 유효합니다.
필드 | 유형 | 설명 |
---|---|---|
route |
string |
호스트 이름, 도메인, 경로를 포함하는 앱 경로입니다. |
appPort |
int |
(선택사항) 경로가 트래픽을 전송할 앱의 커스텀 포트입니다. |
포트 필드
다음 필드는 application.ports
객체에 유효합니다.
필드 | 유형 | 설명 |
---|---|---|
port |
int |
앱의 컨테이너에서 노출할 포트입니다. |
protocol |
string |
노출할 포트의 프로토콜입니다. tcp , http , http2 여야 합니다. 기본값: tcp |
예시
최소 앱
업로드된 소스를 기준으로 buildpack을 자동으로 감지해서 앱을 빌드하고 앱의 한 인스턴스를 배포하는 뼈대 매니페스트입니다.
---
applications:
- name: my-minimal-application
단순 앱
기존 자바 앱을 위한 전체 매니페스트입니다.
---
applications:
- name: account-manager
# only upload src/ on push
path: src
# use the Java buildpack
buildpacks:
- java
env:
# manually configure the buildpack's Java version
BP_JAVA_VERSION: 8
ENVIRONMENT: PRODUCTION
# use less disk and memory than default
disk_quota: 512M
memory: 512M
# bump up the CPU
cpu: 0.2
instances: 3
# make the app listen on three routes
routes:
- route: accounts.mycompany.com
- route: accounts.datacenter.mycompany.internal
- route: mycompany.com/accounts
# set up a longer timeout and custom endpoint to validate
# when the app comes up
timeout: 300
health-check-type: http
health-check-http-endpoint: /healthz
# attach two services by name
services:
- customer-database
- web-cache
Docker 앱
Kf는 매니페스트로 배포된 앱 뿐만 아니라 Docker 컨테이너도 배포할 수 있습니다. 이러한 Docker 앱은 PORT
환경 변수를 리슨해야 합니다.
---
applications:
- name: white-label-app
# use a pre-built docker image (must listen on $PORT)
docker:
image: gcr.io/my-company/white-label-app:123
env:
# add additional environment variables
ENVIRONMENT: PRODUCTION
disk_quota: 1G
memory: 1G
cpu: 2
instances: 1
routes:
- route: white-label-app.mycompany.com
여러 포트가 있는 앱
이 앱에는 관리 콘솔, 웹사이트, SMTP 서버를 노출하기 위한 여러 포트가 있습니다.
---
applications:
- name: b2b-server
ports:
- port: 8080
protocol: http
- port: 9090
protocol: http
- port: 2525
protocol: tcp
routes:
- route: b2b-admin.mycompany.com
appPort: 9090
- route: b2b.mycompany.com
# gets the default (first) port
상태 확인 유형
Kf는 세 가지 서로 다른 상태 확인 유형을 지원합니다.
port
(기본값)http
process
(또는none
)
port
및 http
는 트래픽을 전송하기 전 애플리케이션이 준비될 수 있게 해주는 Kubernetes 준비 및 활성 프로브를 설정합니다.
port
상태 확인은 $PORT
에서 찾은 포트로 수신되는지 확인합니다. 내부적으로 Kf에 TCP 프로브가 사용됩니다.
http
상태 확인은 health-check-http-endpoint
에 구성된 값을 사용하여 애플리케이션 상태를 확인합니다. 내부적으로 Kf에 HTTP 프로브가 사용됩니다.
process
상태 확인은 컨테이너에서 실행 중인 프로세스가 활성 상태인지 확인합니다. Kubernetes 준비 여부 또는 활성 여부 프로브를 설정하지 않습니다.
알려진 차이점
다음은 Kf 매니페스트와 CF 매니페스트 사이의 알려진 차이점입니다.
- Kf는 지원 중단된 CF 매니페스트 필드를 지원하지 않습니다. 여기에는 매니페스트(애플리케이션 외)의 루트 수준에 있는 모든 필드와 라우팅 필드가 포함됩니다.
- Kf에는 다음 v2 매니페스트 필드에 대한 지원이 없습니다.
docker.username
- Kf는 Docker 컨테이너에 대한 자동 감지 포트를 지원하지 않습니다.