Dokumen ini menjelaskan cara mulai menggunakan Skaffold sebagai bagian dari Cloud Deploy, termasuk:
- Mengonfigurasi Skaffold untuk digunakan dengan pipeline pengiriman Cloud Deploy
- Menggunakan Skaffold dan Cloud Deploy dengan alat rendering pihak ketiga, seperti Helm dan Kustomize
- Secara opsional, menggunakan Skaffold untuk pengembangan lokal
- Secara opsional, menggunakan Skaffold untuk continuous integration dan deployment berkelanjutan (CI/CD)
Mengapa Skaffold?
Ingin tahu alasan Cloud Deploy menggunakan Skaffold, dan mengapa Anda perlu mengelola konfigurasi Skaffold? Lanjutkan membaca.
Saya berpengalaman dengan CI/CD, tetapi saat ini saya tidak menggunakan Skaffold
Skaffold adalah alat command line open source untuk meningkatkan produktivitas bagi developer. Produk ini mengorkestrasi 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 render.
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 progres 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, gambar akan dibangun, diuji, dan di-deploy ke cluster (atau Minikube) saat Anda mengubah kode. Ekstensi Cloud Code for VS Code dan Cloud Code for IntelliJ mengintegrasikan Skaffold ke dalam Visual Studio Code dan IDE JetBrains, untuk pengembangan berkelanjutan.
Skaffold untuk continuous delivery
Anda juga dapat menggunakan Skaffold untuk continuous delivery,
dengan langkah build, deploy, render, dan terapkan. Cloud Deploy menggunakan kemampuan render dan penerapan Skaffold. Untuk menggunakan Cloud Deploy, Anda memerlukan setidaknya file konfigurasi skaffold.yaml
yang valid.
Melalui Skaffold, Anda juga dapat melakukan integrasi dengan alat pengelolaan-manifes
pihak ketiga, seperti Helm, dan Kustomize.
Penggunaan Skaffold dengan cara ini memungkinkan Anda menggunakan fitur-fitur alat tersebut untuk merender
manifes. kubectl
tetap menjadi deployer untuk manifes ini.
Saya baru dalam men-deploy ke Kubernetes
Dengan Skaffold, Anda dapat mengonfigurasi kumpulan dasar manifes untuk semua deployment. Selanjutnya Anda dapat menggunakan mesin rendering Skaffold, melalui Cloud Deploy, untuk merender, kemudian 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 pembuat template manifes yang umum, seperti Helm dan Kustomize.
Apa saja 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 oleh semua konfigurasi
skaffold.yaml
:apiVersion: skaffold/v4beta7 kind: Config
Stanza
manifests
, untuk GKE, GKE Enterprise, atau Cloud Run yang mencantumkan semua manifes Kubernetes mentah (kecuali jika Anda menggunakan alat pengelolaan manifes, seperti Helm atau Kustomize).Berikut ini contoh penggunaan manifes Kubernetes mentah:
manifests: rawYaml: - deployment.yaml
Jika 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 cara mengonfigurasi Skaffold agar dapat menggunakan alat ini.
Untuk contoh Helm dan Kustomize, lihat Mengelola manifes
Stanza
deploy
, dengandeploy.kubectl
, untuk men-deploy ke GKE atau GKE Enterprise, ataudeploy.cloudrun
untuk men-deploy ke Cloud Run.Untuk target GKE dan GKE Enterprise:
deploy: kubectl: {}
Stanza deploy men-deploy manifes aplikasi yang disediakan dalam stanza manifes.
Untuk target Cloud Run:
deploy: cloudrun: {}
Stanza deploy men-deploy manifes aplikasi yang disediakan dalam stanza manifes.
Jika Anda menggunakan target kustom, skaffold.yaml
harus memiliki header (apiVersion
dan kind:
), serta
tindakan kustom
yang akan digunakan target kustom jika jenis target kustom belum
mereferensikan
konfigurasi Skaffold jarak jauh.
Membuat file skaffold.yaml
Cloud Deploy menggunakan Skaffold untuk merender dan men-deploy aplikasi Anda.
Untuk setiap rilis, Anda harus menyediakan minimal file skaffold.yaml
yang
mengidentifikasi manifes yang akan digunakan. Lihat
bagian sebelumnya
untuk panduan tentang hal-hal yang perlu disertakan dalam file ini.
Minta Cloud Deploy membuat skaffold.yaml
Anda
Jika 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 staging sumber Cloud Storage setelah rilis selesai.
Perintah berikut menyertakan flag --from-k8s-manifest
, dengan meneruskan manifes Kubernetes. Cloud Deploy menggunakan informasi dalam
manifes 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
Penggunaan salah satu tanda ini dengan tanda --skaffold-file
atau
tanda --source
akan menghasilkan error.
Menggunakan file skaffold.yaml
yang dihasilkan
skaffold.yaml
yang dihasilkan cocok untuk orientasi, pembelajaran, dan demonstrasi Cloud Deploy. Setelah memahami Cloud Deploy, dan untuk workload produksi, Anda mungkin menginginkan konfigurasi Skaffold yang dapat membedakan berbagai 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 dalam
arsip sumber rendering, bukan file yang dirender. Sumber rendering
tersedia untuk didownload dari tab Artefak pada halaman **Detail rilis **.
skaffold.yaml
yang dihasilkan ini disertakan dalam sumber render yang disimpan di bucket Cloud Storage.Anda dapat melihat file ini dengan mendownload file
.tar.gz
dan mengekstraknya.skaffold.yaml
yang dirender tersedia di Artefak target.Di bagian Target artefak, klik View 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 akan mengamati file sumber Anda, lalu saat mendeteksi perubahan,
Skaffold akan membuat ulang image, menguji ulang, dan men-deploy ulang container ke
cluster minikube (misalnya) di komputer lokal Anda.
Jika 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 deploy 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, serta men-deploy aplikasi Anda ke target yang ditentukan, berdasarkan image container yang dibuat 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 membuat persetujuan lebih mudah. 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 Anda. 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.
Tambahkan dukungan Kustomize ke skaffold.yaml
Anda
Pengintegrasian konfigurasi Kustomize dengan konfigurasi Cloud Deploy/Skaffold terdiri dari:
Sertakan file
kustomization.yaml
di antara file konfigurasi Anda.Anda dapat menyimpan file konfigurasi di direktori lokal atau di bucket Cloud Storage.
Dalam file
skaffold.yaml
Anda, buat stanzadeploy
untuk setiap profil.Anda juga dapat memiliki stanza
deploy
di 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
deploy
per profil, dan menggunakan aplikasi contoh fiktif yang disebutmy-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 menunjukkan profil untuk pengembangan lokal. Di setiap profil, ada stanzadeploy.kustomize
dengan jalur yang mengarah ke lokasi kustomisasi yang akan digunakan untuk target tersebut.
Menambahkan dukungan Helm ke skaffold.yaml
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 diagram atau diagram 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, tambahkan 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 saja 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 bagibuild
,render
,apply
, dan seterusnya, tidak didukung. Modul statis didukung. Di Helm, kemampuan untuk membuat namespace jika belum ada.
Langkah selanjutnya
Kunjungi situs Skaffold untuk mengetahui cara kerjanya dan apa yang dapat dilakukannya untuk Anda.
Berlatih menggunakan Cloud Deploy dengan profil Kustomize dan Skaffold.
Pelajari cara Cloud Deploy memilih versi Skaffold yang akan digunakan, kapan versi Skaffold berubah, dan cara menentukan versi yang digunakan.
Pelajari cara menggunakan profil Skaffold dengan alat pengelolaan manifes lanjutan seperti Helm, Kustomize, dan kpt.