Mit Google Cloud und Kubernetes-YAML arbeiten

Cloud Code vereinfacht die Konfiguration von Kubernetes und Cloud Build, indem das Schema sowohl für Struktur- als auch für gültige Werte per Linting verknüpft und beschreibende Fehler bereitgestellt werden. Cloud Code bietet vorkonfigurierte Lösungen für allgemeine Schemas, intelligente Vervollständigungen und Dokumentation, wenn der Mauszeiger darauf bewegt wird.

Unterstützte YAML-Konfigurationsdateien

Cloud Code unterstützt außerdem sofort verfügbare benutzerdefinierte Kubernetes-Ressourcendefinitionen (Custom Resource Definitions, CRDs) wie Kubeflow.

Benutzerdefiniertes Schema verwenden

Mit Cloud Code können Sie in der Datei settings.json mit der Einstellung cloudcode.yaml.crdSchemaLocations Ihr eigenes CRD-Schema angeben. Sie können entweder auf eine lokale Datei oder eine URL verweisen. URLs, die auf github.com verweisen, werden automatisch in raw.githubusercontent.com umgewandelt.

Schema aus einem Cluster abrufen

Wenn Sie im Kubernetes Explorer zu einem Cluster mit Kubernetes v1.16 und höher wechseln, ruft Cloud Code automatisch das Schema aller installierten CRDs ab.

Konfiguration mit Snippets durchführen

Sofort einsatzbereite Snippets für gängige YAML-Schemas (mit Command/Ctrl+Space zum Aufrufen von Optionen) vereinfachen das Starten einer neuen YAML-Datei und das fehlerfreie Hinzufügen zu einer vorhandenen Datei. Best Practices. Cloud Code erleichtert die Arbeit mit sich wiederholenden Feldern. Geben Sie eines ein. Cloud Code füllt die verbleibenden Instanzen aus.

Snippets für sich wiederholende Felder verwenden

Cloud Code bietet die folgenden Snippets:

  • Anthos Config Management - Cluster
  • Anthos Config Management - Cluster Selector
  • Anthos Config Management - Config Management
  • Anthos Config Management - Namespace Selector
  • Cloud Build - Cloud Run deployment
  • Cloud Build - Docker container build
  • Cloud Build - GKE deployment
  • Cloud Build - GKE Skaffold deployment
  • Cloud Build - Go build
  • Cloud Build - Terraform plan + apply
  • Config Connector - BigQueryDataset
  • Config Connector - BigQueryTable
  • Config Connector - BigtableCluster
  • Config Connector - BigtableInstance
  • Config Connector - PubSubSubscription
  • Config Connector - PubSubTopic
  • Config Connector - RedisInstance
  • Config Connector - SpannerInstance
  • Kubernetes - ConfigMap
  • Kubernetes - Deployment
  • Kubernetes - Ingress
  • Kubernetes - Pod
  • Kubernetes - Secret
  • Kubernetes - Service
  • Migrate for Anthos - Export
  • Migrate for Anthos - PersistentVolumeClaim
  • Migrate for Anthos - StatefulSet
  • Skaffold - Bazel
  • Skaffold - Getting-started
  • Skaffold - Helm deployment
  • Skaffold - Kaniko

Synchronisierung von Skaffold-Dateien und Hot Refresh aktivieren

Skaffold unterstützt das Kopieren geänderter Dateien in einen bereitgestellten Container, um die Effizienz Ihres lokalen Entwicklungsworkflows zu steigern und zu vermeiden, dass Pods neu erstellt, neu bereitgestellt und neu gestartet werden müssen. Wenn Sie also Änderungen an statischen Dateien und Quellcodedateien vornehmen, werden diese bereits nach wenigen Sekunden wirksam. So entsteht eine beschleunigte Feedback-Schleife.

Bei statischen Dateien, z. B. HTML- und CSS-Dateien, wird dieses Kopierverhalten als Dateisynchronisierung bezeichnet.

Für Quellcodedateien wird dieses Verhalten als Hot Refresh bezeichnet und unterstützt die folgenden Dateitypen:

  • Go: *.go
  • Java: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js, *.mjs, *.coffee, *.litcoffee, *.json

Bei konfigurierter Funktion für das Aktualisieren nach dem Index erkennt Skaffold Änderungen an unterstützten Dateien und synchronisiert diese mit dem ausgeführten Container auf Ihrem Cluster. Bei Änderungen an Dateitypen, die kein Hot Refresh unterstützen, wird die Neuerstellung eines Images und ein Pod-Neustart ausgelöst.

Wenn Sie mit Buildpacks als bevorzugtem Builder arbeiten, sind die automatische Synchronisierung von Dateien und das Hot Refresh standardmäßig aktiviert. Bei anderen Buildern wie Docker können Sie in der Datei skafleaf.yaml für das anzupassende Artefakt den Abschnitt sync angeben.

Folgende Synchronisierungseinstellungen können festgelegt werden:

  • auto (nur für Jib- und Buildpacks-Artefakte). Dies ist die Standardeinstellung, wenn sie nicht für Buildpacks angegeben ist.
  • infer
  • manual

Im folgenden Beispiel aus dem Abschnitt sync in einer Datei skafwrap.yaml wird eine manual-Synchronisierung angegeben, um alle /static-html-HTML-Dateien in einem Container mit dem Ordner static zu synchronisieren:

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

Ausführliche Informationen zur Dateisynchronisierung und zur Angabe von Synchronisierungsregeln finden Sie im Skaffold-Leitfaden zur Dateisynchronisierung.

Kontextbezogene Vervollständigung

Basierend auf dem aktuellen Schema bietet Cloud Code kontextbezogene Vervollständigungen und relevante Dokumente, die Ihnen bei der Auswahl der richtigen Option helfen können.

Kontextvervollständigung für Kubernetes-Schemas

YAML-Schema prüfen

Cloud Code bietet Unterstützung für die Schemavalidierung. Dazu werden ungültige Tags und Werte in Ihren YAML-Dateien mit Flags versehen und es werden nach Möglichkeit Korrekturen empfohlen.

Wert des Namensfelds „rot“ unterstrichen Text, um einen ungültigen Wert von '1234' hervorzuheben; Hover-Text zeigt: „Falscher Typ. Erwarteter String.“

Dokumentation durch Mauszeigerbewegung finden

Cloud Code zeigt Ihnen die relevante Dokumentation an, wenn Sie den Mauszeiger auf einen Wert im Schema bewegen.

Info zu Dokumentation durch Mauszeigerbewegung in Schemas

Auf Ressourcendefinitionen zugreifen

Definitionen für Ressourcen können Sie schnell aufrufen, indem Sie mit der rechten Maustaste klicken und Go to Definition oder Peek Definition auswählen.

Info zu Definitionen durch Klicken mit der rechten Maustaste in Schemas

YAML-Datei anwenden

Zum Anwenden einer Konfigurationsänderung mithilfe der aktuellen Datei können Sie Cloud Code: Wenden Sie die aktuelle JSON/YAML-Datei mit der von Kubernetes bereitgestellten Ressource über die Befehlspalette an (klicken Sie auf Symbol "Manage" (Verwalten) Verwalten > Befehlspalette.

Mit diesem Befehl wird eine Differenzansicht angezeigt, über die Sie die Änderungen prüfen können. Klicken Sie auf Übernehmen, wenn Sie gefragt werden, ob Sie diese Änderung übernehmen möchten. Damit wird kubectl apply -f ausgeführt.

Unterschiede zwischen YAML-Dateien ansehen

Wenn Sie sich die Unterschiede zwischen einer YAML-Datei in der Versionsverwaltung und einer bereitgestellten YAML-Datei ansehen möchten, können Sie über den Befehl Cloud Code: Diff the current JSON/YAML file with Kubernetes Deploy resource über den Befehl verwenden Palette (klicken Sie auf Symbol "Manage" (Verwalten) Verwalten > Befehlspalette).

Ansicht der Unterschiede für Kubernetes-Schemas

Probelauf einer YAML-Datei ausführen

Wenn Sie einen Probelauf Ihrer Konfiguration ausführen und ihre Gültigkeit prüfen möchten, können Sie Cloud Code: Probelauf der aktuellen Konfiguration für die serverseitige Validierung und Cloud Code: Dry -run current config for clientseitige validierung über die Befehlspalette (klicken Sie auf Symbol "Manage" (Verwalten) Verwalten > Befehlspalette). ).

Probelaufbefehle aus der Befehlspalette und aktuelle Probekonfigurationen für die serverseitige Validierung ausgewählt

Damit wird kubectl apply -f dry-run=server (oder kubectl apply -f dry-run=client, für die Clientoption) ausgeführt und es wird eine erfolgreiche Validierung (oder eine Fehlermeldung, wenn die Konfigurationsdatei ungültig ist) als Toast-Benachrichtigung angezeigt aus.

Im folgenden Beispiel wird bei der serverseitigen Probelaufvalidierung der Konfigurationsdatei hello.deployment.yaml beim Versuch, ein Deployment zu erstellen, ein Fehler zurückgegeben, weil der angegebene Namespace random-namespace nicht vorhanden sind.

Die serverseitige Probelaufvalidierung in `hello.deployment.yaml“ schlägt fehl und eine Fehlermeldung wird als Toast angezeigt. Die Details des Fehlers finden Sie im Ausgabekanal. Der Namespace "random-namespace" ist nicht vorhanden

Mit Secrets arbeiten

Die Verwendung von Konfigurationsplänen und Secrets ist ein wesentlicher Bestandteil der Arbeit mit Kubernetes. Wenn Sie den Kontext eines base64-Secrets mit Cloud Code ansehen möchten, bewegen Sie den Mauszeiger über das Secret, um es zu decodieren.

Secret-Decodierung mit Cloud Code durch Mauszeigerbewegung

Support

Wenn Sie uns Feedback geben möchten, können Sie Probleme auf GitHub melden oder eine Frage in Stack Overflow stellen.