Manifes Aplikasi

Manifes aplikasi menyediakan cara bagi developer untuk merekam lingkungan eksekusi Aplikasi mereka dengan cara yang deklaratif. Solusi 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 memiliki satu elemen level teratas: applications. Elemen applications dapat berisi satu atau beberapa entri aplikasi.

Kolom Aplikasi

Kolom berikut valid untuk objek di bawah applications:

Kolom Jenis Deskripsi
name string Nama aplikasi. Nama aplikasi harus berupa karakter alfanumerik huruf kecil dan tanda pisah. Nama ini tidak boleh diawali dengan tanda hubung.
path string Jalur ke sumber aplikasi. Nilai defaultnya adalah 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 informasi selengkapnya.
env map Key-value pair untuk digunakan sebagai variabel lingkungan untuk aplikasi dan build.
services string[] Daftar nama instance layanan untuk diikat secara otomatis ke aplikasi.
disk_quota quantity Jumlah disk yang seharusnya didapatkan aplikasi. Default-nya adalah 1GiB.
memory quantity Jumlah RAM yang disediakan untuk aplikasi. Defaultnya adalah 1GiB.
cpu quantity Jumlah CPU yang akan disediakan ke aplikasi. Nilai defaultnya adalah 0,1 (1/10 dari CPU).
instances int Jumlah instance aplikasi yang akan dijalankan. Default-nya adalah 1.
routes object Daftar rute yang harus dipantau oleh aplikasi. Lihat bagian Kolom Rute untuk 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 health check yang 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 container.
entrypoint string Mengganti titik entri penampung aplikasi.
args string[] Mengganti argumen penampung aplikasi.
ports object Daftar port yang akan diekspos pada container. Jika disediakan, entri pertama dalam daftar ini 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 yang akan dikirimi traffic.

Kolom Port

Kolom berikut valid untuk objek application.ports:

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

Contoh

Aplikasi Minimal

Ini adalah manifes dasar yang akan mem-build Aplikasi dengan mendeteksi otomatis buildpack 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 manifes Aplikasi yang di-deploy. 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 menampilkan 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 health check yang berbeda:

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

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

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

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

Health check process hanya memeriksa untuk mengetahui apakah proses yang berjalan pada penampung masih aktif. Parameter 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. Ini mencakup semua kolom di tingkat root manifes (selain aplikasi) dan kolom perutean.
  • Kf tidak memiliki dukungan untuk kolom manifes v2 berikut:
    • docker.username
  • Kf tidak mendukung port deteksi otomatis untuk container Docker.