Buildpack mengonversi kode sumber menjadi file yang dapat dieksekusi, dan digunakan untuk memberikan cara yang sederhana, andal, dan dapat diulang 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 akan didownload dan dikonfigurasi dari URL git mereka. Kf kemudian menggunakan CLI lifecycle
untuk mengeksekusi setiap buildpack terhadap kode sumber.
Kelebihan
- Siap digunakan tanpa perlu mengubah pipeline atau kode.
Kekurangan
- Buildpack lama digantikan oleh V3.
- Performa dan keandalan yang lebih rendah. Pipeline build Kf memerlukan lebih banyak IO untuk buildpack V2.
- Lebih sedikit sumber daya komunitas.
- Kf hanya mendukung repositori git OSS.
buildpack V3
Buildpack V3 adalah project Cloud Native Computing Foundation (CNCF) dengan spec yang jelas, CLI (paket), dan komunitas yang terus berkembang serta berinovasi dalam berbagai bahasa dan framework. Google Cloud juga memiliki kumpulan buildpack Google Cloud sendiri.
Buildpack V3 memiliki dua container OCI yang menyeluruh:
- Gambar builder
- Jalankan gambar
Gambar builder
Image builder digunakan saat kode sumber Anda sedang dibangun ke dalam container yang dapat dijalankan. Gambar memiliki skrip detect
yang diperlukan dan utilitas lainnya untuk mengompilasi kode sumber.
Jalankan gambar
Image run adalah image dasar tempat container dibangun. Artinya, image tersebut adalah image dasar yang akan dijalankan saat Aplikasi dieksekusi.
Lapisan
Buildpack V3 menggunakan lapisan untuk menyusun container akhir. Setiap buildpack yang disertakan dalam build diberi kesempatan untuk memanipulasi sistem file dan variabel lingkungan Aplikasi. Pendekatan layering ini memungkinkan buildpack menjadi lebih tipis dan lebih generik.
Buildpack V3 di-build pada container OCI. Hal ini mengharuskan image builder V3 disimpan dalam container registry yang dapat diakses oleh pipeline build Kf. Pipeline build menggunakan image builder untuk menerapkan skrip yang mendasarinya guna membangun kode sumber ke dalam container yang dapat dijalankan.
Kelebihan
- Google mendukung membuat dan menjalankan image.
- Berfungsi dengan berbagai produk Google Cloud seperti Cloud Build.
- Mengembangkan komunitas dan membangun registry.
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).
Tumpukan Kf
Lihat Tumpukan
Saat mendorong Aplikasi, pipeline build menentukan buildpack berdasarkan Stack yang dipilih (ditentukan melalui flag --stack
atau manifes).
Untuk melihat Tumpukan mana yang tersedia dalam Ruang, terlebih dahulu pastikan Ruang ditargetkan:
kf target -s myspace
Subperintah kf stacks
kemudian dapat digunakan untuk menampilkan Stack:
kf stacks
Output menampilkan Stack V2 dan V3:
Getting stacks in Space: myspace
Version Name Build Image Run Image
V2 cflinuxfs3 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
V3 kf-v2-to-v3-shim gcr.io/kf-releases/v2-to-v3:v2.7.0 gcr.io/buildpacks/gcp/run:v1 This is a stack added by the integration tests to assert that v2->v3 shim works
V3 google gcr.io/buildpacks/builder:v1 gcr.io/buildpacks/gcp/run:v1 Google buildpacks (https://github.com/GoogleCloudPlatform/buildpacks)
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 buildpack Google Cloud sebagai 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 dikirim:
kf push myapp --stack google
Contoh ini mengonfigurasi buildpack Ruby V2 dan menyetel default pipeline build untuk menggunakan V2 Stack:
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 Buildpack V2 ke V3
Kf menyediakan stack V3 untuk mem-build aplikasi yang dibuat dengan buildpack V2 standar, menggunakan stack bernama kf-v2-to-v3-shim
. Stack kf-v2-to-v3-shim
dibuat dengan mengikuti API buildpacks V3 standar. Image builder yang dikelola Google dibuat dengan setiap rilis Kf, mengikuti proses buildpack standar. Image builder menggabungkan daftar buildpack V3 yang dibuat oleh proses yang sama dengan yang digunakan dengan perintah kf wrap-v2-buildpack
. Image buildpack V3 dibuat menggunakan image buildpack V2 standar. Penting untuk dicatat bahwa buildpack V3 tidak berisi biner dari buildpack V2 yang direferensikan. Sebagai gantinya, image buildpack V2 direferensikan, dan bit-nya akan didownload pada waktu build Aplikasi (dengan menjalankan kf push
).
Pada waktu build Aplikasi, buildpack V2 didownload dari repositori git yang sesuai. Saat deteksi V3 berjalan, ini didelegasikan ke skrip deteksi V2 yang didownload. Untuk grup buildpack pertama yang lulus deteksi, grup akan melanjutkan ke langkah build, yang mendelegasikan eksekusi build ke skrip builder V2 yang didownload.
Buildpack V2 berikut didukung dalam stack kf-v2-to-v3-shim
:
Buildpack | Repositori Git |
---|---|
java_buildpack | https://github.com/cloudfoundry/java-buildpack |
dotnet_core_buildpack | https://github.com/cloudfoundry/dotnet-core-buildpack |
nodejs_buildpack | https://github.com/cloudfoundry/nodejs-buildpack |
go_buildpack | https://github.com/cloudfoundry/go-buildpack |
python_buildpack | https://github.com/cloudfoundry/python-buildpack |
binary_buildpack | https://github.com/cloudfoundry/binary-buildpack |
nginx_buildpack | https://github.com/cloudfoundry/nginx-buildpack |
Opsi 1: Migrasikan Aplikasi yang dibuat dengan buildpack V2 standar
Untuk membuat Aplikasi dengan stack kf-v2-to-v3-shim
, gunakan perintah berikut:
kf push myapp --stack kf-v2-to-v3-shim
Stack kf-v2-to-v3-shim
akan otomatis mendeteksi runtime dengan buildpack V2 yang digabungkan. Image Aplikasi yang dihasilkan dibuat menggunakan standar V3 dan pipeline build, tetapi merupakan builder dari buildpack V2 yang setara.
Opsi 2: Migrasikan Aplikasi yang dibuat dengan buildpack V2 khusus
Kf memiliki alat migrasi buildpack yang dapat mengambil buildpack V2 dan menggabungkannya dengan buildpack V3. Buildpack yang digabungkan kemudian dapat digunakan di mana pun 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
. Kode ini kemudian dapat digunakan untuk membuat builder dengan mengikuti dokumen membuat builder.
Subperintah ini menggunakan CLI berikut secara transparan:
go
git
pack
unzip
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 ada salah satu prioritas tinggi untuk organisasi Anda, hubungi Sales Rep Anda:
- Registry container pribadi untuk image builder V3.
- Penyimpanan dalam cache V3.
- Buildpack V2 yang memerlukan kredensial git.