Buildpack mengonversi kode sumber menjadi file yang dapat dieksekusi, dan digunakan untuk memberikan cara yang sederhana, andal, dan berulang untuk membuat container. Kf mendukung buildpack V2 dan V3, dan penting untuk memahami perbedaan di antara keduanya.
Buildpack V2
Sebagian besar aplikasi Cloud Foundry sudah menggunakan buildpack V2. Saat menggunakan buildpack V2 dengan Kf, biner siklus proses dan buildpack didownload serta dikonfigurasi dari URL git-nya. Kf kemudian menggunakan lifecycle
CLI untuk mengeksekusi setiap buildpack terhadap kode sumber.
Kelebihan
- Siap digunakan tanpa perubahan pipeline atau kode.
Kekurangan
- Buildpack lama diganti dengan V3.
- Performa dan keandalan yang lebih lemah. Pipeline build Kf memerlukan lebih banyak IO untuk buildpack V2.
- Lebih sedikit referensi komunitas.
- Kf hanya mendukung repo git OSS.
Buildpack V3
Buildpack V3 adalah project Cloud Native Computing Foundation (CNCF) dengan spesifikasi yang ditentukan dengan baik, CLI (pack), dan komunitas yang berkembang yang berinovasi di berbagai bahasa dan framework. Google Cloud juga memiliki kumpulan buildpack Google Cloud-nya sendiri.
Buildpack V3 memiliki dua penampung OCI menyeluruh:
- Image builder
- Menjalankan gambar
Image builder
Image builder digunakan saat kode sumber Anda sedang di-build ke dalam container yang dapat dijalankan. Image memiliki skrip detect
yang diperlukan dan utilitas lainnya untuk mengompilasi kode sumber.
Menjalankan gambar
Image run adalah image dasar tempat container di-build. Artinya, ini adalah image dasar yang akan berjalan saat Aplikasi dieksekusi.
Lapisan
Buildpack V3 menggunakan lapisan untuk menyusun penampung akhir. Setiap buildpack yang disertakan dalam build diberi kesempatan untuk memanipulasi sistem file dan variabel lingkungan Aplikasi. Pendekatan pelapisan ini memungkinkan buildpack menjadi lebih tipis dan lebih umum.
Buildpack V3 dibuat di container OCI. Hal ini mengharuskan image builder V3 disimpan di registry container yang memiliki akses ke pipeline build Kf. Pipeline build menggunakan image builder untuk menerapkan skrip yang mendasarinya guna mem-build kode sumber menjadi container yang dapat dijalankan.
Kelebihan
- Google mendukung image builder dan run.
- Berfungsi dengan berbagai produk Google Cloud seperti Cloud Build.
- Komunitas dan registry buildpack yang berkembang.
Kekurangan
- Mungkin memerlukan pembaruan kode/proses. Misalnya, buildpack Java memerlukan kode sumber, sedangkan buildpack V2 memerlukan file jar.
- Buildpack V3 lebih baru dan mungkin memerlukan validasi tambahan (menggunakan buildpack yang dikembangkan komunitas).
Kf Stacks
Melihat Stack
Saat mendorong Aplikasi, pipeline build menentukan buildpack berdasarkan Stack yang dipilih (ditentukan melalui tanda --stack
atau manifes).
Untuk melihat Stack yang tersedia di Ruang, pastikan Ruang ditargetkan terlebih dahulu:
kf target -s myspace
Subperintah kf stacks
kemudian dapat digunakan untuk mencantumkan Stack:
kf stacks
Output menampilkan Stack V2 dan V3:
Getting stacks in Space: myspace
Version Name Build Image Run Image Description
V2 cflinuxfs3 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
V3 org.cloudfoundry.stacks.cflinuxfs3 cloudfoundry/cnb:cflinuxfs3@sha256:f96b6e3528185368dd6af1d9657527437cefdaa5fa135338462f68f9c9db3022 cloudfoundry/run:full-cnb@sha256:dbe17be507b1cc6ffae1e9edf02806fe0e28ffbbb89a6c7ef41f37b69156c3c2 A large Cloud Foundry stack based on Ubuntu 18.04
Mengonfigurasi Stack
Konfigurasi Stack dapat diperbarui dengan mengedit Resource Kustom kfsystem
:
kubectl edit kfsystem kfsystem
Contoh ini menetapkan Google Cloud buildpack ke Stack V3:
spec:
kf:
config:
spaceStacksV3:
- name: google
description: Google buildpacks (https://github.com/GoogleCloudPlatform/buildpacks)
buildImage: gcr.io/buildpacks/builder:v1
runImage: gcr.io/buildpacks/gcp/run:v1
Stack baru ini sekarang dapat di-push:
kf push myapp --stack google
Contoh ini mengonfigurasi buildpack Ruby V2 dan menetapkan default pipeline build untuk menggunakan Stack V2:
spec:
kf:
config:
spaceDefaultToV3Stack: false
spaceBuildpacksV2:
- name: ruby_buildpack
url: https://github.com/cloudfoundry/ruby-buildpack
spaceStacksV2:
- name: cflinuxfs3
image: cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
Migrasi
Catatan: Fitur ini saat ini masih bersifat eksperimental dan dapat berubah sewaktu-waktu.
Kf memiliki alat migrasi yang dapat menggabungkan buildpack V2. Hasilnya adalah buildpack V3 yang dapat digunakan dalam builder V3. Buildpack yang digabungkan kemudian dapat digunakan di mana saja buildpack V3 tersedia.
kf wrap-v2-buildpack gcr.io/your-project/v2-go-buildpack https://github.com/cloudfoundry/go-buildpack --publish
Tindakan ini akan membuat image buildpack bernama gcr.io/your-project/v2-go-buildpack
. Kemudian, kode ini dapat digunakan untuk membuat builder dengan mengikuti dokumen membuat builder.
Subperintah ini menggunakan CLI berikut secara transparan:
go
git
pack
Sebaiknya gunakan Cloud Shell Editor untuk memastikan setiap subperintah tersedia di jalur yang benar dan merupakan versi yang benar.
Masalah umum
Berikut adalah fitur yang belum berfungsi dengan Kf. Jika salah satunya memiliki prioritas tinggi bagi organisasi Anda, hubungi Sales Rep Anda:
- Registry container pribadi untuk image builder V3.
- Penyimpanan dalam cache V3.
- Buildpack V2 yang memerlukan kredensial git.