Manifes Aplikasi

Manifes aplikasi menyediakan cara bagi developer untuk merekam lingkungan eksekusi Aplikasi mereka dengan cara deklaratif. Hal ini memungkinkan Aplikasi di-deploy secara konsisten dan dapat direproduksi.

Format

Manifes adalah file YAML di direktori utama Aplikasi. Manifes harus diberi nama manifest.yml atau manifest.yaml.

Manifes Aplikasi Kf diizinkan untuk memiliki satu elemen tingkat teratas: applications. Elemen applications dapat berisi satu atau beberapa entri aplikasi.

Kolom aplikasi

Kolom berikut valid untuk objek di bagian applications:

Kolom Jenis Deskripsi
name string Nama aplikasi. Nama aplikasi harus berupa karakter alfanumerik huruf kecil dan tanda hubung. Nama ini tidak boleh diawali dengan tanda hubung.
path string Jalur ke sumber aplikasi. Secara default ditetapkan ke direktori manifes.
buildpacks string[] Daftar buildpack yang akan diterapkan ke aplikasi.
stack string Image dasar yang akan digunakan untuk aplikasi yang dibuat dengan buildpack.
docker object Objek docker. Lihat bagian Kolom Docker untuk mengetahui informasi selengkapnya.
env map Pasangan nilai kunci/nilai yang akan digunakan sebagai variabel lingkungan untuk aplikasi dan build.
services string[] Daftar nama instance layanan yang akan otomatis terikat ke aplikasi.
disk_quota quantity Jumlah disk yang harus diperoleh aplikasi. Default-nya adalah 1 GiB.
memory quantity Jumlah RAM untuk menyediakan aplikasi. Secara default, 1 GiB.
cpu quantity Jumlah CPU untuk menyediakan aplikasi. Setelan defaultnya adalah 0,1 (1/10 CPU).
instances int Jumlah instance aplikasi yang akan dijalankan. Default-nya adalah 1.
routes object Daftar rute yang harus diproses aplikasi. Lihat bagian Kolom Rute untuk mengetahui informasi selengkapnya.
no-route boolean Jika disetel ke benar (true), aplikasi tidak akan dapat dirutekan.
random-route boolean Jika disetel ke benar (true), aplikasi akan diberi rute acak.
timeout int Jumlah detik untuk menunggu aplikasi menjadi responsif.
health-check-type string Jenis pemeriksaan kesehatan yang akan menggunakan port, process, none, atau http. Default: port
health-check-http-endpoint string Endpoint yang akan ditargetkan sebagai bagian dari health check. Hanya berlaku jika health-check-type adalah http.
command string Perintah yang memulai aplikasi. Jika disediakan, perintah ini akan diteruskan ke titik entri penampung.
entrypoint string Mengganti titik entri penampung aplikasi.
args string[] Mengganti argumen penampung aplikasi.
ports object Daftar port yang akan diekspos di penampung. Jika diberikan, entri pertama dalam daftar ini akan digunakan sebagai port default.

† Unik untuk Kf

Kolom Docker

Kolom berikut valid untuk objek application.docker:

Kolom Jenis Deskripsi
image string Image docker yang akan digunakan.

Kolom rute

Kolom berikut valid untuk objek application.routes:

Kolom Jenis Deskripsi
route string Rute ke aplikasi termasuk nama host, domain, dan jalur.
appPort int (Opsional) Port kustom di Aplikasi tempat rute akan mengirim traffic.

Kolom port

Kolom berikut valid untuk objek application.ports:

Kolom Jenis Deskripsi
port int Port yang akan diekspos di penampung Aplikasi.
protocol string Protokol port yang akan diekspos. Harus berupa tcp, http, atau http2. Default: tcp

Contoh

Aplikasi Minimal

Ini adalah manifes dasar yang akan mem-build Aplikasi dengan mendeteksi buildpack secara otomatis berdasarkan sumber yang diupload, dan men-deploy satu instance-nya.

---
applications:
- name: my-minimal-application

Aplikasi Sederhana

Ini adalah manifes lengkap untuk Aplikasi Java yang lebih tradisional.

---
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

Aplikasi Docker

Kf dapat men-deploy container Docker serta Aplikasi yang di-deploy manifes. Aplikasi Docker ini HARUS memproses variabel lingkungan 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

Aplikasi dengan beberapa port

Aplikasi ini memiliki beberapa port untuk mengekspos konsol admin, situs, dan server 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

Jenis health check

Kf mendukung tiga jenis pemeriksaan kesehatan yang berbeda:

  1. port (default)
  2. http
  3. process (atau none)

port dan http menetapkan pemeriksaan kesiapan dan keaktifan Kubernetes yang memastikan aplikasi siap sebelum mengirim traffic ke aplikasi tersebut.

Health check port akan memastikan port yang ditemukan di $PORT sedang diproses. Di balik layar, Kf menggunakan probe TCP.

Health check http akan menggunakan nilai yang dikonfigurasi di health-check-http-endpoint untuk memeriksa kondisi aplikasi. Di balik layar, Kf menggunakan probe HTTP.

Pemeriksaan kesehatan process hanya memeriksa apakah proses yang berjalan di penampung masih aktif. Perintah ini TIDAK menetapkan pemeriksaan kesiapan atau keaktifan Kubernetes.

Perbedaan yang diketahui

Berikut adalah perbedaan yang diketahui antara manifes Kf dan manifes CF:

  • Kf tidak mendukung kolom manifes CF yang tidak digunakan lagi. Hal ini mencakup semua kolom di tingkat root manifes (selain aplikasi) dan kolom pemilihan rute.
  • Kf tidak memiliki dukungan untuk kolom manifes v2 berikut:
    • docker.username
  • Kf tidak mendukung port deteksi otomatis untuk penampung Docker.