Terraform-Kubernetes-Apps über Cloud Marketplace anbieten

Mit Terraform Kubernetes-Anwendungen im Google Cloud Marketplace können Ihre Kunden Terraform verwenden, um Ihre containerisierten Anwendungen in der Google Kubernetes Engine bereitzustellen. Ihren Nutzern werden keine Kosten für die Nutzung Ihrer Terraform Kubernetes-Anwendungen in Rechnung gestellt, aber sie zahlen für ihre Nutzung von Google Cloud Ressourcen. Sie können Terraform Kubernetes-Anwendungen öffentlich für alle Cloud Marketplace-Nutzer oder privat mit Private Offers anbieten.

Für Terraform Kubernetes-Anwendungen, die Sie über Cloud Marketplace anbieten, werden die Konfigurationen mit Helm-Diagrammen definiert, die Sie in Artifact Registry hosten. Nachdem Sie das eingerichtet haben, können Sie Ihre Anwendung über Producer Portal in Cloud Marketplace einbinden.

Hinweis

Überblick über die Einbindung einer Terraform Kubernetes-Anwendung

Das Anbieten einer Terraform Kubernetes-Anwendung über Cloud Marketplace umfasst die folgenden Schritte:

  1. Bereiten Sie Ihre Terraform Kubernetes-Anwendung für Cloud Marketplace vor. Dazu gehört das Einrichten von Artifact Registry und das Übertragen der Images Ihrer Anwendung an Artifact Registry.

  2. Fügen Sie Preisinformationen für Ihre Anwendung in Producer Portal hinzu.

  3. Konfigurieren Sie die Bereitstellung Ihrer Anwendung in Producer Portal, einschließlich des Terraform-Moduls, des Helm Diagramms und der Container-Images.

  4. Fügen Sie ein Label hinzu um den zugehörigen Verbrauch von Google Cloud-Ressourcen für Ihre Anwendung zu verfolgen.

  5. Veröffentlichen Sie Ihre Anwendung in Cloud Marketplace. Wenn Sie Ihre Anwendung einbinden, reichen Sie verschiedene Teile Ihrer Anwendung zur Überprüfung ein. Das Cloud Marketplace-Team prüft jede Einreichung und arbeitet mit Ihnen zusammen, um alle Probleme zu lösen, bevor die Einreichung genehmigt wird. Wenn alle Einreichungen genehmigt wurden, können Sie das Produkt innerhalb weniger Minuten veröffentlichen und starten.

Produktspezifische Anforderungen

Alle Produkte, die Sie über Cloud Marketplace anbieten, müssen den Cloud Marketplace Anforderungen für Einträge entsprechen.

Ihre Terraform Kubernetes-Anwendung muss die folgenden zusätzlichen Anforderungen erfüllen:

  • Ihre Anwendung muss auf GKE-Knoten mit x86-Prozessoren ausgeführt werden.
  • Alle Helm-Diagramme und Container-Images Ihrer Anwendung müssen in Ihre Artifact Registry-Registry hochgeladen werden, in dasselbe Repository und Projekt, das Sie für Ihre Terraform Kubernetes-Anwendung verwenden.
  • Ihre Artifact Registry-Registry muss ein Helm-Diagramm enthalten.
  • Sie müssen den Helm-Diagrammen Ihrer Anwendung ein Label hinzufügen, um den zugehörigen Verbrauch von Google Cloud Ressourcen für Ihre Anwendung zu verfolgen. Weitere Informationen finden Sie unter Zugehörigen Verbrauch Ihrer Kubernetes-Anwendungen mit Labels verfolgen.
  • Ihr Terraform-Modul muss als ZIP-Datei in einem Cloud Storage-Bucket gehostet werden, der sich im selben Projekt befindet, das Sie für Ihre Terraform Kubernetes-Anwendung verwenden.
  • Sie müssen die Versionsverwaltung für den Cloud Storage-Bucket aktivieren, in dem Sie Ihr Terraform-Modul hosten.
  • Sie müssen ein Nutzerhandbuch mit Schritten zum Bereitstellen der Anwendung über die Befehlszeile, zum Konfigurieren der Anwendung und zum Verwenden der Anwendung hinzufügen. Weitere Informationen finden Sie in diesem Dokument unter Anforderungen an das Nutzerhandbuch.
  • Es werden nur Betaressourcen oder allgemein verfügbare Kubernetes-Ressourcen verwendet, um Nutzer vor instabilen APIs zu schützen.

Anforderungen an die Images Ihrer Anwendung

Die Images Ihrer Anwendung müssen die folgenden Anforderungen erfüllen:

  • Alle Images Ihrer Anwendung müssen mit dem Release-Track und der aktuellen Version versehen sein. Wenn Sie beispielsweise die Version 2.0.5 auf dem 2.0 Release-Track veröffentlichen, müssen alle entsprechenden Images mit 2.0 und 2.0.5 gekennzeichnet sein. Weitere Informationen finden Sie unter Releases organisieren.
  • Alle Images Ihrer Anwendung müssen die folgende Annotation im Image-Manifest enthalten:

    com.googleapis.cloudmarketplace.product.service.name=services/SERVICE_NAME
    

    Ersetzen Sie SERVICE_NAME durch den Namen Ihres Dienstes (z. B. example.endpoints.example-project.cloud.goog). Den Dienstnamen für Ihr Produkt finden Sie im Producer Portal auf der Seite Übersicht in der Spalte Dienstname. Weitere Informationen zu Annotationen finden Sie in der Dokumentation der Open Container Initiative zu Annotationen auf GitHub.

Anforderungen an Ihr Artifact Registry-Repository

Das Helm-Diagramm und die Container-Images Ihrer Anwendung müssen Teil eines einzelnen Artifact Registry-Repositorys sein.

Wenn Ihr Artifact Registry-Repository beispielsweise us-docker.pkg.dev/exampleproject ist, sollten das Helm-Diagramm und die Container-Images Ihrer Anwendung so aussehen:

  • us-docker.pkg.dev/exampleproject/exampleapp/chart
  • us-docker.pkg.dev/exampleproject/exampleapp/image1
  • us-docker.pkg.dev/exampleproject/exampleapp/image2

Anforderungen an das Terraform-Modul

Kunden verwenden das Terraform-Modul, um Ihr Produkt über Infrastructure Manager aus Cloud Marketplace bereitzustellen. Das Terraform-Modul packt die Kubernetes-Konfiguration Ihrer Anwendung.

Verwenden Sie das Beispielmodul als Ausgangspunkt, und folgen Sie der Partneranleitung , um ein Terraform-Modul zu erstellen, das mit Ihrer Anwendung kompatibel ist.

An Ihre Anwendung übergebene Parameter

Ihr Terraform-Modul muss Parameter deklarieren, die von Kunden bei der Auswahl Ihrer Anwendung erfasst werden müssen. Diese Parameter werden dann an den Helm-Diagramm-Container übergeben, wenn Nutzer die Anwendung bereitstellen.

Damit diese Parameter konfiguriert werden können, muss Ihr Terraform-Modul eine schema.yaml-Datei enthalten.

Informationen zum Erstellen einer schema.yaml-Datei finden Sie in der Anleitung zum Erstellen eines Schemas auf GitHub.

GPU-Clusteranfragen

Wenn Ihre Anwendung bestimmte GPU-Anforderungen hat oder GPU-intensiv ist, können Sie den Typ und die Anzahl der GPUs im Cluster mit Ihrem Deployer-Schema angeben. Wenn Sie Ihre GPU-Anforderungen angeben, deaktivieren Sie die unterstützte Clustererstellung.

Ihre Anwendung kann eine generische Nvidia-GPU oder eine bestimmte Nvidia-Plattform anfordern.

Anforderungen an das Nutzerhandbuch Ihrer Anwendung

Das Nutzerhandbuch Ihrer Anwendung muss die folgenden Informationen enthalten:

  • Übersicht: Eine allgemeine Übersicht über Ihre Anwendung mit ihren grundlegenden Funktionen und Konfigurationsoptionen. In diesem Abschnitt muss auch ein Link zu Ihrer veröffentlichten Anwendung in Cloud Marketplace enthalten sein.
  • Einmalige Einrichtung: Dazu gehören die Schritte zum Konfigurieren von Helm und zum Installieren der Anwendung CustomResourceDefinition (CRD), damit Ihr Cluster die Anwendungsressource verwalten kann.
  • Installation: Dazu gehört Folgendes:
    • Befehle zum Bereitstellen Ihrer Anwendung
    • In der UI-Konfiguration verfügbare Parameter übergeben
    • Image-Referenzen an unveränderliche Digests anheften
    • Informationen zu allen benutzerdefinierten Eingabefeldern, die Sie Ihrem Terraform-Modul hinzugefügt haben, falls zutreffend. Weitere Informationen finden Sie unter den Anweisungen zum Hinzufügen von Eingabefeldern zu Ihrem Terraform-Modul
  • Grundlegende Nutzung: Anleitungen für die folgenden Aufgaben:
    • Nutzernamen und Passwörter ändern
    • Verbindung zu einer Admin-Konsole herstellen, falls zutreffend
    • Verbindung zu einem Clienttool herstellen und gegebenenfalls Beispielbefehl ausführen
    • Eingehenden Traffic aktivieren und gegebenenfalls TLS-Zertifikate installieren
  • Sichern und wiederherstellen: Informationen zum Sichern des Anwendungsstatus und zum Wiederherstellen des Anwendungsstatus aus einer Sicherung.
  • Image-Updates: Informationen zum Aktualisieren der Anwendungs-Images für Patches oder kleinere Updates.
  • Skalierung: Informationen zum Skalieren der Anwendung, falls zutreffend.
  • Löschen: Anleitungen zum Löschen der Anwendung und zum Bereinigen aller verbleibenden Ressourcen, z. B. PersistentVolumeClaims.

Preismodelle für Terraform Kubernetes-Anwendungen

Sie können eines der folgenden Preismodelle für Ihre Anwendung auswählen:

  • Kostenlos: Kunden zahlen nur für die Google Cloud verwendeten Ressourcen, die sie verwenden.
  • Nutzungsbasiert: Kunden zahlen für Ihre Anwendung auf Basis der von Ihnen gewählten Messwerte, z. B. nach der Anzahl der Container oder der Speicherzeit. Wenn Sie ein nutzungsbasiertes Preismodell wählen, muss Ihre Anwendung Nutzungsinformationen erfassen und an Google melden.

Nachdem Sie eine Terraform Kubernetes-Anwendung mit nutzungsbasierter Preisgestaltung veröffentlicht haben, können Sie die Preise Ihrer Anwendung aktualisieren. Um die Preise Ihrer Anwendung zu aktualisieren, müssen seit der Veröffentlichung Ihrer Anwendung oder der letzten Aktualisierung der Preise mindestens 30 Tage vergangen sein.

Nutzungsbasierte Preise

Im Google Cloud Marketplace werden Kubernetes-Pod Annotationen verwendet, um die Nutzung zu verfolgen und Kunden die Bereitstellungen Ihrer Cloud Marketplace-Anwendungen in Rechnung zu stellen. In Cloud Marketplace werden Abrechnung und Messung auf Pod-Ebene verfolgt und auf Produkteintrags-Ebene zusammengefasst.

Wenn Sie mehrere Pods auf demselben Computer (vCPU, GPU, TPU oder Arbeitsspeicher) bereitstellen, wird die kumulative Nutzung aller auf dem Computer bereitgestellten Pods jedem der Pods zugewiesen. Wenn Sie beispielsweise drei Pods haben, die dieselbe GPU verwenden, zählt Cloud Marketplace dies als drei GPUs.

In Cloud Marketplace werden verschiedene GKE-SKUs innerhalb jeder vCPU-, TPU-, GPU- oder Arbeitsspeicher-SKU-Familie als identisch behandelt. Wenn beispielsweise die GPU als Messwert festgelegt ist, gilt der konfigurierte Preis unabhängig davon, ob Ihr Kunde GKE Autopilot T4 GPU Premium, GKE Autopilot L4GKE Autopilot H100 GPU Premium, GKE Autopilot A100 40 GiB GPU, GKE Autopilot A100 80 GiB GPU oder GKE Autopilot H100 GPU Premium verwendet.

Wir empfehlen dringend, Geschäftslogik in Ihre Cloud Marketplace-Anwendungen einzubinden, um eine genaue Abrechnung für Kunden zu gewährleisten. Um die Auswirkungen des versehentlichen Entfernens von Label-Annotationen zu minimieren, empfehlen wir, Ihre Anwendung so zu gestalten, dass regelmäßig geprüft wird, ob die Label-Annotationen noch vorhanden sind. Wenn eine Annotation fehlt, sollte die Funktionalität Ihrer Anwendung eingeschränkt werden, bis das Label wiederhergestellt wurde. Ein Beispiel dafür in Python finden Sie unten:

pod_name = os.environ.get("HOSTNAME")
namespace = open(
      "/var/run/secrets/kubernetes.io/serviceaccount/namespace"
).read()
# Load in-cluster config
config.load_incluster_config()
v1 = client.CoreV1Api()
# Get the Pod object
pod = v1.read_namespaced_pod(name=pod_name, namespace=namespace)
annotations = pod.metadata.annotations
if annotations:
print("Annotations for this pod:")
for key, value in annotations.items():
      print(f"  {key}: {value}")
else:
print("No annotations found on this pod.")

Nächste Schritte