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 a estrutura e os valores válidos e fornecendo erros descritivos. O Cloud Code inclui soluções prontas para uso relacionadas a esquemas comuns, conclusões inteligentes e documentação ao passar o cursor do mouse.

Arquivos de configuração YAML compatíveis

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

Observação: para usar a agregação de recursos mais atualizada, você precisará da versão mais recente do Cloud Code.

Como usar esquema personalizado

Com o Cloud Code, é possível fornecer seu próprio esquema 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 de esquema YAML comum (usando Command/Ctrl+Space para ver opções) facilitam o início de um novo arquivo YAML ou a adição a um existente sem erros, sem deixar de seguir o melhor práticas. O Cloud Code facilita o trabalho com campos repetitivos; preencha uma delas, e as instâncias restantes serão preenchidas no Cloud Code.

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 Skaffold e Hot Reload

Para melhorar a eficiência do fluxo de trabalho de desenvolvimento local e evitar ter que recriar, reimplantar e reiniciar os pods, o Skaffold é compatível com a cópia de arquivos alterados para um contêiner implantado. Isso significa que, ao fazer alterações em arquivos de código estático e de origem, é possível ver as alterações entrarem em vigor em questão de segundos, gerando um loop de feedback acelerado.

Para arquivos estáticos (como arquivos HTML e CSS), esse comportamento de cópia do arquivo é chamado de sincronização de arquivos.

Para arquivos de código-fonte, esse comportamento é chamado de carregamento quente e é compatível com os seguintes tipos de arquivo:

  • Vá para: *.go
  • Java: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js, *.mjs, *.cafe, *.litcoff, *.json

Com a atualização a quente configurada, o Skaffold detecta alterações nos arquivos compatíveis e as sincroniza no contêiner em execução no cluster. As alterações nos tipos de arquivo que não são compatíveis com a atualização a quente acionam a recriação de imagens e a reinicialização do pod.

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

Sua configuração de sincronização pode ser um dos seguintes (em ordem de preferência):

  • auto (somente para artefatos do Jib e Buildpacks). Esse é o padrão se não for especificado para Buildpacks.
  • infer
  • manual

O seguinte exemplo de seção sync 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 ver uma visão detalhada da sincronização de arquivos e especificar regras de sincronização, consulte o Guia do Skaffold sobre sincronização de arquivos (em inglês).

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

Para ver rapidamente as definições de recursos, clique com o botão direito do mouse e escolha Ir para definição 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: aplicar o arquivo JSON/YAML atual com o recurso implantado pelo Kubernetes a partir da paleta de comandos (acessível em Manage Ícone de gerenciamento).

Esse comando exibe uma visualização diferente para que você analise as alterações. Clique em Aplicar quando aparecer a pergunta perguntando se quer aplicar essa alteração. Isso executa kubectl apply -f.

Diferença entre arquivos YAML

Para ver as diferenças entre um arquivo YAML no controle de origem e outro implantado, use o Cloud Code: Diff the current JSON/YAML file with Kubernetes deployed resource na paleta de comandos (acessível no menu Gerenciar Ícone de gerenciamento ). Isso abre uma visualização diff para você comparar e contrastar dois arquivos de esquema.

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

Como executar uma simulação de um arquivo YAML

Para executar uma simulação da configuração e verificar a validade dela, use o Cloud Code: configuração de simulação atual para validação do lado do servidor e Cloud Code: Serial -run config atual para a validação do lado do cliente na Paleta de comandos (acessível por meio do menu Gerenciar Ícone de gerenciamento ).

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

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

No exemplo a seguir, a validação da simulação de execução do 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 não existe.

A validação da simulação do 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 ele 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.