Neste documento, descrevemos como começar a usar o Skaffold como parte do Google Cloud Deploy, incluindo o seguinte:
- Como configurar o Skaffold para uso com um pipeline de entrega do Google Cloud Deploy
- Usar o Skaffold e o Google Cloud Deploy com ferramentas de renderização de terceiros, como Helm e Kustomize
- Opcionalmente, usando o Skaffold para desenvolvimento local
- Opcionalmente, usando o Skaffold para integração e implantação contínuas (CI/CD)
Por que o Skaffold?
Quer saber por que o Google 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 atualmente.
O Skaffold é uma ferramenta de linha de comando de código aberto para melhorar a produtividade para desenvolvedores. Ele orquestra o desenvolvimento contínuo, a integração contínua (CI) e a entrega contínua (CD).
O Skaffold fornece configuração declarativa e portátil usando uma arquitetura conectável, permitindo que você use ferramentas diferentes para a fase de renderização.
Quando uma versão é criada, o Google Cloud Deploy chama o Skaffold para renderizar seus manifestos. No momento da implantação, o Google Cloud Deploy chama o Skaffold novamente para aplicar esses manifestos e implantar o aplicativo em cada destino na sua progressão. Após a implantação, o Skaffold executa verificações de integridade para monitorar o ambiente de execução de destino e implantação.
Skaffold para desenvolvimento contínuo
Quando você usa o Skaffold para desenvolvimento contínuo, as imagens são criadas, testadas e implantadas em um cluster (ou Minikube) à medida que você altera o código. As extensões de ambiente de desenvolvimento integrado do Cloud Code para VS Code e do Cloud Code para IntelliJ integram o Skaffold ao ambiente de desenvolvimento integrado do Visual Studio Code e do JetBrains para desenvolvimento contínuo.
Skaffold para entrega contínua
Também é possível usar o Skaffold para entrega contínua,
com etapas de criação, implantação, renderização e aplicação. O Google Cloud Deploy usa os recursos de renderização e aplicação do Skaffold. Para usar o Google Cloud Deploy, é necessário pelo menos um arquivo de configuração skaffold.yaml
válido.
Com o Skaffold, também é possível integrar-se a ferramentas de gerenciamento de manifesto de terceiros, como Helm e Kustomize.
Dessa forma, é possível usar os recursos dessas ferramentas para renderizar
manifestos com o Skaffold. kubectl
continua sendo o implantador desses manifestos.
Estou começando a implantar no Kubernetes
Com o Skaffold, é possível configurar um conjunto básico de manifestos para todas as implantações. Em seguida, é possível usar o mecanismo de renderização do Skaffold, por meio do Google Cloud Deploy, para renderizar e implantar cada manifesto específico da implantação de um desses manifestos base.
Leia mais sobre como gerenciar manifestos, incluindo exemplos de uso do Skaffold e do Google Cloud Deploy com ferramentas comuns de modelos de manifesto, como Helm e Kustomize.
O que é necessário para fazer o Google Cloud Deploy funcionar?
Para usar um pipeline de entrega básico do Google Cloud Deploy, o arquivo de configuração skaffold.yaml
precisa de pelo menos a seguinte configuração:
As informações do cabeçalho necessárias a todas as configurações de
skaffold.yaml
:apiVersion: skaffold/v2beta28 Kind: Config
Uma estrofe
deploy
comdeploy.kubectl
para implantação no GKE ou no Anthos, oudeploy.cloudrun
para implantação no Cloud Run.Para o GKE:
deploy: kubectl: manifests: - ...
Na estrofe
manifests
, uma lista de todos os manifestos brutos do Kubernetes. Se você planeja usar um renderizador (como Helm ou Kustomize) para renderizar manifestos, consulte Adicionar suporte do Kustomize ao seu skaffold.yaml e Adicionar suporte ao Helm ao skaffold.yaml para ver orientações sobre como configurar o Skaffold para usar essas ferramentas.Para o Cloud Run:
metadata: name: manifests: rawYaml: - ... deploy: cloudrun: {}
Criar um arquivo skaffold.yaml
O Google Cloud Deploy usa o Skaffold para renderizar e implantar seus aplicativos.
No mínimo, é necessário fornecer um arquivo skaffold.yaml
que identifique os
manifestos a serem usados. Veja um exemplo:
apiVersion: skaffold/v2beta28
kind: Config
deploy:
kubectl:
manifests:
- MANIFEST
Nesta configuração, MANIFEST
é o caminho para o
manifesto ou manifestos a serem processados pelo Skaffold.
Permita que o Google 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 Google Cloud Deploy poderá gerar um arquivo skaffold.yaml
para você .
O arquivo Skaffold gerado estará disponível no diretório de preparo de origem do Cloud Storage após a conclusão da versão.
O comando a seguir inclui a sinalização --from-k8s-manifest
, transmitindo o
manifesto do Kubernetes. O Google Cloud Deploy usa as informações no
manifesto para gerar o skaffold.yaml
, que será 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
usando um YAML de serviço do Cloud Run,
use o mesmo comando, mas com --from-run-manifest
em vez de
--from-k8s-manifest
.
O uso de uma dessas sinalizações com a sinalização --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 Google Cloud Deploy. Depois de se familiarizar com o Google Cloud Deploy
e para cargas de trabalho de produção, convém ter uma configuração do Skaffold que
diferencia-se entre 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, verifique se você está usando o arquivo no
arquivo de origem de renderização, não no arquivo renderizado. A fonte de renderização está
disponível para download na guia Artefatos na página
"Detalhes da versão".
Esse
skaffold.yaml
gerado está incluído na origem da renderização armazenada em um bucket do Cloud Storage.Para ver esse arquivo, faça o download do arquivo
.tar.gz
e extraia-o.O
skaffold.yaml
renderizado 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 observa seus arquivos de origem e, quando detecta uma alteração,
ele recria as imagens, testa novamente e reimplanta os contêineres em um
cluster minikube (por exemplo) na sua máquina local.
Ao usar o Skaffold dessa maneira, é possível usar os mesmos comandos localmente da implantação remota.
Se você usar o Skaffold para desenvolvimento local, poderá 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 criação e implantação local contínuas, use o Skaffold para CI/CD. O Google Cloud Deploy usa os recursos de CI/CD no Skaffold para renderizar e aplicar seus manifestos e implantar o aplicativo nos destinos definidos, de acordo com as imagens de contêiner criadas usando 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 Google 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 de maneira segura e repetida (por exemplo, para reversões). 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 Google Cloud Deploy não oferece suporte ao uso de outros implantadores para implantar seu aplicativo. No entanto, é possível usar ferramentas como o Helm ou o Kustomize para renderização.
Para saber mais sobre como o Google Cloud Deploy implanta usando kubectl
como o implantador, consulte Arquitetura de serviço do Google Cloud Deploy.
Sobre os perfis do Skaffold
É possível criar perfis separados do Skaffold, identificados em skaffold.yaml
, em uma estrofe de profiles:
.
Ao usar perfis do Skaffold com o Google Cloud Deploy, é possível criar perfis separados para todos ou alguns de seus destinos. Por exemplo, perfis
diferentes para dev
, staging
e prod
.
Os perfis não são necessários para usar o Skaffold no Google Cloud Deploy,
mas são úteis para definir personalizações de manifesto entre os destinos, por
exemplo, usando diferentes arquivos kustomization.yaml
Kustomize por destino.
Adicionar suporte do Kustomize ao dispositivo skaffold.yaml
A integração da configuração do Kustomize com a configuração do Google Cloud Deploy/Skaffold consiste no seguinte:
Inclua um arquivo
kustomization.yaml
entre os arquivos de configuração.Você pode armazenar seus arquivos de configuração em um diretório local ou em um bucket do Cloud Storage.
No arquivo
skaffold.yaml
, crie uma estrofe dedeploy
para cada perfil.Também é possível ter uma estrofe de
deploy
fora de qualquer perfil definido, caso não esteja usando perfis ou para uma configuração de implantação padrão não vinculada a um perfil. Veja um exemplo:apiVersion: skaffold/v2beta28 kind: Config build: artifacts: - image: leeroy-web-profiles context: leeroy-web-profiles - image: leeroy-app-profiles context: leeroy-app-profiles googleCloudBuild: projectId: ${PROJECT_ID} profiles: - name: local deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/local - name: test deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/test - name: staging deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/staging - name: prod deploy: kustomize: paths: - leeroy-app-profiles/kubernetes/prod
A configuração do Skaffold exibida aqui tem perfis separados para destinos
test
,staging
eprod
. Ele também mostra um perfil para desenvolvimento local. Em cada perfil, há uma estrofedeploy.kustomize
com um caminho que indica o local da personalização para usar no destino.
Adicionar compatibilidade com o Helm ao skaffold.yaml
É possível usar o Helm para renderizar os manifestos. O Google Cloud Deploy não usa o Helm para implantar seus aplicativos e é compatível apenas com kubectl
como implantador.
Para usar o Helm, você precisa dos 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 com seu skaffold.yaml
ou um repositório da Open
Container Initiative (OCI).
Para usar um gráfico do Helm, adicione uma estrofe helm
ao seu arquivo skaffold.yaml
.
apiVersion: skaffold/v2beta28
kind: Config
build:
artifacts:
- image: skaffold-helm-image
deploy:
helm:
releases:
- name: skaffold-helm-image
chartPath: charts
A referência do skaffold.yaml
mostra o que é necessário nesta estrofe de helm
.
Como usar o kpt com o Skaffold
Recomendamos que você não use kpt com o Skaffold V1 no Google Cloud Deploy.
Recursos do Skaffold não compatíveis
Os seguintes recursos do Skaffold não podem ser usados no Google Cloud Deploy:
-
Não é possível usar
--module=
para selecionar módulos específicos parabuild
,render
,apply
e assim por diante. 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 Google Cloud Deploy com perfis do Kustomize e Skaffold.
Saiba como o Google Cloud Deploy seleciona a versão do Skaffold a ser usada, quando ela é alterada e como determinar qual versão está em uso.
Aprenda a usar perfis do Skaffold com ferramentas avançadas de gerenciamento de manifestos, como Helm, Kustomize e kpt.