Dokumen ini menjelaskan cara mulai menggunakan Skaffold sebagai bagian dari Cloud Deploy, termasuk hal-hal berikut:
- Mengonfigurasi Skaffold untuk digunakan dengan pipeline pengiriman Cloud Deploy
- Menggunakan Skaffold dan Cloud Deploy dengan alat rendering pihak ketiga, seperti Helm dan Kustomize
- Opsional, menggunakan Skaffold untuk pengembangan lokal
- Secara opsional, gunakan Skaffold untuk continuous integration dan continuous deployment (CI/CD)
Mengapa Skaffold?
Ingin tahu alasan Cloud Deploy menggunakan Skaffold, dan alasan Anda perlu mengelola konfigurasi Skaffold? Lanjutkan membaca.
Saya berpengalaman dengan CI/CD, tetapi saat ini tidak menggunakan Skaffold
Skaffold adalah alat command line open source untuk meningkatkan produktivitas developer. Skaffold melakukan orkestrasi pengembangan berkelanjutan, continuous integration (CI), dan continuous delivery (CD).
Skaffold menyediakan konfigurasi deklaratif dan portabel, menggunakan arsitektur yang dapat dicocokkan, sehingga Anda dapat menggunakan berbagai alat untuk fase rendering.
Saat rilis dibuat, Cloud Deploy memanggil Skaffold untuk merender manifes Anda. Pada waktu deployment, Cloud Deploy memanggil Skaffold lagi untuk menerapkan manifes tersebut guna men-deploy aplikasi Anda ke setiap target dalam progresi Anda. Setelah deployment, Skaffold melakukan health check untuk memantau runtime target agar deployment berhasil.
Skaffold untuk pengembangan berkelanjutan
Saat Anda menggunakan Skaffold untuk pengembangan berkelanjutan, image akan dibangun, diuji, dan di-deploy ke cluster (atau Minikube) saat Anda mengubah kode. Ekstensi IDE Cloud Code untuk VS Code dan Cloud Code untuk IntelliJ mengintegrasikan Skaffold ke dalam Visual Studio Code dan JetBrains IDE untuk pengembangan berkelanjutan.
Skaffold untuk continuous delivery
Anda juga dapat menggunakan Skaffold untuk continuous delivery,
dengan langkah-langkah build, deploy, render, dan terapkan. Cloud Deploy menggunakan kemampuan render dan terapkan Skaffold. Untuk menggunakan Cloud Deploy, Anda memerlukan setidaknya
file konfigurasi skaffold.yaml yang valid.
Melalui Skaffold, Anda juga dapat berintegrasi dengan alat pengelolaan manifes pihak ketiga, seperti Helm dan Kustomize.
Dengan menggunakan Skaffold seperti ini, Anda dapat menggunakan fitur alat tersebut untuk merender
manifest. kubectl tetap menjadi deployer untuk manifes ini.
Saya baru mengenal deployment ke Kubernetes
Dengan Skaffold, Anda dapat mengonfigurasi kumpulan manifes dasar untuk semua deployment Anda. Anda kemudian dapat menggunakan mesin rendering Skaffold, melalui Cloud Deploy, untuk merender, lalu men-deploy setiap manifes khusus deployment dari salah satu manifes dasar tersebut.
Baca selengkapnya tentang mengelola manifes, termasuk contoh penggunaan Skaffold dan Cloud Deploy dengan alat pembuatan template manifes umum, seperti Helm dan Kustomize.
Apa yang diperlukan agar Cloud Deploy berfungsi?
Untuk menggunakan pipeline pengiriman Cloud Deploy dasar, file konfigurasi
skaffold.yaml memerlukan setidaknya konfigurasi berikut:
Informasi header yang diperlukan semua konfigurasi
skaffold.yaml:apiVersion: skaffold/v4beta7 kind: ConfigBagian
manifests, untuk GKE, Cluster terlampir GKE, atau Cloud Run yang mencantumkan semua manifes Kubernetes mentah (kecuali jika Anda menggunakan alat pengelolaan manifes, seperti Helm atau Kustomize).Berikut adalah contoh yang menggunakan manifes Kubernetes mentah:
manifests: rawYaml: - deployment.yamlJika Anda berencana menggunakan perender (seperti Helm atau Kustomize) untuk merender manifes, lihat Menambahkan dukungan Helm ke skaffold.yaml dan Menambahkan dukungan Kustomize ke skaffold.yaml untuk mendapatkan panduan tentang cara mengonfigurasi Skaffold agar menggunakan alat ini.
Untuk contoh Helm dan Kustomize, lihat Mengelola manifes
Bagian
deploy, dengandeploy.kubectl, untuk men-deploy ke GKE atau ke cluster terlampir GKE, ataudeploy.cloudrununtuk men-deploy ke Cloud Run.Untuk cluster terpasang GKE dan GKE:
deploy: kubectl: {}Stanza deploy men-deploy manifes aplikasi yang disediakan di stanza manifes.
Untuk target Cloud Run:
deploy: cloudrun: {}Stanza deploy men-deploy manifes aplikasi yang disediakan di stanza manifes.
Jika Anda menggunakan target kustom, skaffold.yaml Anda harus memiliki header (apiVersion dan kind:), ditambah tindakan kustom yang akan digunakan target kustom jika jenis target kustom belum mereferensikan konfigurasi Skaffold jarak jauh.
Buat file skaffold.yaml
Cloud Deploy menggunakan Skaffold untuk merender dan men-deploy aplikasi Anda.
Untuk setiap rilis, Anda harus menyediakan setidaknya satu file skaffold.yaml yang
mengidentifikasi manifes yang akan digunakan. Lihat
bagian sebelumnya
untuk mendapatkan panduan tentang konten yang harus ada dalam file ini.
Meminta Cloud Deploy membuat skaffold.yaml Anda
Jika Anda tidak memiliki file skaffold.yaml, tetapi memiliki satu manifes Kubernetes atau file definisi layanan Cloud Run, Cloud Deploy dapat membuat file skaffold.yaml untuk Anda.
File Skaffold yang dihasilkan akan tersedia di direktori penyiapan sumber Cloud Storage setelah rilis selesai.
Perintah berikut menyertakan flag --from-k8s-manifest, yang meneruskan manifes Kubernetes. Cloud Deploy menggunakan informasi dalam
manifest untuk membuat skaffold.yaml, yang kemudian digunakan untuk rilis.
gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION
Untuk membuat skaffold.yaml dari YAML layanan Cloud Run,
gunakan perintah yang sama, tetapi dengan --from-run-manifest, bukan
--from-k8s-manifest
Menggunakan salah satu flag ini dengan flag --skaffold-file atau flag --source akan menghasilkan error.
Menggunakan file skaffold.yaml yang dihasilkan
skaffold.yaml yang dihasilkan cocok untuk proses aktivasi, pembelajaran, dan
demonstrasi Cloud Deploy. Setelah Anda terbiasa dengan Cloud Deploy,
dan untuk workload produksi, Anda mungkin menginginkan konfigurasi Skaffold yang
membedakan target Anda (menggunakan profil Skaffold).
Saat menggunakan file skaffold.yaml yang dihasilkan sebagai titik awal untuk membuat konfigurasi Skaffold yang berbeda, pastikan Anda menggunakan file di arsip sumber rendering, bukan file yang dirender. Sumber rendering tersedia untuk didownload dari tab Artefak di halaman Detail rilis.
skaffold.yamlyang dihasilkan ini disertakan dalam sumber render yang disimpan di bucket Cloud Storage.Anda dapat melihat file ini dengan mendownload file
.tar.gzdan mengekstraknya.skaffold.yamlyang dirender tersedia di Artefak target.Di bagian Target artefak, klik Lihat artefak.

Menggunakan Skaffold untuk pengembangan lokal
Salah satu keunggulan Skaffold adalah Anda dapat menggunakannya untuk pengembangan
lokal, dan untuk CI/CD.
Dalam mode dev, Skaffold memantau file sumber Anda, dan saat mendeteksi perubahan, Skaffold akan membangun ulang image, menguji ulang, dan men-deploy ulang container ke cluster minikube (misalnya) di mesin lokal Anda.
Saat menggunakan Skaffold dengan cara ini, Anda dapat menggunakan perintah yang sama secara lokal seperti untuk deployment jarak jauh.
Jika menggunakan Skaffold untuk pengembangan lokal, Anda dapat menentukan profil Skaffold terpisah untuk target, dan stanza deployment default untuk pengembangan lokal.
Saat Anda menghentikan mode dev, Skaffold akan membersihkan artefak yang di-deploy dari cluster.
Menggunakan Skaffold untuk CI/CD
Selain menggunakan Skaffold untuk build dan deployment lokal berkelanjutan, Anda dapat menggunakan Skaffold untuk CI/CD. Cloud Deploy menggunakan fitur CI/CD di Skaffold untuk merender dan menerapkan manifes Anda serta men-deploy aplikasi ke target yang ditentukan, mengingat image container yang dibangun menggunakan alat CI seperti Cloud Build dan registry image seperti Artifact Registry.
Render, deploy, dan terapkan
Skaffold memisahkan proses rendering manifes dari deployment.
Cloud Deploy memanggil skaffold render,
untuk merender manifes, dan skaffold apply
untuk menerapkannya ke target.
Pemisahan antara render dan penerapan ini memungkinkan Anda merekam status deklaratif lengkap aplikasi dalam konfigurasi, sehingga dapat diterapkan dengan aman dan berulang (misalnya, untuk rollback). Teknik ini juga mempermudah persetujuan. Karena manifes dirender untuk semua target sebelum peluncuran pertama, Anda dapat melihat YAML yang dirender yang akan diterapkan ke setiap target.
Cloud Deploy tidak mendukung penggunaan deployer lain untuk men-deploy aplikasi Anda. Namun, Anda dapat menggunakan alat seperti Helm atau Kustomize untuk rendering.
Untuk mempelajari lebih lanjut cara Cloud Deploy men-deploy menggunakan kubectl sebagai
deployer, lihat Arsitektur Layanan Cloud Deploy.
Tentang profil Skaffold
Anda dapat membuat profil Skaffold terpisah—yang diidentifikasi di
skaffold.yaml, dalam stanza profiles:.
Saat menggunakan profil Skaffold dengan Cloud Deploy, Anda dapat membuat
profil terpisah untuk semua atau beberapa target. Misalnya, profil
yang berbeda untuk dev, staging, dan prod.
Profil tidak diperlukan untuk menggunakan Skaffold di Cloud Deploy, tetapi berguna untuk menentukan penyesuaian manifes di antara target Anda, misalnya menggunakan file kustomization.yaml Kustomize yang berbeda per target.
Menambahkan dukungan Kustomize ke skaffold.yaml Anda
Mengintegrasikan konfigurasi Kustomize dengan konfigurasi Cloud Deploy/Skaffold terdiri dari langkah-langkah berikut:
Sertakan file
kustomization.yamldi antara file konfigurasi Anda.Anda dapat menyimpan file konfigurasi di direktori lokal atau di bucket Cloud Storage.
Di file
skaffold.yaml, buat stanzadeployuntuk setiap profil.Anda juga dapat memiliki stanza
deploydi luar profil yang ditentukan, jika Anda tidak menggunakan profil atau untuk konfigurasi deployment default yang tidak terikat dengan profil.Berikut adalah contoh konfigurasi Skaffold yang menampilkan stanza
deployper profil, dan menggunakan aplikasi contoh fiktif bernamamy-app:apiVersion: skaffold/v4beta7 kind: Config build: artifacts: - image: my-app-web-profiles context: my-app-web-profiles - image: my-app-application-profiles context: my-app-application-profiles googleCloudBuild: projectId: ${PROJECT_ID} profiles: - name: local manifests: kustomize: paths: - my-app-application-profiles/kubernetes/local - name: test manifests: kustomize: paths: - my-app-application-profiles/kubernetes/test - name: staging manifests: kustomize: paths: - my-app-application-profiles/kubernetes/staging - name: prod manifests: kustomize: paths: - my-app-application-profiles/kubernetes/prod deploy: kubectl: {}Konfigurasi Skaffold yang ditampilkan di sini memiliki profil terpisah untuk target
test,staging, danprod. Bagian ini juga menampilkan profil untuk pengembangan lokal. Di setiap profil, ada stanzadeploy.kustomizedengan jalur yang mengarah ke lokasi penyesuaian yang akan digunakan untuk target tersebut.
Menambahkan dukungan Helm ke skaffold.yaml Anda
Anda dapat menggunakan Helm untuk merender manifes. Cloud Deploy tidak menggunakan
Helm untuk men-deploy aplikasi Anda, dan hanya mendukung kubectl sebagai deployer.
Untuk menggunakan Helm, Anda memerlukan chart Helm atau beberapa chart Helm, yang disimpan di lokasi mana pun yang dapat Anda referensikan dari dalam skaffold.yaml. Lokasi ini dapat berada di sistem file, repositori, mungkin bersama dengan skaffold.yaml Anda, atau repositori Open Container Initiative (OCI).
Untuk menggunakan diagram Helm, Anda menambahkan stanza helm ke file
skaffold.yaml.
apiVersion: skaffold/v4beta7
kind: Config
build:
artifacts:
- image: skaffold-helm-image
manifests:
helm:
releases:
- name: skaffold-helm-image
chartPath: charts
deploy:
kubectl: {}
Referensi skaffold.yaml
menunjukkan apa yang diperlukan dalam stanza helm ini.
Fitur Skaffold yang tidak didukung
Fitur Skaffold berikut tidak dapat digunakan di Cloud Deploy:
-
Penggunaan
--module=untuk memilih modul tertentu untukbuild,render,apply, dan sebagainya, tidak didukung. Modul statis didukung. Di Helm, kemampuan untuk membuat namespace jika namespace belum ada.
Langkah berikutnya
Buka situs Skaffold untuk mengetahui cara kerjanya dan manfaatnya bagi Anda.
Berlatih menggunakan Cloud Deploy dengan profil Kustomize dan Skaffold.
Pelajari cara Cloud Deploy memilih versi alat yang akan digunakan dan cara menentukan versi yang sedang digunakan.
Pelajari cara menggunakan profil Skaffold dengan alat pengelolaan-manifes lanjutan seperti Helm, Kustomize, dan kpt.