Auf dieser Seite wird beschrieben, wie Sie neue Dienste und neue Überarbeitungen in Knative Serving bereitstellen.
Vorbereitung
Zur Verwendung der Google Cloud CLI müssen Sie zuerst die Befehlszeilentools einrichten und konfigurieren.
Verbindung zu GKE-Clustern herstellen
Bevor Sie Dienste in Knative Serving bereitstellen können, müssen Sie sich anmelden, um eine Verbindung zu Ihrem GKE-Cluster herzustellen.
Weitere Informationen zum Herstellen einer Verbindung zu Ihren GKE-Clustern, einschließlich zusätzlicher Optionen, finden Sie unter:
Für das Deployment erforderliche Berechtigungen
Sie benötigen Berechtigungen zum Erstellen, Aktualisieren und Löschen für die apiGroup serving.knative.dev
und die Art Service
. Darüber hinaus benötigen Sie EINE der folgenden Rollen für die Identitäts- und Zugriffsverwaltung:
Bereitstellbare Images
Es gibt keine Größenbeschränkung für Container-Images, die Sie bereitstellen können.
Sie können Container aus jeder Container-Registry wie Docker Hub verwenden. Informationen zum Bereitstellen privater Images aus anderen Registries als Container Registry oder Artifact Registry finden Sie unter Private Container-Images aus anderen Container Registries bereitstellen.
Neuen Dienst bereitstellen
Sie können ein Container-Image mit einem Tag (z. B. gcr.io/my-project/my-image:latest
) oder mit einem genauen Digest (z. B. gcr.io/my-project/my-image@sha256:41f34ab970ee...
) angeben.
Wenn Sie einen Dienst zum ersten Mal bereitstellen, wird die erste Überarbeitung erstellt. Überarbeitungen können nach der Erstellung nicht mehr geändert werden. Wenn Sie den Dienst aus einem Container-Image-Tag bereitstellen, wird er in einen Digest aufgelöst. Die Überarbeitung stellt anschließend immer diesen speziellen Digest bereit.
Sie können einen Container über die Google Cloud Console, die Google Cloud CLI oder eine YAML-Konfigurationsdatei bereitstellen.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Standardkonfiguration des gcloud
-Standorts
Wenn Sie zuvor einen Standort in der default
-Konfiguration der Google Cloud CLI konfiguriert haben, verwenden Ihre gcloud
-Befehle diese Werte standardmäßig, u. a.:
compute/region
compute/zone
run/cluster
run/cluster_location
run/platform
run/region
Führen Sie den folgenden gcloud
config-Befehl aus, um die Einstellungen für die Konfiguration default
aufzurufen:
gcloud config configurations describe default
Console
So stellen Sie ein Container-Image bereit:
Rufen Sie in der Google Cloud Console Knative Serving auf:
Klicken Sie auf Dienst erstellen, um die entsprechende Seite aufzurufen.
Füllen Sie das Formular aus:
Wählen Sie im Drop-down-Menü einen der verfügbaren GKE-Cluster für Ihren Dienst aus.
Geben Sie den gewünschten Dienstnamen ein. Dienstnamen dürfen pro Region und Projekt oder pro Cluster nur einmal vorkommen. Ein Dienstname kann später nicht mehr geändert werden.
Unter Verbindung:
- Wählen Sie Intern aus, wenn Sie den Zugriff auf andere Knative Serving-Dienste oder Dienste in Ihrem Cluster beschränken möchten, die Istio verwenden.
- Wählen Sie Extern aus, um externen Zugriff auf Ihren Dienst zuzulassen.
Sie können die Verbindungsoption jederzeit ändern. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Cloud Run in GKE-Dienst ändern.
Klicken Sie auf Weiter, um mit der zweiten Seite des Diensterstellungsformulars fortzufahren:
Füllen Sie das Formular aus:
Geben Sie im Textfeld Container-Image-URL die URL eines Images ein. Beispiel:
us-docker.pkg.dev/cloudrun/container/hello:latest
Optional können Sie auf Erweiterte Einstellungen anzeigen und die nachfolgenden Tabs klicken, um diese Einstellungen vorzunehmen:
Klicken Sie auf Erstellen, um das Image in Knative Serving bereitzustellen. Warten Sie, bis die Bereitstellung abgeschlossen ist.
Sie haben gerade einen Dienst in einem Cluster bereitgestellt, auf dem Knative Serving aktiviert ist.
Befehlszeile
So stellen Sie ein Container-Image bereit:
Führen Sie den Befehl
gcloud run deploy
aus:gcloud run deploy SERVICE --image IMAGE_URL
Ersetzen Sie SERVICE durch den Namen des Dienstes, für den Sie die Bereitstellung durchführen möchten. Wenn der angegebene Dienst nicht existiert, wird ein neuer Dienst erstellt.
Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
gcr.io/cloudrun/hello
.Zusätzliche Bereitstellungsoptionen:
Für die Bereitstellung in einem anderen Namespace als dem Standard müssen Sie diesen Namespace mit dem Parameter
--namespace
angeben.Für Bereitstellungen an einem anderen Standort als der Standardkonfiguration, müssen Sie das Argument
name
undlocation
des Clusters mit den Parametern--cluster
und--cluster-location
angeben:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Mit dem Flag
--connectivity
können Sie Verbindungsoptionen für den internen und externen Zugriff festlegen. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Dienste ändern.Für Knative Serving auf VMware müssen Sie den Parameter
--kubeconfig
einfügen und Ihre Konfigurationsdatei angeben:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.
YAML
Sie können Ihre Dienstspezifikation in einer YAML
-Datei speichern und dann über die Google Cloud CLI bereitstellen.
Erstellen Sie eine neue
service.yaml
-Datei mit folgendem Inhalt:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
Ersetzen
- SERVICE durch den Namen Ihres Knative Serving-Dienstes
- IMAGE durch die URL Ihres Container-Images.
Sie können auch weitere Konfigurationen angeben, z. B. Umgebungsvariablen oder Speicherlimits.
Stellen Sie den neuen Dienst mit dem folgenden Befehl bereit:
gcloud run services replace service.yaml
Neue Überarbeitung eines vorhandenen Dienstes bereitstellen
Sie können eine neue Überarbeitung über die Google Cloud Console, die gcloud
-Befehlszeile oder eine YAML-Konfigurationsdatei bereitstellen.
Beachten Sie, dass beim Ändern von Konfigurationseinstellungen eine neue Überarbeitung erstellt wird, auch wenn das Container-Image nicht geändert wird. Überarbeitungen können nach der Erstellung nicht mehr geändert werden.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
So stellen Sie eine neue Überarbeitung eines vorhandenen Dienstes bereit:
Rufen Sie in der Google Cloud Console Knative Serving auf:
Klicken Sie in der Übersicht auf den zu aktualisierenden Dienst, um dessen Details anzuzeigen.
Klicken Sie auf NEUE ÜBERARBEITUNG BEARBEITEN UND BEREITSTELLEN. Dadurch wird das Formular für die Bereitstellung der Überarbeitung angezeigt:
Geben Sie bei Bedarf die URL des neu bereitzustellenden Container-Images an.
Legen Sie optional Folgendes fest:
Um den gesamten Traffic an die neue Überarbeitung zu senden, aktivieren Sie das Kästchen Diese Überarbeitung sofort bereitstellen. Wenn Sie eine neue Überarbeitung nach und nach einführen möchten, entfernen Sie das Häkchen aus diesem Kästchen. Dadurch erhalten Sie eine Bereitstellung, bei der kein Traffic an die neue Überarbeitung gesendet wird. Folgen Sie der Anleitung für schrittweise Einführungen nach der Bereitstellung.
Klicken Sie auf BEREITSTELLEN und warten Sie, bis die Bereitstellung abgeschlossen ist.
Befehlszeile
So stellen Sie ein Container-Image bereit:
Führen Sie den Befehl
gcloud run services update
aus:gcloud run services update SERVICE --image IMAGE_URL
- Für jede Überarbeitung wird automatisch ein Überarbeitungssuffix zugewiesen. Wenn Sie ein eigenes Überarbeitungssuffix angeben möchten, fügen Sie den Parameter --revision-suffix hinzu.
Ersetzen Sie SERVICE durch den Namen des Dienstes, für den Sie die Bereitstellung durchführen möchten. Wenn der angegebene Dienst nicht existiert, wird ein neuer Dienst erstellt.
Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B.
gcr.io/cloudrun/hello
.Zusätzliche Bereitstellungsoptionen:
Für die Bereitstellung in einem anderen Namespace als dem Standard müssen Sie diesen Namespace mit dem Parameter
--namespace
angeben.Für Bereitstellungen an einem anderen Standort als der Standardkonfiguration, müssen Sie das Argument
name
undlocation
des Clusters mit den Parametern--cluster
und--cluster-location
angeben:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Mit dem Flag
--connectivity
können Sie Verbindungsoptionen für den internen und externen Zugriff festlegen. Eine Beschreibung hierzu finden Sie unter Verbindungseinstellungen für Dienste ändern.Für Knative Serving auf VMware müssen Sie den Parameter
--kubeconfig
einfügen und Ihre Konfigurationsdatei angeben:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Warten Sie, bis die Bereitstellung abgeschlossen ist. Nach erfolgreichem Abschluss wird eine Bestätigung zusammen mit der URL des bereitgestellten Dienstes angezeigt.
YAML
Sie können die Konfiguration eines vorhandenen Dienstes in eine YAML-Datei herunterladen – mit dem gcloud run services describe
-Befehl mithilfe des Flags --format=export
.
Sie können diese YAML-Datei dann ändern und diese Änderungen mit dem Befehl gcloud run services replace
bereitstellen.
Sie müssen sicherstellen, dass Sie nur die angegebenen Attribute ändern.
Laden Sie die Konfiguration des Dienstes in eine Datei mit dem Namen
service.yaml
im lokalen Arbeitsbereich herunter:gcloud run services describe SERVICE --format export > service.yaml
Ersetzen Sie SERVICE durch den Namen Ihres Knative-Serving-Dienstes.
Aktualisieren Sie in Ihrer lokalen Datei die Revisionseinstellungen in jedem untergeordneten Attribut von
spec.template
.Stellen Sie die neue Überarbeitung bereit:
gcloud run services replace service.yaml
Images aus anderen Google Cloud-Projekten bereitstellen
Sie können Container-Images aus anderen Google Cloud-Projekten bereitstellen, wenn Sie die richtigen IAM-Berechtigungen festlegen:
Öffnen Sie in der Google Cloud Console das Projekt für Ihren Knative Serving-Dienst.
Rufen Sie Ihre Dienstkontoinformationen ab:
Kopieren Sie für Cluster in Google Cloud die E-Mail-Adresse des Compute Engine-Standarddienstkontos. Sie hat das Suffix @.
Erstellen Sie für andere Cluster ein Google Cloud-Dienstkonto und laden Sie die Anmeldedaten herunter. Fügen Sie diese Anmeldedaten als Standard-
imagePullSecrets
des Kubernetes-Dienstkontos hinzu.
Öffnen Sie das Projekt mit der gewünschten Container Registry.
Klicken Sie auf Hinzufügen, um ein neues Hauptkonto hinzuzufügen.
Fügen Sie in das Textfeld Neue Hauptkonten die zuvor kopierte E-Mail-Adresse des Dienstkontos ein.
Wählen Sie in der Drop-down-Liste Rolle auswählen die Rolle aus, die aus der Registry gelesen werden soll:
- Artifact Registry, einschließlich gcr.io-Repositories in Artifact Registry: Artifact Registry -> Artifact Registry-Leser
- Container Registry: Storage -> Storage-Objekt-Betrachter
Stellen Sie das Container-Image für das Projekt bereit, das den Knative Serving-Dienst enthält.
Zur Erhöhung der Sicherheit können Sie den Zugriff einschränken:
- Artifact Registry: Weisen Sie die Rolle dem Repository zu, in dem Ihre Container-Images gespeichert sind.
- Container Registry: Weisen Sie die Rolle dem Cloud Storage-Bucket zu, in dem Ihre Container-Images gespeichert werden.
Private Container-Images aus anderen Container Registries bereitstellen
In diesem Abschnitt wird beschrieben, wie Sie die richtigen Berechtigungen zum Bereitstellen von Container-Images aus einer beliebigen privaten Registry in Knative Serving einrichten. Eine private Container-Registry erfordert Anmeldedaten, um auf das Container-Image zuzugreifen. Beachten Sie, dass Sie diese Schritte nicht ausführen müssen, wenn Sie private Container-Images aus Container Registry (Verworfen) oder Artifact Registry im selben Projekt wie Ihren Cluster bereitstellen.
Damit Sie ein privates Container-Image bereitstellen können, müssen Sie ein Kubernetes-Secret vom Typ imagePullSecret
erstellen und mit einem Dienstkonto verknüpfen:
Erstellen Sie ein
imagePullSecret
-Secret mit dem Namencontainer-registry
:kubectl create secret docker-registry container-registry \ --docker-server=DOCKER_REGISTRY_SERVER \ --docker-email=REGISTRY_EMAIL \ --docker-username=REGISTRY_USER \ --docker-password=REGISTRY_PASSWORD
- Ersetzen Sie DOCKER_REGISTRY_SERVER durch Ihren privaten Registry-FQDN (z. B. https://gcr.io/ für Container Registry oder https://hub.docker.com für DockerHub).
- Ersetzen Sie REGISTRY_EMAIL durch Ihre E-Mail-Adresse.
Ersetzen Sie REGISTRY_USER durch Ihren Container Registry-Nutzernamen.
Wenn Sie Container Registry oder Artifact Registry verwenden und langlebige Anmeldedaten speichern und abrufen möchten, anstatt kurzlebige Zugriffstokens zu übergeben, finden Sie weitere Informationen unter Authentifizierungsmethoden: JSON-Schlüsseldatei.
Ersetzen Sie REGISTRY_PASSWORD durch Ihr Container Registry-Passwort.
Öffnen Sie Ihr Standarddienstkonto:
kubectl edit serviceaccount default --namespace default
Jeder Namespace in Ihrem Kubernetes-Cluster hat ein Standarddienstkonto namens
default
. Dieses Standarddienstkonto wird verwendet, um Ihr Container-Image abzurufen, sofern Sie beim Bereitstellen des Knative Serving-Dienstes nichts anderes angegeben haben.Fügen Sie das neu erstellte
imagePullSecret
-Secret Ihrem Standarddienstkonto hinzu:imagePullSecrets: - name: container-registry
Ihr Dienstkonto sollte nun so aussehen:
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret we just created: imagePullSecrets: - name: container-registry
Jetzt ist für alle neuen Pods, die im aktuellen default
-Namespace erstellt werden, das imagePullSecret
-Secret definiert.
Mit aktivierter automatischer Sidecar-Einfügung bereitstellen
Informationen zum Bereitstellen Ihres Dienstes mit aktivierter Istio-Sidecar-Einfügung finden Sie in der Cloud Service Mesh-Dokumentation unter Automatische Sidecar-Einfügung aktiviert.
Dienste in einem internen Netzwerk bereitstellen
Damit Sie Dienste in einem internen Netzwerk bereitstellen können, müssen Sie ein privates internes Netzwerk einrichten.
Nächste Schritte
Nachdem Sie einen neuen Dienst bereitgestellt haben, können Sie Folgendes tun:
- Schrittweise Rollouts, Rollback für Überarbeitungen, Traffic-Migration
- Dienstlogs ansehen
- Leistung von Diensten überwachen
- Dienste konfigurieren Sie können beispielsweise Speicherlimits festlegen, Umgebungsvariablen bestimmen oder die Gleichzeitigkeit ändern.
- Verwalten:
Mithilfe von Cloud Build-Triggern können Sie die Builds und Bereitstellungen Ihrer Knative Serving-Dienste automatisieren.