Buildpack digunakan oleh Kf untuk mengubah kode sumber aplikasi menjadi image yang dapat dieksekusi. Buildpack Berbasis Cloud menggunakan Buildpack API v3 terbaru. Perusahaan secara aktif menambahkan dukungan v3 ke buildpack yang ada.
Kf mendukung buildpack yang sesuai dengan V2 dan V3 dari spesifikasi Buildpack API.
Membandingkan buildpack V2 dan V3
buildpack V2 | buildpack V3 | |
---|---|---|
Nama alternatif | Buildpack Cloud Foundry | Buildpack Berbasis Cloud (CNB), Gambar Builder |
Status | Sedang diganti | Saat ini |
Kepemilikan | Cloud Foundry | Buildpacks.io |
Tumpuk | Dibagikan oleh builder dan runtime | Secara opsional, berbeda untuk builder dan runtime |
Pengembangan lokal | Tidak mungkin | Ya, dengan pack CLI |
Buildpack kustom | Tersedia saat runtime | Harus dibuat dalam builder |
Siklus proses buildpack
Langkah | Cloud Foundry | Kf dengan buildpacks V2 | Kf dengan buildpacks V3 |
---|---|---|---|
Lokasi sumber | Layanan BITS | Container registry | Container registry |
Lokasi buildpack | BOSH/HTTP | HTTP | Container registry |
Lokasi tumpukan | BOSH | Container registry | Container registry |
Hasil | Droplet (Biner aplikasi tanpa stack) | Gambar (Droplet pada tumpukan) | Gambar |
Runtime | Tetesan terpaku di atas tumpukan dan berlari | Jalankan gambar yang dihasilkan | Jalankan gambar yang dihasilkan |
Kf always menghasilkan image penuh yang dapat dieksekusi sebagai hasil dari proses build-nya. Di sisi lain, Cloud Foundry menghasilkan bagian dari image yang dapat dieksekusi pada waktu build dan sisanya ditambahkan saat runtime.
Kf memilih untuk mengikuti model yang selalu memproduksi gambar penuh karena alasan berikut:
- Gambar dapat diekspor, dijalankan secara lokal, dan diperiksa secara statis
- Keamanan dan pengauditan yang lebih baik dengan alat seperti otorisasi biner
- Deployment aplikasi dapat direproduksi
Kf dan buildpack
Kf menyimpan daftar global buildpack dan stack-nya di ConfigMap config-defaults
di Namespace kf
. Modifikasi properti buildpack dan stack harus dilakukan di Resource Kustom kfsystem
. Operator Kf akan otomatis memperbarui config-defaults
ConfigMap berdasarkan nilai yang ditetapkan di kfsystem
.
Setiap Ruang mencerminkan buildpack ini di kolom statusnya.
Untuk Ruang bernama buildpack-docs
, Anda dapat menjalankan perintah berikut untuk melihat konfigurasi Ruang lengkap:
kf space buildpack-docs
Getting Space buildpack-docs API Version: kf.dev/v1alpha1 Kind: Space Metadata: Creation Timestamp: 2020-02-14T15:09:52Z Name: buildpack-docs Self Link: /apis/kf.dev/v1alpha1/spaces/buildpack-docs UID: 0cf1e196-4f3c-11ea-91a4-42010a80008d Status: Build Config: Buildpacks V2: - Name: staticfile_buildpack URL: https://github.com/cloudfoundry/staticfile-buildpack Disabled: false - Name: java_buildpack URL: https://github.com/cloudfoundry/java-buildpack Disabled: false Stacks V2: - Image: cloudfoundry/cflinuxfs3 Name: cflinuxfs3 Stacks V3: - Build Image: cloudfoundry/cnb:cflinuxfs3 Description: A large Cloud Foundry stack based on Ubuntu 18.04 Name: org.cloudfoundry.stacks.cflinuxfs3 Run Image: cloudfoundry/run:full-cnb
Di bagian Build Config
, ada tiga kolom yang harus dilihat:
- Buildpacks V2 berisi daftar buildpack yang kompatibel dengan V2 sesuai urutannya
- Stack V2 menunjukkan stack yang dapat dipilih untuk memicu build buildpack V2
- Stack V3 menunjukkan stack yang dapat dipilih untuk memicu build buildpack V3
Anda juga dapat mencantumkan stack dengan kf stacks
:
kf stacks
Getting stacks in Space: buildpack-docs Version Name Build Image Run Image Description V2 cflinuxfs3 cloudfoundry/cflinuxfs3 cloudfoundry/cflinuxfs3 V3 org.cloudfoundry.stacks.cflinuxfs3 cloudfoundry/cnb:cflinuxfs3 cloudfoundry/run:full-cnb A large Cloud Foundry stack based on Ubuntu 18.04
Karena image build V3 sudah memiliki buildpack bawaan, Anda harus menggunakan kf buildpacks
untuk mendapatkan daftar:
kf buildpacks
Getting buildpacks in Space: buildpack-docs Buildpacks for V2 stacks: Name Position URL staticfile_buildpack 0 https://github.com/cloudfoundry/staticfile-buildpack java_buildpack 1 https://github.com/cloudfoundry/java-buildpack V3 Stack: org.cloudfoundry.stacks.cflinuxfs3: Name Position Version Latest org.cloudfoundry.jdbc 0 v1.0.179 true org.cloudfoundry.jmx 1 v1.0.180 true org.cloudfoundry.go 2 v0.0.2 true org.cloudfoundry.tomcat 3 v1.1.102 true org.cloudfoundry.distzip 4 v1.0.171 true org.cloudfoundry.springboot 5 v1.1.2 true ...
Menyesuaikan buildpack V3
Anda dapat menyesuaikan buildpack yang tersedia untuk developer dengan membuat image builder Anda sendiri dengan buildpack yang harus mereka akses. Anda juga bisa menggunakan gambar builder yang diterbitkan oleh penulis lain.
Gunakan gambar pembuat pihak ketiga
Daftar stack CNB yang dipublikasikan tersedia dari
Buildpack CLI pack
.
Pada saat penulisan ini, pack suggest-stacks
menghasilkan:
pack suggest-stacks
Stacks maintained by the community:
Stack ID: heroku-18 Description: The official Heroku stack based on Ubuntu 18.04 Maintainer: Heroku Build Image: heroku/pack:18-build Run Image: heroku/pack:18
Stack ID: io.buildpacks.stacks.bionic Description: A minimal Cloud Foundry stack based on Ubuntu 18.04 Maintainer: Cloud Foundry Build Image: cloudfoundry/build:base-cnb Run Image: cloudfoundry/run:base-cnb
Stack ID: org.cloudfoundry.stacks.cflinuxfs3 Description: A large Cloud Foundry stack based on Ubuntu 18.04 Maintainer: Cloud Foundry Build Image: cloudfoundry/build:full-cnb Run Image: cloudfoundry/run:full-cnb
Stack ID: org.cloudfoundry.stacks.tiny Description: A tiny Cloud Foundry stack based on Ubuntu 18.04, similar to distroless Maintainer: Cloud Foundry Build Image: cloudfoundry/build:tiny-cnb Run Image: cloudfoundry/run:tiny-cnb
Untuk memodifikasi Kf agar dapat menggunakan stack yang dipublikasikan oleh Heroku, edit Resource Kustom kfsystem
, yang akan otomatis mengupdate config-defaults
ConfigMap di Namespace kf
.
Tambahkan entri ke kunci spaceStacksV3
seperti berikut:
kubectl edit kfsystem kfsystem
spaceStacksV3: | - name: org.cloudfoundry.stacks.cflinuxfs3 description: A large Cloud Foundry stack based on Ubuntu 18.04 buildImage: cloudfoundry/cnb:cflinuxfs3 runImage: cloudfoundry/run:full-cnb - name: heroku-18 description: The official Heroku stack based on Ubuntu 18.04 buildImage: heroku/pack:18-build runImage: heroku/pack:18
Lalu, jalankan stacks
lagi:
kf stacks
Getting stacks in Space: buildpack-docs Version Name Build Image Run Image Description V2 cflinuxfs3 cloudfoundry/cflinuxfs3 cloudfoundry/cflinuxfs3 V3 org.cloudfoundry.stacks.cflinuxfs3 cloudfoundry/cnb:cflinuxfs3 cloudfoundry/run:full-cnb A large Cloud Foundry stack based on Ubuntu 18.04 V3 heroku-18 heroku/pack:18-build heroku/pack:18 The official Heroku stack based on Ubuntu 18.04
Membuat gambar builder Anda sendiri
Buildpack CLI pack
digunakan untuk membuat image builder Anda sendiri. Anda dapat mengikuti dokumentasi pack
Bekerja dengan builder menggunakan create-builder
untuk membuat image builder Anda sendiri. Setelah dibuat, kirim ke
container registry dan tambahkan ke Resource Kustom kfsystem
.
Menetapkan stack default
Aplikasi akan diberi stack default jika tidak disediakan dalam manifesnya. Tumpukan default adalah yang pertama dalam daftar tumpukan V2 atau V3. Kecuali jika diganti, stack V2 dipilih untuk kompatibilitas dengan Cloud Foundry.
Anda dapat memaksa Kf untuk menggunakan stack V3, bukan V2, dengan menetapkan kolom spaceDefaultToV3Stack
di Resource Kustom kfsystem
menjadi "true"
(kfsystem
secara otomatis memperbarui kolom spaceDefaultToV3Stack
yang sesuai di config-defaults
ConfigMap):
kubectl edit kfsystem kfsystem
spaceDefaultToV3Stack: "true"
Opsi ini juga dapat diubah per Ruang dengan mengubah setelan kolom spec.buildConfig.defaultToV3Stack
menjadi true
atau false
. Jika tidak disetel,
nilai dari ConfigMap config-defaults
akan digunakan.
Nilai config-defaults untuk spaceDefaultToV3Stack |
spec.buildConfig.defaultToV3Stack untuk ruang |
Tumpukan default |
---|---|---|
tidak disetel | tidak disetel | V2 |
"false" |
tidak disetel | V2 |
"true" |
tidak disetel | V3 |
apa pun | false |
V2 |
apa pun | true |
V3 |