In diesem Dokument werden die ersten Schritte mit Skaffold im Rahmen von Google Cloud Deploy beschrieben, darunter:
- Skaffold für die Verwendung mit einer Bereitstellungspipeline von Google Cloud Deploy konfigurieren
- Skaffold und Google Cloud Deploy mit Rendering-Tools von Drittanbietern wie Helm und Kustomize verwenden
- Optional mit Skaffold für die lokale Entwicklung
- Optional mit Skaffold für Continuous Integration und Continuous Deployment (CI/CD)
Vorteile von Skaffold
Sie möchten wissen, warum Google Cloud Deploy Skaffold verwendet und warum Sie eine Skaffold-Konfiguration verwalten müssen? Lesen Sie weiter.
Ich habe Erfahrung mit CI/CD, aber ich verwende Skaffold derzeit nicht
Skaffold ist ein Open-Source-Befehlszeilentool zur Verbesserung der Produktivität für Entwickler. Es orchestriert die kontinuierliche Entwicklung, Continuous Integration (CI) und Continuous Delivery (CD).
Skaffold bietet eine deklarative, mobile Konfiguration in einer Plug-in-Architektur, mit der Sie verschiedene Tools für die Renderingphase verwenden können.
Wenn ein Release erstellt wird, ruft Google Cloud Deploy Skaffold auf, um Ihre Manifeste zu rendern. Zum Zeitpunkt des Deployments ruft Google Cloud Deploy noch einmal Skaffold auf, um diese Manifeste anzuwenden, um die Anwendung auf jedem Ziel im Fortschritt bereitzustellen. Nach der Bereitstellung führt Skaffold Systemdiagnosen aus, um die Ziellaufzeit auf eine erfolgreiche Bereitstellung zu überwachen.
Skaffold für die kontinuierliche Entwicklung
Wenn Sie Skaffold für die kontinuierliche Entwicklung verwenden, werden Images erstellt, getestet und in einem Cluster (oder Minikube) bereitgestellt, wenn Sie Ihren Code ändern. Die IDE-Erweiterungen Cloud Code for VS Code und Cloud Code for IntelliJ integrieren Skaffold in Visual Studio Code und JetBrains IDEs für die kontinuierliche Entwicklung.
Skaffold für Continuous Delivery
Sie können auch Skaffold für die kontinuierliche Bereitstellung mit Build-, Bereitstellungs-, Rendering- und Anwendungsschritten verwenden. Google Cloud Deploy verwendet die Rendering- und Anwendungsfunktionen von Skafold. Damit Sie Google Cloud Deploy verwenden können, benötigen Sie mindestens eine gültige skaffold.yaml
-Konfigurationsdatei.
Über Skaffold lassen sich auch Manifestverwaltungstools von Drittanbietern wie Helm und Kustomize einbinden.
Wenn Sie Skaffold auf diese Weise verwenden, können Sie die Funktionen dieser Tools zum Rendern von Manifesten verwenden. kubectl
bleibt der Bereitsteller für diese Manifeste.
Ich habe noch keine Erfahrung mit der Bereitstellung in Kubernetes.
Mit Skaffold können Sie einen Basissatz von Manifesten für alle Bereitstellungen konfigurieren. Anschließend können Sie das Rendering-Modul von Skaffold über Google Cloud Deploy verwenden, um jedes Deployment-spezifische Manifest aus einem dieser Basismanifeste zu rendern und dann bereitzustellen.
Weitere Informationen zum Verwalten von Manifesten, einschließlich Beispielen zur Verwendung von Skaffold und Google Cloud Deploy mit gängigen Manifestvorlagen, wie Helm und Kustomize.
Was ist erforderlich, damit Google Cloud Deploy funktioniert?
Wenn Sie eine einfache Google Cloud Deploy-Bereitstellungspipeline verwenden möchten, muss die Konfigurationsdatei skaffold.yaml
mindestens die folgende Konfiguration haben:
Für alle
skaffold.yaml
-Konfigurationen sind folgende Headerinformationen erforderlich:apiVersion: skaffold/v2beta28 Kind: Config
Eine
deploy
-Stanza mitdeploy.kubectl
für die Bereitstellung in GKE oder Anthos oderdeploy.cloudrun
für die Bereitstellung in Cloud Run.Für GKE:
deploy: kubectl: manifests: - ...
Eine Liste aller Kubernetes-Rohmanifeste in der Stanza
manifests
. Wenn Sie einen Renderer wie Helm oder Kustomize zum Rendern von Manifesten verwenden möchten, finden Sie unter Kustomize-Unterstützung zur Datei skaffold.yaml hinzufügen und Helm-Unterstützung zur Datei skaffold.yaml hinzufügen weitere Informationen zur Konfiguration von Skaffold für die Verwendung dieser Tools.Für Cloud Run:
metadata: name: manifests: rawYaml: - ... deploy: cloudrun: {}
skaffold.yaml
-Datei erstellen
Google Cloud Deploy verwendet Skaffold zum Rendern und Bereitstellen Ihrer Anwendungen.
Sie müssen mindestens eine skaffold.yaml
-Datei angeben, in der die zu verwendenden Manifeste angegeben sind. Beispiel:
apiVersion: skaffold/v2beta28
kind: Config
deploy:
kubectl:
manifests:
- MANIFEST
In dieser Konfiguration ist MANIFEST
der Pfad zu den Manifesten, die von Skaffold verarbeitet werden sollen.
skaffold.yaml
von Google Cloud Deploy generieren lassen
Wenn Sie keine skaffold.yaml
-Datei, aber ein einzelnes Kubernetes-Manifest oder eine Cloud Run-Dienstdefinitionsdatei haben, kann Google Cloud Deploy eine skaffold.yaml
-Datei für Sie generieren .
Die generierte Skaffold-Datei ist nach Abschluss des Release im Staging-Verzeichnis der Cloud Storage-Quelle verfügbar.
Der folgende Befehl enthält das Flag --from-k8s-manifest
, das das Kubernetes-Manifest übergibt. Google Cloud Deploy verwendet die Informationen im Manifest, um den skaffold.yaml
zu generieren, der dann für den Release verwendet wird.
gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION
Verwenden Sie denselben Befehl, um skaffold.yaml
aus einer Cloud Run-Dienst-YAML-Datei zu generieren, jedoch mit --from-run-manifest
anstelle von --from-k8s-manifest
.
Wenn Sie eines dieser Flags mit dem Flag --skaffold-file
oder --source
verwenden, wird ein Fehler generiert.
Generierte skaffold.yaml
-Datei verwenden
Das generierte skaffold.yaml
eignet sich zum Onboarding, Lernen und zur Demonstration von Google Cloud Deploy. Wenn Sie mit Google Cloud Deploy und Produktionsarbeitslasten vertraut sind, können Sie eine Skaffold-Konfiguration erstellen, die sich unter Verwendung von Skaffold-Profilen von Ihren Zielen unterscheidet.
Wenn Sie die generierte Datei skaffold.yaml
als Ausgangspunkt für die Erstellung einer eigenen differenzierten Skaffold-Konfiguration verwenden, achten Sie darauf, dass Sie die Datei im Rendering-Quellarchiv und nicht in der gerenderten Datei verwenden. Die Rendering-Quelle steht auf dem Tab Artefakte auf der Seite **Releasedetails ** zum Download zur Verfügung.
Dieser generierte
skaffold.yaml
-Wert ist in der Renderingquelle enthalten, die in einem Cloud Storage-Bucket gespeichert ist.Sie können diese Datei aufrufen, indem Sie die Datei
.tar.gz
herunterladen und extrahieren.Das gerenderte
skaffold.yaml
ist unter Zielartefakte verfügbar.Klicken Sie im Abschnitt Zielartefakte auf Artefakte ansehen.
Skaffold für die lokale Entwicklung verwenden
Eine der Stärken von Skaffold ist, dass Sie es für die lokale Entwicklung und für CI/CD verwenden können.
Im dev
-Modus beobachtet Skaffold Ihre Quelldateien. Wenn eine Änderung festgestellt wird, erstellt Skafold die Images neu, testet sie und stellt sie beispielsweise in einem Minikube-Cluster auf Ihrem lokalen Computer wieder bereit.
Wenn Sie Skaffold auf diese Weise verwenden, können Sie die gleichen Befehle lokal wie für die Remote-Bereitstellung verwenden.
Wenn Sie Skaffold für die lokale Entwicklung verwenden, können Sie separate Skaffold-Profile für Ihre Ziele und eine Standardbereitstellungs-Stanza für die lokale Entwicklung definieren.
Wenn Sie den Modus dev
beenden, bereinigt Skaffold bereitgestellte Artefakte aus dem Cluster.
Skaffold für CI/CD verwenden
Neben Skaffold für den kontinuierlichen lokalen Build und die Bereitstellung können Sie Skaffold für CI/CD verwenden. Google Cloud Deploy verwendet die CI/CD-Features in Skaffold, um Ihre Manifeste zu rendern und anzuwenden und Ihre Anwendung auf Ihre definierten Ziele bereitzustellen. Dazu werden Container-Images verwendet, die mit einem CI-Tool wie Cloud Build und einer Image-Registry wie Artifact Registry erstellt wurden.
Rendern, bereitstellen und anwenden
Skaffold trennt den Manifest-Rendering-Prozess vom Deployment.
Google Cloud Deploy ruft skaffold render
auf, um die Manifeste zu rendern, und skaffold apply
, um sie auf das Ziel anzuwenden.
Durch diese Trennung zwischen Rendering und Übernehmen können Sie den vollständigen deklarativen Status Ihrer Anwendung in der Konfiguration erfassen, sodass sie sicher und wiederholbar angewendet werden kann (z. B. für Rollbacks). Dieses Verfahren vereinfacht auch Genehmigungen. Da Manifeste für alle Ziele vor dem ersten Roll-out gerendert werden, können Sie die gerenderte YAML-Datei sehen, die auf jedes Ziel angewendet wird.
Google Cloud Deploy unterstützt die Bereitstellung anderer Anwendungen nicht mit anderen Bereitstellern. Für das Rendering können Sie jedoch Tools wie Helm oder Kustomize verwenden.
Weitere Informationen zur Bereitstellung von Google Cloud Deploy mit kubectl
als Deployer finden Sie unter Google Cloud Deploy-Dienstarchitektur.
Skaffold-Profile
Sie können separate Skaffold-Profile erstellen, die in skaffold.yaml
in einer profiles:
-Stanza identifiziert werden.
Wenn Sie Skaffold-Profile mit Google Cloud Deploy verwenden, können Sie separate Profile für alle oder einige Ihrer Ziele erstellen. Zum Beispiel unterschiedliche Profile für dev
, staging
und prod
.
Profile sind nicht erforderlich, um Skaffold in Google Cloud Deploy zu verwenden. Sie sind jedoch nützlich, um Manifestanpassungen für Ihre Ziele zu definieren, z. B. mit verschiedenen Kustomize-kustomization.yaml
-Dateien pro Ziel.
Kustomize-Support zu skaffold.yaml
hinzufügen
Die Einbindung Ihrer Kustomize-Konfiguration in Ihre Google Cloud Deploy-/Skaffold-Konfiguration umfasst Folgendes:
Fügen Sie eine
kustomization.yaml
-Datei in Ihre Konfigurationsdateien ein.Sie können Ihre Konfigurationsdateien in einem lokalen Verzeichnis oder in einem Cloud Storage-Bucket speichern.
Erstellen Sie in der Datei
skaffold.yaml
einedeploy
-Stanza für jedes Profil.Sie können auch eine
deploy
-Stanza außerhalb definierter Profile ausführen, wenn Sie keine Profile verwenden oder eine Standardbereitstellungskonfiguration haben, die nicht mit einem Profil verknüpft ist. Beispiel:apiVersion: skaffold/v2beta28 kind: Config build: artifacts: - image: leeroy-web-profiles context: leeroy-web-profiles - image: leeroy-app-profiles context: leeroy-app-profiles googleCloudBuild: projectId: ${PROJECT_ID} profiles: - name: local deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/local - name: test deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/test - name: staging deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/staging - name: prod deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/prod
Die hier gezeigte Skaffold-Konfiguration hat separate Profile für die Ziele
test
,staging
undprod
. Außerdem wird ein Profil für die lokale Entwicklung angezeigt. In jedem Profil gibt es einedeploy.kustomize
-Stanza mit einem Pfad, der auf den Standort der Kustomisierung verweist, die für dieses Ziel verwendet werden soll.
Helm-Unterstützung zu skaffold.yaml
hinzufügen
Sie können Ihre Manifeste mit Helm rendern. Google Cloud Deploy verwendet Helm nicht zum Bereitstellen Ihrer Anwendungen und unterstützt nur kubectl
als Bereitsteller.
Wenn Sie Helm verwenden möchten, benötigen Sie das Helm-Diagramm oder die Helm-Diagramme, die an einem beliebigen Ort gespeichert sind, auf den Sie in skaffold.yaml
verweisen können. Dieser Speicherort kann sich in einem Dateisystem, einem Repository (gegebenenfalls zusammen mit skaffold.yaml
) oder einem Open Container Initiative-Repository (OCI) befinden.
Fügen Sie der Datei skaffold.yaml
eine helm
-Stanza hinzu, um ein Helm-Diagramm zu verwenden.
apiVersion: skaffold/v2beta28
kind: Config
build:
artifacts:
- image: skaffold-helm-image
deploy:
helm:
releases:
- name: skaffold-helm-image
chartPath: charts
Die skaffold.yaml
-Referenz zeigt, was in dieser helm
-Stanza erforderlich ist.
kpt mit Skaffold verwenden
Wir empfehlen, kpt nicht mit Skaffold V1 in Google Cloud Deploy zu verwenden.
Nicht unterstützte Skaffold-Features
Die folgenden Funktionen von Skaffold können in Google Cloud Deploy nicht verwendet werden:
-
Die Verwendung von
--module=
zur Auswahl bestimmter Module fürbuild
,render
,apply
usw. wird nicht unterstützt. Statische Module werden unterstützt. Die Möglichkeit, in Helm einen Namespace zu erstellen, wenn noch keiner vorhanden ist.
Nächste Schritte
Besuchen Sie die Skaffold-Website, um zu erfahren, wie das funktioniert und was es für Sie tun kann.
Übung mit Google Cloud Deploy mit Kustomize- und Skaffold-Profilen
Hier erfahren Sie, wie Google Cloud Deploy die zu verwendende Skaffold-Version auswählt, wann sich die Skaffold-Version ändert und wie Sie ermitteln, welche Version verwendet wird.
Hier erfahren Sie, wie Sie Skaffold-Profile mit erweiterten Manifest-Managementtools wie Helm, Kustomize und kpt verwenden.