Trabaja con YAML de Google Cloud y Kubernetes

Cloud Code está diseñado para facilitar la configuración de Kubernetes y Cloud Build, ya que analiza mediante lint el esquema de los valores válidos y de estructura, y proporciona errores descriptivos. Cloud Code incluye soluciones listas para usar en esquemas comunes, finalizaciones inteligentes y documentación cuando se coloca el cursor sobre ellas.

Archivos de configuración YAML compatibles

Cloud Code también es compatible con las definiciones de recursos personalizados (CRD) populares de Kubernetes, como Kubeflow, listas para usar.

Usa el esquema personalizado

Con Cloud Code, puedes proporcionar tu propio esquema de CRD con la configuración cloudcode.yaml.crdSchemaLocations en tu archivo settings.json. Puedes apuntar a un archivo local o a una URL. Las URL que apuntan a github.com se convierten de forma automática en raw.githubusercontent.com.

Extrae el esquema de un clúster

Cuando cambias a un clúster que ejecuta Kubernetes v1.16 y versiones posteriores en Kubernetes Explorer, Cloud Code extrae automáticamente el esquema de todas las CRD instaladas.

Configura con fragmentos

Los fragmentos listos para usar del esquema YAML común (con Command/Ctrl+Space a fin de ver las opciones) facilitan el inicio de un archivo YAML nuevo o lo agregan a uno existente sin errores. Sin embargo, siguen siendo los mejores. prácticas. Cloud Code facilita el trabajo con campos repetitivos. completa una y Cloud Code completa las instancias restantes.

Usa fragmentos con campos repetitivos

Cloud Code ofrece los siguientes fragmentos:

  • 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

Habilita la sincronización de archivos de Skaffold y la recarga en caliente

Para mejorar la eficiencia de tu flujo de trabajo de desarrollo local y evitar tener que recompilar, volver a implementar y reiniciar los pods, Skaffold admite la copia de archivos modificados en un contenedor implementado. Esto significa que cuando realizas cambios en archivos de código fuente y estáticos, puedes ver que los cambios se aplican en cuestión de segundos, lo que crea un ciclo de reacción acelerado.

Para los archivos estáticos (como los archivos HTML y CSS), este comportamiento de copia de archivos se denomina sincronización de archivos.

Para los archivos de código fuente, este comportamiento se denomina recarga en caliente y admite los siguientes tipos de archivos:

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

Con la recarga en caliente configurada, Skaffold detecta cambios en los archivos admitidos y sincroniza estos cambios en el contenedor de ejecución del clúster. Los cambios en los tipos de archivos que no admiten la recarga en caliente activan una recompilación de imagen y un reinicio de pod.

La sincronización automática de archivos y la recarga en caliente están habilitadas de forma predeterminada cuando trabajas con Buildpacks como compilador predeterminado. Para otros compiladores como Docker, puedes especificar una sección sync en tu skaffold.yaml para el artefacto que estás personalizando.

Tu configuración de sincronización puede ser una de las siguientes (en orden de preferencia):

  • auto (solo para artefactos de Jib y Buildpacks; Este es el valor predeterminado si no se especifica para Buildpacks).
  • infer
  • manual

En la siguiente sección de muestra de sync en un archivo skaffold.yaml, se especifica una sincronización manual para sincronizar todos los archivos HTML /static-html en la carpeta static de un contenedor:

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

Para obtener información detallada sobre la sincronización de archivos y la especificación de reglas de sincronización, consulta la guía de Skaffold sobre sincronización de archivos.

Completa con contexto

En función del esquema actual, Cloud Code proporciona finalizaciones contextuales y documentos relevantes para ayudarte a elegir la opción adecuada.

Parámetros contextuales para el esquema de Kubernetes

Valida el esquema YAML

Cloud Code ofrece asistencia para la validación de esquemas mediante la marcación con etiquetas no válidas y valores en tus archivos YAML, y sugiere correcciones cuando sea posible.

Valor rojo del campo de nombre subrayado para destacar un valor no válido de “1234”; coloca el cursor sobre los estados de texto: "Tipo incorrecto. Se esperaba string”.

Descubre documentación con solo desplazarte sobre un elemento

Cloud Code muestra la documentación relevante cuando colocas el cursor sobre un valor en el esquema.

Información de documentación con solo desplazarse sobre el esquema

Accede a las definiciones de recursos

Haz clic con el botón derecho y elige Go to Definition o Peek Definition para ver rápidamente las definiciones de los recursos.

Información de definición cuando se hace clic con el botón derecho en el esquema

Aplica un archivo YAML

Para aplicar un cambio de configuración con el archivo actual, puedes ejecutar Cloud Code: Apply the current JSON/YAML file with Kubernetes deploy resource desde la paleta de comandos (haz clic en Ícono Administrar Administrar > Paleta de comandos).

Este comando muestra una vista de diferencias para que revises los cambios. Haz clic en Aplicar cuando se te pregunte si deseas aplicar este cambio. Esto ejecuta kubectl apply -f.

Consulta las diferencias entre archivos YAML

Para ver las diferencias entre un archivo YAML en el control de origen y un archivo YAML implementado, puedes usar Cloud Code: Diff the current JSON/YAML file with Kubernetes deploy resource desde el comando Palette (haz clic en Ícono Administrar Manage > Command Palette).

Vista de diferencias en el esquema de Kubernetes

Realiza una ejecución de prueba de un archivo YAML

Para realizar una ejecución de prueba de tu configuración y verificar su validez, puedes ejecutar Cloud Code: Configuración de ejecución de prueba de la validación del lado del servidor y Cloud Code: Seco -ejecutar la configuración actual para la validación del lado del cliente desde la paleta de comandos (haz clic en Ícono Administrar Administrar > Paleta de comandos) )

Comandos de ejecución de prueba que se enumeran desde la paleta de comandos y la configuración actual de ejecución de prueba para la validación del servidor seleccionada

Esto ejecuta kubectl apply -f dry-run=server (o kubectl apply -f dry-run=client, para la opción Cliente) y muestra una validación correcta (o un mensaje de error, si tu archivo de configuración no es válido) como una notificación de aviso. ,

En el siguiente ejemplo, la validación de ejecución de prueba del servidor del archivo de configuración, hello.deployment.yaml, muestra un error cuando se intenta crear una implementación porque el espacio de nombres especificado, random-namespace, no.

La validación de ejecución de prueba del servidor falla en “hello.deployment.yaml” y se muestra un mensaje de error como una notificación. Los detalles del error se encuentran en el canal de salida. el espacio de nombres "random-namespace" no existe

Trabaja con secretos

Usar mapas de configuración y secretos es una parte clave de trabajar con Kubernetes. A fin de ver el contexto de un secreto base64 con Cloud Code, desplázate sobre el secreto para decodificarlo.

Decodifica un secreto con solo desplazarte en Cloud Code

Obtener asistencia

Para enviar comentarios, informa problemas en GitHub o haz preguntas en Stack Overflow.