Skaffold adalah alat command line yang memfasilitasi pengembangan berkelanjutan untuk aplikasi berbasis Kubernetes. Skaffold menangani alur kerja untuk mem-build, mendorong, dan men-deploy aplikasi Anda, serta menyediakan elemen penyusun untuk membuat pipeline CI/CD. Skaffold adalah mesin yang mendukung Cloud Code.
Project Skaffold biasanya mulai menggunakan konfigurasi skaffold.yaml
tunggal untuk menjelaskan cara membangun dan men-deploy aplikasi. Seiring dengan berkembangnya project, sebaiknya Anda membagi pipeline aplikasi menjadi beberapa bagian terpisah.
Skaffold mendukung penentuan beberapa dependensi konfigurasi, baik yang ditempatkan bersama dalam file skaffold.yaml
yang sama maupun dipisahkan menggunakan pemisah dokumen YAML (---
), atau ditempatkan dalam file skaffold.yaml
terpisah yang direferensikan dari file skaffold.yaml
dengan level yang lebih tinggi. Konfigurasi
dapat dibuat menjadi modul dengan memberinya nama menggunakan
kolom .metadata.name
.
Dengan menggunakan modul, Anda dapat mengembangkan dan men-debug bagian-bagian aplikasi secara independen. Dependensi dapat ditentukan antara file konfigurasi dan modul tertentu. Untuk mengetahui langkah-langkah menggunakan fitur ini, lihat Mengembangkan bagian aplikasi secara independen.
Men-debug aplikasi dengan modul Skaffold
Anda dapat mengembangkan dan men-debug seluruh aplikasi secara berulang atau sekumpulan modul yang ditentukan. Skaffold mengelola dependensi modul dan urutan deployment-nya.
Memulai dengan contoh modul Skaffold
Untuk memilih modul bagi aplikasi Anda, lihat Mem-build modul Skaffold tertentu dan dependensinya.
Jika Anda belum menggunakan modul Skaffold dan ingin menguji fitur ini
dengan contoh, lihat
Contoh Buku Tamu, yang
dimodulasi menjadi frontend
dan backend
.
Untuk mengetahui contoh aplikasi perusahaan besar, yang dikembangkan menggunakan berbagai teknologi dan bahasa, serta menggunakan modul Skaffold, lihat contoh Bank of Anthos.
Kasus penggunaan umum
Bagian ini menguraikan beberapa contoh kasus penggunaan umum yang menunjukkan berbagai skenario kapan dan bagaimana Anda dapat menggunakan modul di IDE.
Pengembangan microservice
Anda adalah developer frontend yang paling sering mengerjakan modul
frontend
. Sebagai microservice, frontend
tidak memiliki dependensi library atau kode eksplisit pada repo backend
, tetapi memerlukan backend
untuk di-deploy dan berjalan di cluster.
Anda menggunakan project berbasis Skaffold yang berisi definisi modul frontend
untuk men-deploy dan men-debug dari IDE Cloud Code ke cluster pengembangan bersama tempat tim backend juga men-deploy layanan mereka. Tim DevOps mengelola cluster bersama ini.
Anda biasanya tidak menggunakan atau men-debug kode backend
atau mengupdate konfigurasi Kubernetes. Skaffold mem-build dan men-deploy konfigurasi lain yang diperlukan frontend
. Anda mengonfigurasi konfigurasi deployment Cloud Code untuk melakukan iterasi hanya pada modul frontend
.
Anda juga dapat men-deploy frontend
dan backend
ke cluster lokal untuk mendapatkan pengalaman iterasi yang lebih cepat.
Pengembangan dan proses debug microservice lintas batas
Jika beberapa microservice perlu di-debug bersama-sama, Anda dapat:
- Buka direktori induk tempat semua subdirektori dengan kode sumber modul berada relatif terhadap satu sama lain
- Pilih file
skaffold.yaml
root untuk deployment (konfigurasi) - Konfigurasi konfigurasi deployment Cloud Code agar hanya melakukan iterasi pada modul
frontend
danbackend
yang tersedia secara lokal (dan modul konfigurasi Kubernetes masing-masing jika ada perubahan).
Anda juga dapat memiliki file skaffold.yaml
root terpisah untuk pengembangan
lokal yang mencakup server data statis.
Pengeditan YAML modul cerdas
Anda adalah engineer DevOps yang membangun repositori template untuk tim developer microservice yang menggunakan modul Skaffold. Anda ingin memastikan tidak ada error dalam definisi modul tanpa menjalankan Skaffold secara manual (seperti dependensi siklik atau nama modul yang tidak unik). Anda menggunakan IDE Cloud Code untuk mengedit file konfigurasi YAML Skaffold.
Langkah selanjutnya
- Mengembangkan bagian aplikasi secara independen
- Men-debug aplikasi Kubernetes
- Menjalankan aplikasi Kubernetes