Mit Google Cloud und Kubernetes YAML in Cloud Code für Cloud Shell arbeiten

Cloud Code for Cloud Shell soll das Konfigurieren von Kubernetes und der Cloud Build-Konfiguration vereinfachen. Dazu werden das Schema für Struktur und gültige Werte als Linting betrachtet und beschreibende Fehler werden angegeben. Zusammen mit Cloud Code erhalten Sie sofort einsatzbereite Lösungen für allgemeine Schemas, intelligente Vervollständigung und Dokumentation durch Mauszeigerbewegung.

Unterstützte YAML-Konfigurationsdateien

Cloud Code unterstützt auch gängige und sofort einsetzbare Kubernetes Custom Resource Definitions (CRDs) wie Kubeflow.

Benutzerdefiniertes Schema verwenden

Mit Cloud Code können Sie Ihr eigenes CRD-Schema mit der Einstellung cloudcode.yaml.crdSchemaLocations in Ihrer settings.json-Datei 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 zu einem Cluster mit Kubernetes v1.16 und höher im Kubernetes Explorer 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. Dabei werden Best Practices beachtet. Cloud Code erleichtert die Arbeit mit sich wiederholenden Feldern. Füllen Sie die eine Instanz aus und Cloud Code füllt die verbleibenden Instanzen aus.

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

Skaffold-Dateisynchronisierung und Hot Reload aktivieren

Skaffold unterstützt das Kopieren geänderter Dateien in einen bereitgestellten Container, um die Effizienz des lokalen Entwicklungsworkflows zu verbessern und die Neuerstellung, erneute Bereitstellung und den Neustart von Pods zu vermeiden. Wenn Sie also Änderungen an statischen und Quellcodedateien vornehmen, werden Ihre Änderungen innerhalb von Sekunden angezeigt, wodurch eine beschleunigte Feedback-Schleife entsteht.

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

Bei Quellcodedateien wird dieses Verhalten als Hot Reload bezeichnet und unterstützt die folgenden Dateitypen:

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

Wenn Hot Reload konfiguriert ist, erkennt Skaffold Änderungen an unterstützten Dateien und synchronisiert diese Änderungen mit dem ausgeführten Container in Ihrem Cluster. Änderungen an Dateitypen, die kein Hot Reload unterstützen, lösen eine Image-Neuerstellung und einen Pod-Neustart aus.

Die automatische Dateisynchronisierung und Hot Reload sind standardmäßig aktiviert, wenn Sie mit Buildpacks als Ihrem bevorzugten Builder arbeiten. Für andere Builder wie Docker können Sie in Ihrer skaffold.yaml-Datei einen sync-Abschnitt für das Artefakt angeben, das Sie anpassen möchten.

Folgende Synchronisierungseinstellungen können festgelegt werden (in der Reihenfolge ihrer Präferenz):

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

Mit dem folgenden Beispielabschnitt sync in einer skaffold.yaml-Datei wird eine manual-Synchronisierung festgelegt, um alle /static-html-HTML-Dateien mit dem Ordner static in einem Container zu synchronisieren:

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

Einen detaillierten Blick auf die Dateisynchronisierung und die Angabe von Synchronisierungsregeln finden Sie im Skaffold-Leitfaden zur Dateisynchronisierung.

Kontextbezogene Vervollständigung

Anhand des aktuellen Schemas stellt Cloud Code eine kontextbezogene Vervollständigung und entsprechende Dokumente für die Auswahl der richtigen Option bereit.

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 relevante Dokumentation an, wenn Sie den Mauszeiger über einen Wert im Schema halten.

Dokumentationsinformationen, wenn Sie den Mauszeiger auf einen Wert im Schema halten

Auf Ressourcendefinitionen zugreifen

Klicken Sie mit der rechten Maustaste auf die Ressource und wählen Sie Zu Definition oder Peek-Definition aus, um Definitionen für eine Ressource aufzurufen.

YAML-Datei anwenden

Wenn Sie eine Konfigurationsänderung mit der aktuellen Datei anwenden möchten, öffnen Sie die Befehlspalette (drücken Sie Cmd/Ctrl + Shift + P) und führen Sie Cloud Code: Apply Current JSON/ YAML File to K8s Deploy Resource aus.

Mit diesem Befehl wird eine Unterschiedsansicht angezeigt, mit der Sie Änderungen prüfen können. Klicken Sie auf Anwenden, wenn Sie gefragt werden, ob Sie diese Änderung anwenden möchten. Dadurch 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, öffnen Sie die Befehlspalette (drücken Sie Cmd/Ctrl+Shift+P) und führen Sie Cloud Code: Diff Current JSON/YAML File with K8s Deployed Resource aus.

Probelauf einer YAML-Datei ausführen

Öffnen Sie die Befehlspalette (drücken Sie Cmd/Ctrl+Shift+P), um einen Probelauf für Ihre Konfiguration auszuführen und die Gültigkeit zu prüfen. Führen Sie dann Cloud Code: Dry-run current config for server-valid und Cloud Code: Aktuelle Konfiguration für clientseitige Validierung aus.

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

Im folgenden Beispiel gibt die serverseitige Probelaufvalidierung der Konfigurationsdatei hello.deployment.yaml beim Erstellen eines Deployments einen Fehler zurück, da der angegebene Namespace random-namespace nicht vorhanden ist.

Die serverseitige Validierung des Probelaufs schlägt in „hello.deployment.yaml“ fehl und eine Fehlermeldung wird als Toast angezeigt. Die Fehlerdetails finden Sie im Ausgabekanal. Der Namespace „random-namespace“ ist nicht vorhanden

Mit Secrets arbeiten

Die Verwendung von Konfigurationszuordnungen und Secrets ist ein wichtiger Teil von Kubernetes. Um den Kontext eines Base64-Secret mit Cloud Code anzusehen, halten Sie den Mauszeiger über das Secret, um es zu decodieren.

Secret decodieren, indem Sie den Mauszeiger über das Secret halten