Este documento descreve como começar a usar o Skaffold como parte do Cloud Deploy, incluindo o seguinte:
- Configurar o Skaffold para uso com um pipeline de entrega do Cloud Deploy
- Usar o Skaffold e o Cloud Deploy com ferramentas de renderização de terceiros, como Helm e Kustomize
- Opcionalmente, use o Skaffold para desenvolvimento local.
- Opcionalmente, use o Skaffold para integração e implantação contínuas (CI/CD)
Por que usar o Skaffold?
Quer saber por que o Cloud Deploy usa o Skaffold e por que você precisa gerenciar uma configuração do Skaffold? Continue lendo.
Tenho experiência com CI/CD, mas não uso o Skaffold
O Skaffold é uma ferramenta de linha de comando de código aberto para melhorar a produtividade dos desenvolvedores. Ele orquestra o desenvolvimento contínuo, a integração contínua (CI) e a entrega contínua (CD).
O Skaffold oferece configuração declarativa e portátil usando uma arquitetura conectável, permitindo que você use diferentes ferramentas para a fase de renderização.
Quando uma versão é criada, o Cloud Deploy chama o Skaffold para renderizar seus manifestos. No momento da implantação, o Cloud Deploy chama o Skaffold novamente para aplicar esses manifestos e implantar o aplicativo em cada destino na progressão. Após a implantação, o Skaffold realiza verificações de integridade para monitorar o ambiente de execução de destino e garantir uma implantação bem-sucedida.
Skaffold para desenvolvimento contínuo
Ao usar o Skaffold para desenvolvimento contínuo, as imagens são criadas, testadas e implantadas em um cluster (ou Minikube) à medida que você muda o código. As extensões do ambiente de desenvolvimento integrado do Cloud Code para VS Code e do Cloud Code para IntelliJ integram o Skaffold aos ambientes de desenvolvimento integrado do Visual Studio Code e do JetBrains, para desenvolvimento contínuo.
Skaffold para entrega contínua
Você também pode usar o Skaffold para entrega contínua,
com etapas de build, implantação, renderização e aplicação. O Cloud Deploy usa os recursos de renderização e aplicação do Skaffold. Para usar o Cloud Deploy, você precisa de pelo menos um arquivo de configuração
skaffold.yaml válido.
Com o Skaffold, também é possível integrar ferramentas de gerenciamento de manifestos de terceiros, como Helm e Kustomize.
Usar o Skaffold dessa forma permite que você use os recursos dessas ferramentas para renderizar
manifestos. kubectl continua sendo o implantador desses manifestos.
Não tenho experiência com implantação no Kubernetes
Com o Skaffold, é possível configurar um conjunto básico de manifestos para todos os seus implantes. Em seguida, use o mecanismo de renderização do Skaffold, pelo Cloud Deploy, para renderizar e implantar cada manifesto específico da implantação de um desses manifestos básicos.
Leia mais sobre gerenciamento de manifestos, incluindo exemplos de uso do Skaffold e do Cloud Deploy com ferramentas comuns de criação de modelos de manifesto, como Helm e Kustomize.
O que é necessário para que o Cloud Deploy funcione?
Para usar um pipeline de entrega básico do Cloud Deploy, o arquivo de configuração
skaffold.yaml precisa ter pelo menos a seguinte configuração:
As informações de cabeçalho que todas as configurações de
skaffold.yamlprecisam:apiVersion: skaffold/v4beta7 kind: ConfigUma estrofe
manifestspara GKE, clusters anexados do GKE ou Cloud Run que lista todos os manifestos brutos do Kubernetes, a menos que você esteja usando uma ferramenta de gerenciamento de manifestos, como Helm ou Kustomize.Confira um exemplo usando um manifesto bruto do Kubernetes:
manifests: rawYaml: - deployment.yamlSe você planeja usar um renderizador (como Helm ou Kustomize) para renderizar manifestos, consulte Adicionar suporte do Helm ao skaffold.yaml e Adicionar suporte do Kustomize ao skaffold.yaml para saber como configurar o Skaffold para usar essas ferramentas.
Para exemplos do Helm e do Kustomize, consulte Gerenciar manifestos
Uma estrofe
deploy, comdeploy.kubectlpara implantação no GKE ou em clusters anexados do GKE, oudeploy.cloudrunpara implantação no Cloud Run.Para clusters anexados do GKE e do GKE:
deploy: kubectl: {}A estrofe de implantação implanta os manifestos de aplicativo fornecidos na estrofe de manifestos.
Para destinos do Cloud Run:
deploy: cloudrun: {}A estrofe de implantação implanta os manifestos de aplicativos fornecidos na estrofe "manifests".
Se você estiver usando metas personalizadas, seu
skaffold.yaml precisará ter o cabeçalho (apiVersion e kind:), além das
ações personalizadas
que a meta personalizada vai usar se o tipo dela ainda não
fizer referência a uma
configuração remota do Skaffold.
Crie um arquivo skaffold.yaml
O Cloud Deploy usa o Skaffold para renderizar e implantar seus aplicativos.
Para cada versão, é necessário fornecer pelo menos um arquivo skaffold.yaml que
identifique os manifestos a serem usados. Consulte a
seção anterior
para saber o que precisa ser incluído nesse arquivo.
Faça com que o Cloud Deploy gere seu skaffold.yaml
Se você não tiver um arquivo skaffold.yaml, mas tiver um manifesto do Kubernetes
ou um arquivo de definição de serviço do Cloud Run,
o Cloud Deploy poderá gerar um arquivo skaffold.yaml para você.
O arquivo Skaffold gerado vai ficar disponível no diretório de preparo de origem do Cloud Storage após a conclusão do lançamento.
O comando a seguir inclui a flag --from-k8s-manifest, transmitindo o manifesto do Kubernetes. O Cloud Deploy usa as informações no
manifesto para gerar o skaffold.yaml, que é usado para a versão.
gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION
Para gerar o skaffold.yaml de um YAML de serviço do Cloud Run,
use o mesmo comando, mas com --from-run-manifest em vez de
--from-k8s-manifest
Usar qualquer uma dessas flags com a flag --skaffold-file ou --source gera um erro.
Como usar o arquivo skaffold.yaml gerado
O skaffold.yaml gerado é adequado para integração, aprendizado e demonstração do Cloud Deploy. Depois de se familiarizar com o Cloud Deploy e para cargas de trabalho de produção, talvez você queira uma configuração do Skaffold que diferencie seus destinos (usando perfis do Skaffold).
Ao usar o arquivo skaffold.yaml gerado como ponto de partida para criar
sua própria configuração diferenciada do Skaffold, use o arquivo no
arquivo de origem de renderização, não o arquivo renderizado. A origem da renderização está disponível para download na guia Artefatos da página Detalhes do lançamento.
Esse
skaffold.yamlgerado está incluído na origem de renderização armazenada em um bucket do Cloud Storage.Para ver esse arquivo, faça o download e extraia o arquivo
.tar.gz.O
skaffold.yamlrenderizado está disponível em Artefatos de destino.Na seção Artefatos de destino, clique em Ver artefatos.

Como usar o Skaffold para desenvolvimento local
Um dos pontos fortes do Skaffold é que ele pode ser usado para desenvolvimento
local e para CI/CD.
No modo dev, o Skaffold monitora os arquivos de origem e, quando detecta uma mudança,
ele recria as imagens, testa novamente e reimplanta os contêineres em um
cluster do minikube (por exemplo) na sua máquina local.
Ao usar o Skaffold dessa forma, você pode usar os mesmos comandos localmente e para implantação remota.
Se você usa o Skaffold para desenvolvimento local, é possível definir perfis separados do Skaffold para seus destinos e uma estrofe de implantação padrão para desenvolvimento local.
Quando você interrompe o modo dev, o Skaffold limpa os artefatos implantados do cluster.
Como usar o Skaffold para CI/CD
Além de usar o Skaffold para build e implantação locais contínuos, você pode usar o Skaffold para CI/CD. O Cloud Deploy usa os recursos de CI/CD no Skaffold para renderizar e aplicar seus manifestos e implantar o aplicativo nos destinos definidos, considerando imagens de contêineres criadas com uma ferramenta de CI como o Cloud Build e um registro de imagens como o Artifact Registry.
Renderizar, implantar e aplicar
O Skaffold separa o processo de renderização do manifesto da implantação.
O Cloud Deploy chama skaffold render para renderizar os manifestos e skaffold apply para aplicá-los ao destino.
Essa separação entre renderização e aplicação permite capturar o estado declarativo completo do aplicativo na configuração, para que ele possa ser aplicado com segurança e repetidamente (por exemplo, para rollbacks). Essa técnica também facilita as aprovações. Como os manifestos são renderizados para todos os destinos antes do primeiro lançamento, é possível ver o YAML renderizado que será aplicado a cada destino.
O Cloud Deploy não oferece suporte ao uso de outros implantadores para implantar seu aplicativo. No entanto, é possível usar ferramentas como Helm ou Kustomize para renderização.
Para saber mais sobre como o Cloud Deploy faz implantações usando kubectl como o
implantador, consulte Arquitetura do serviço do Cloud Deploy.
Sobre os perfis do Skaffold
É possível criar perfis separados do Skaffold, identificados em skaffold.yaml, em uma estrofe profiles:.
Ao usar perfis do Skaffold com o Cloud Deploy, você pode criar
perfis separados para todos ou alguns dos seus destinos. Por exemplo, perfis diferentes para dev, staging e prod.
Os perfis não são necessários para usar o Skaffold no Cloud Deploy, mas são úteis para definir personalizações de manifesto entre seus destinos, por exemplo, usando diferentes arquivos kustomization.yaml do Kustomize por destino.
Adicionar suporte do Kustomize ao seu skaffold.yaml
A integração da configuração do Kustomize com a configuração do Cloud Deploy/Skaffold consiste no seguinte:
Inclua um arquivo
kustomization.yamlentre os arquivos de configuração.É possível armazenar os arquivos de configuração em um diretório local ou em um bucket do Cloud Storage.
No arquivo
skaffold.yaml, crie uma estrofedeploypara cada perfil.Você também pode ter uma estrofe
deployfora de qualquer perfil definido, se não estiver usando perfis ou para uma configuração de implantação padrão não vinculada a um perfil.Confira a seguir um exemplo de configuração do Skaffold que mostra estrofes
deploypor perfil e usa um app de exemplo fictício chamadomy-app:apiVersion: skaffold/v4beta7 kind: Config build: artifacts: - image: my-app-web-profiles context: my-app-web-profiles - image: my-app-application-profiles context: my-app-application-profiles googleCloudBuild: projectId: ${PROJECT_ID} profiles: - name: local manifests: kustomize: paths: - my-app-application-profiles/kubernetes/local - name: test manifests: kustomize: paths: - my-app-application-profiles/kubernetes/test - name: staging manifests: kustomize: paths: - my-app-application-profiles/kubernetes/staging - name: prod manifests: kustomize: paths: - my-app-application-profiles/kubernetes/prod deploy: kubectl: {}A configuração do Skaffold mostrada aqui tem perfis separados para destinos
test,stagingeprod. Ele também mostra um perfil para desenvolvimento local. Em cada perfil, há uma seçãodeploy.kustomizecom um caminho que aponta para o local da personalização a ser usada para esse destino.
Adicionar suporte do Helm ao seu skaffold.yaml
É possível usar o Helm para renderizar seus manifestos. O Cloud Deploy não usa o Helm para implantar seus aplicativos e só é compatível com kubectl como implantador.
Para usar o Helm, você precisa ter o gráfico ou os gráficos do Helm armazenados em qualquer local que possa ser referenciado no skaffold.yaml. Esse local pode estar em um sistema de arquivos, um repositório, possivelmente junto com seu skaffold.yaml, ou um repositório da Open Container Initiative (OCI).
Para usar um gráfico Helm, adicione uma estrofe helm ao arquivo
skaffold.yaml.
apiVersion: skaffold/v4beta7
kind: Config
build:
artifacts:
- image: skaffold-helm-image
manifests:
helm:
releases:
- name: skaffold-helm-image
chartPath: charts
deploy:
kubectl: {}
A referência skaffold.yaml
mostra o que é necessário nesta estrofe helm.
Recursos do Skaffold sem suporte
Não é possível usar os seguintes recursos do Skaffold no Cloud Deploy:
-
Não é possível usar
--module=para selecionar módulos específicos parabuild,render,applye assim por diante. Os módulos estáticos são compatíveis. No Helm, a capacidade de criar um namespace se ele não existir.
A seguir
Acesse o site da Skaffold para saber como ele funciona e o que ele pode fazer por você.
Pratique usando o Cloud Deploy com perfis do Kustomize e do Skaffold.
Saiba como o Cloud Deploy seleciona as versões de ferramentas a serem usadas e como determinar quais versões estão em uso.
Saiba como usar os perfis do Skaffold com ferramentas avançadas de gerenciamento de manifestos, como Helm, Kustomize e kpt.