Como trabalhar com arquivos YAML do Google Cloud e do Kubernetes

O Cloud Code foi projetado para facilitar a configuração do Kubernetes e do Cloud Build, inspecionando o esquema para valores de estrutura e válidos e fornecendo erros descritivos. O Cloud Code inclui soluções prontas para uso para esquemas comuns, conclusões inteligentes e documentação ao passar o cursor.

Arquivos de configuração YAML compatíveis

O Cloud Code também é compatível com definições personalizadas de recursos personalizados (CRDs, na sigla em inglês) do Kubernetes, como Kubeflow, pronto para uso.

Como usar esquema personalizado

Com o Cloud Code, é possível fornecer seu próprio esquema de CRD com a configuração cloudcode.yaml.crdSchemaLocations no arquivo settings.json. É possível apontar para um arquivo local ou um URL. Os URLs que apontam para github.com são convertidos automaticamente em raw.githubusercontent.com.

Como extrair o esquema de um cluster

Quando você muda para um cluster que executa o Kubernetes v1.16 e versões posteriores no Kubernetes Explorer, o Cloud Code extrai automaticamente o esquema de todos os CRDs instalados.

Como configurar com snippets

Snippets prontos para uso no esquema YAML comum (usando Command/Ctrl+Space para ver opções) facilitam a inicialização de um novo arquivo YAML ou a adição de um já existente sem erros, da melhor maneira possível. . O Cloud Code facilita o trabalho com campos repetitivos. preencha um e o Cloud Code preenche as instâncias restantes.

Como usar snippets com campos repetitivos

O Cloud Code oferece os seguintes 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

Como ativar a sincronização de arquivos do Skaffold e a recarga dinâmica

Para melhorar a eficiência do fluxo de trabalho de desenvolvimento local e evitar a necessidade de recriar, reimplantar e reiniciar os pods, o Skaffold aceita copiar arquivos alterados para um contêiner implantado. Isso significa que, ao fazer mudanças em arquivos estáticos e de código-fonte, é possível ver as alterações em questão de segundos, criando um loop de feedback acelerado.

Em arquivos estáticos, como HTML e CSS, o comportamento de cópia desse arquivo é chamado de sincronização de arquivos.

Para arquivos de código-fonte, esse comportamento é chamado de recarga dinâmica e é compatível com os seguintes tipos de arquivo:

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

Com a recarga dinâmica configurada, o Skaffold detecta alterações nos arquivos compatíveis e sincroniza essas alterações no contêiner em execução no cluster. Alterações nos tipos de arquivo que não são compatíveis com recarga dinâmica acionam uma recriação de imagem e uma reinicialização de pod.

A sincronização automática de arquivos e a recarga dinâmica são ativadas por padrão quando você está trabalhando com o Buildpacks como o builder preferido. Para outros builders como o Docker, especifique uma seção sync no skaffold.yaml para o artefato que você está personalizando.

A configuração de sincronização pode ser uma das seguintes (em ordem de preferência):

  • auto (apenas para artefatos Jib e Buildpacks. Esse será o padrão se não for especificado para o Buildpacks.
  • infer
  • manual

A seguinte seção sync de amostra em um arquivo skaffold.yaml especifica uma sincronização manual para sincronizar todos os arquivos HTML /static-html com a pasta static em um contêiner:

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

Para uma análise detalhada sobre a sincronização de arquivos e a especificação de regras de sincronização, consulte o guia do Skyffold sobre sincronização de arquivos.

Como concluir com contexto

Com base no esquema atual, o Cloud Code fornece conclusões contextuais e documentos relevantes para ajudar você a escolher a opção certa.

Conclusões contextuais do esquema do Kubernetes

Como validar o esquema YAML

O Cloud Code é compatível com a validação de esquema sinalizando tags e valores inválidos nos arquivos YAML e sugerindo correções, quando possível.

Valor do campo de nome sublinhado em vermelho para destacar um valor inválido de "1234". Estados de texto ao passar o cursor: "Tipo incorreto. String esperada."

Como descobrir documentações passando o cursor do mouse

O Cloud Code exibe a documentação relevante quando você passa o cursor sobre um valor no esquema.

Informações de documentação passando o cursor do mouse no esquema

Como acessar definições de recurso

Veja rapidamente as definições de recursos clicando com o botão direito do mouse e selecionando Go to Definition ou Peek Definition.

Informações de definição ao clicar com o botão direito do mouse no esquema

Como aplicar um arquivo YAML

Para aplicar uma alteração de configuração usando o arquivo atual, execute o Cloud Code: aplique o arquivo JSON/YAML atual com o recurso implantado do Kubernetes na paleta de comandos (clique em Ícone de gerenciamento Manage > Palette de comandos).

Esse comando exibe uma visualização de diferença para você revisar as alterações. Clique em Aplicar quando solicitado a aplicar essa alteração. Isso executa kubectl apply -f.

Como visualizar diferenças entre arquivos YAML

Para ver as diferenças entre um arquivo YAML no controle de origem e um arquivo YAML implantado, use o Cloud Code: diff o arquivo JSON/YAML atual com o recurso implantado do Kubernetes do Command. Paleta (clique em Ícone de gerenciamento Manage > Palette de comandos).

Visualização de diferenças do esquema do Kubernetes

Como executar uma simulação de um arquivo YAML

Para executar uma simulação da sua configuração e verificar sua validade, é possível executar Cloud Code: simulação atual para validação do lado do servidor e Cloud Code: simulação -run config atual para validação do lado do cliente na paleta de comandos (clique em Ícone de gerenciamento Gerenciar > Palette de comandos).

Comandos de simulação listados na paleta de comandos e configuração atual de simulação para a validação do lado do servidor selecionada

Isso executa kubectl apply -f dry-run=server (ou kubectl apply -f dry-run=client, para a opção "Cliente") e exibe uma validação bem-sucedida (ou uma mensagem de erro, se o arquivo de configuração não for válido) como uma notificação toast. de dados.

No exemplo a seguir, a validação de simulação no servidor do arquivo de configuração, hello.deployment.yaml, retorna um erro ao tentar criar uma implantação porque o namespace especificado, random-namespace não t.

A validação de simulação no servidor falha em "hello.deployment.yaml" com uma mensagem de erro exibida como um aviso. Os detalhes do erro são encontrados no canal de saída. O namespace "random-namespace" não existe

Como trabalhar com secrets

Usar mapas de configuração e secrets é uma parte fundamental de trabalhar com o Kubernetes. Para ver o contexto de um secret em base64 com o Cloud Code, passe o cursor sobre o secret para decodificá-lo.

Decodifique o secret passando o cursor do mouse com o Cloud Code

Como receber suporte

Acesse o GitHub para enviar feedback e informar problemas ou o Stack Overflow (ambos em inglês) para fazer perguntas.