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 (paket), dan komunitas yang berkembang yang berinovasi di berbagai bahasa dan framework. Google Cloud juga memiliki kumpulan buildpack Google Cloud 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
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 Stack V3 ke buildpack Google Cloud:
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 kini 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 Buildpack V2 ke V3
Kf menyediakan stack V3 untuk mem-build aplikasi yang di-build dengan buildpack V2 standar, menggunakan stack bernama kf-v2-to-v3-shim
. Stack kf-v2-to-v3-shim
dibuat dengan mengikuti API buildpack 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. Perlu diperhatikan bahwa buildpack V3 tidak berisi biner buildpack V2 yang dirujuk. Sebagai gantinya, image buildpack V2 direferensikan, dan bit didownload pada waktu build Aplikasi (dengan menjalankan kf push
).
Pada waktu build Aplikasi, buildpack V2 didownload dari repositori git yang sesuai. Saat berjalan, deteksi V3 akan didelegasikan ke skrip deteksi V2 yang didownload. Untuk grup buildpack pertama yang lulus deteksi, grup tersebut akan melanjutkan ke langkah build, yang mendelegasikan eksekusi build ke skrip builder V2 yang didownload.
Buildpack V2 berikut didukung di 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: Memigrasikan Aplikasi yang di-build dengan buildpack V2 standar
Untuk mem-build 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 builder dari buildpack V2 yang setara.
Opsi 2: Memigrasikan Aplikasi yang dibuat dengan buildpack V2 kustom
Kf memiliki alat migrasi buildpack yang dapat mengambil buildpack V2 dan menggabungkannya dengan buildpack 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
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 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.