Este documento descreve como começar a usar o Skaffold como parte do Cloud Deploy, incluindo o seguinte:
- Como 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, usando o Skaffold para desenvolvimento local
- Opcionalmente, usar 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 no momento
O Skaffold é uma ferramenta de linha de comando de código aberto que melhora a produtividade desenvolvedores de aplicativos. Ele orquestra o desenvolvimento contínuo, a integração contínua (CI), e entrega contínua (CD).
O Skaffold fornece configuração declarativa e portátil usando um que permite usar ferramentas diferentes 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 para implantar seu aplicativo em cada destino; no seu progresso. Após a implantação, O Skaffold realiza verificações de integridade para monitorar o ambiente de execução de destino. implantação do Google Workspace.
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) conforme você alterar o código. Cloud Code para VS Code e Cloud Code for IntelliJ As extensões do ambiente de desenvolvimento integrado integram o Skaffold ao Visual Studio Code e aos ambientes de desenvolvimento integrado do JetBrains. para o desenvolvimento contínuo.
Skaffold para entrega contínua
Também é possível usar o Skaffold para entrega contínua,
com as etapas de criação, implantação, renderização e aplicação. O Cloud Deploy usa
Render and apply do Skaffold
recursos. Para usar o Cloud Deploy, é preciso ter pelo menos um
skaffold.yaml
.
Com o Skaffold, também é possível fazer a integração com gerenciamento de manifesto de terceiros.
como Helm e Kustomize.
O uso do Skaffold dessa forma permite utilizar os recursos dessas ferramentas para renderizar
manifestos. kubectl
continua sendo o implantador desses manifestos.
Estou começando a implantar no Kubernetes
Com o Skaffold, você pode configurar um conjunto básico de manifestos para todos os implantações. Depois, é possível usar o mecanismo de renderização do Skaffold, por meio do Cloud Deploy, para renderizar e implantar cada manifesto específico de implantação de um desses manifestos básicos.
Leia mais sobre como gerenciar manifestos, incluindo exemplos de como usar o Skaffold e o Cloud Deploy com comum ferramentas para modelos de manifesto, como Helm e Kustomize.
O que é necessário para fazer o Cloud Deploy funcionar?
Para usar um pipeline básico de entrega do Cloud Deploy,
Arquivo de configuração do skaffold.yaml
precisa de pelo menos a seguinte configuração:
As informações do cabeçalho necessárias para todas as configurações do
skaffold.yaml
:apiVersion: skaffold/v4beta7 kind: Config
Uma estrofe de
manifests
, para GKE, GKE Enterprise ou Cloud Run listando todos os manifestos brutos do Kubernetes (a menos que você esteja usando um ferramenta de gerenciamento de manifesto, como Helm ou Kustomize).Confira um exemplo que usa um manifesto bruto do Kubernetes:
manifests: rawYaml: - deployment.yaml
Se você planeja usar um renderizador (como Helm ou Kustomize) para renderizar manifestos, consulte Adicionar suporte do Helm ao arquivo skaffold.yaml e Adicionar o suporte do Kustomize ao arquivo skaffold.yaml para saber como configurar o Skaffold para usar essas ferramentas.
Para ver exemplos de Helm e Kustomize, consulte Gerenciar manifestos
Uma estrofe de
deploy
, comdeploy.kubectl
, para implantação em GKE ou GKE Enterprise, oudeploy.cloudrun
para implantação no Cloud Run.Para destinos do GKE e GKE Enterprise:
deploy: kubectl: {}
A estrofe de implantação implanta os manifestos do aplicativo que foram fornecidos no estrofe de manifesto.
Para destinos do Cloud Run:
deploy: cloudrun: {}
A estrofe de implantação implanta os manifestos do aplicativo fornecidos nos manifestos estrofe.
Se você usa segmentações personalizadas, seu
skaffold.yaml
deve ter o cabeçalho (apiVersion
e kind:
), além do
ações personalizadas
que a segmentação personalizada usará se o tipo de segmentação personalizada ainda não tiver
referenciar um
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
identifica os manifestos que serão usados. Consulte a
seção anterior
para orientação sobre o que precisa constar nesse arquivo.
Faça com que o Cloud Deploy gere o skaffold.yaml
Se você não tiver um arquivo skaffold.yaml
, mas tiver um único arquivo Kubernetes
do BigQuery ou um arquivo de definição de serviço do Cloud Run,
O Cloud Deploy pode gerar um arquivo skaffold.yaml
para você.
O arquivo do Skaffold gerado estará disponível na origem do Cloud Storage de teste após a conclusão do lançamento.
O comando a seguir inclui a sinalização --from-k8s-manifest
, transmitindo a
manifesto do Kubernetes. O Cloud Deploy usa as informações no
para gerar o skaffold.yaml
, que será usado na versão.
gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION
Para gerar o skaffold.yaml
com base em 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 qualquer uma dessas sinalizações com a sinalização --skaffold-file
ou
A flag --source
gera um erro.
Como usar o arquivo skaffold.yaml
gerado
O skaffold.yaml
gerado é adequado para integração, aprendizado
uma demonstração do Cloud Deploy. Depois de conhecer o Cloud Deploy,
e para cargas de trabalho de produção, uma configuração do Skaffold
diferencia 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, use o arquivo na
o arquivo de origem da renderização, não o arquivo renderizado. A origem da renderização
disponível para download na guia Artefatos da seção **Detalhes da versão **
página.
Esse
skaffold.yaml
gerado é incluído na origem de renderização armazenada em um do bucket do Cloud Storage.Para visualizar esse arquivo, faça o download do arquivo
.tar.gz
e o extraia.O
skaffold.yaml
renderizado está disponível em Artefatos de destino.Na seção Artefatos de destino, clique em Exibir artefatos.
Como usar o Skaffold para desenvolvimento local
Um dos pontos fortes do Skaffold é que pode ser usado para operações locais
desenvolvimento de software e para CI/CD.
No modo dev
, o Skaffold monitora os arquivos de origem e, quando detecta uma mudança,
O Skaffold recria as imagens, testa novamente e reimplanta os contêineres em uma
cluster minikube, por exemplo, na máquina local.
Ao usar o Skaffold dessa forma, você pode usar os mesmos comandos localmente que para implantação remota.
Se você usa o Skaffold para desenvolvimento local, pode definir um Skaffold separado perfis 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 locais contínuas, é possível usar Skaffold para CI/CD. O Cloud Deploy usa os recursos de CI/CD no Skaffold para renderizar e aplicar os manifestos e implantar o aplicativo nos destinos, usando imagens de contêiner 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á-las ao destino.
Essa separação entre renderizar e aplicar permite que você capture a declarativo do seu aplicativo na configuração, para que ele possa ser aplicados com segurança e repetição (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 alvo.
O Cloud Deploy não aceita o uso de outros implantadores para implantar seu para o aplicativo. Mas é possível usar ferramentas como o Helm ou Kustomize para renderização.
Para saber mais sobre como o Cloud Deploy faz implantações usando kubectl
como o
implantador, consulte Arquitetura de serviço do Cloud Deploy.
Sobre os perfis do Skaffold
É possível criar um Skaffold separado
perfis: identificados em
skaffold.yaml
, em uma estrofe de profiles:
.
Ao usar perfis do Skaffold com o Cloud Deploy, é possível criar
perfis separados para todos ou alguns dos seus destinos. Por exemplo, diferentes
perfis para dev
, staging
e prod
.
Não é preciso ter perfis para usar o Skaffold no Cloud Deploy.
mas são úteis para definir personalizações de manifesto entre seus alvos, para
usando diferentes arquivos kustomization.yaml
do Kustomize por destino.
Adicionar suporte do Kustomize ao seu skaffold.yaml
Como integrar a configuração do Kustomize ao Cloud Deploy/Skaffold consiste no seguinte:
Inclua um arquivo
kustomization.yaml
entre seus arquivos de configuração.Você pode armazenar seus arquivos de configuração em um diretório local ou em um do bucket do Cloud Storage.
No arquivo
skaffold.yaml
, crie uma estrofedeploy
para cada perfil.Também é possível ter uma estrofe
deploy
fora de qualquer perfil definido, se não esteja usando perfis ou para uma configuração de implantação padrão não vinculada a um perfil.Veja a seguir um exemplo de configuração do Skaffold que mostra
deploy
estrofes por 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
test
,staging
eprod
. Ele também mostra um perfil para desenvolvimento local. Em cada perfil, há uma estrofedeploy.kustomize
com um caminho que aponta para o local da personalização a ser usada para esse destino.
Adicionar suporte ao Helm para skaffold.yaml
Use o Helm para renderizar manifestos. O Cloud Deploy não usa
Helm para implantar seus aplicativos e oferece suporte apenas a kubectl
como implantador.
Para usar o Helm, você precisa dos seus gráficos ou gráficos do Helm, armazenados em qualquer local
referência a partir do seu skaffold.yaml
. Esse local pode estar em um arquivo
um repositório, possivelmente com um skaffold.yaml
ou um
Repositório da Container Initiative (OCI).
Para usar um gráfico do Helm, adicione uma estrofe helm
ao seu
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 do skaffold.yaml
mostra o que é necessário nesta estrofe de helm
.
Recursos do Skaffold incompatíveis
Os seguintes recursos do Skaffold não podem ser usados no Cloud Deploy:
-
Como usar
--module=
para selecionar módulos específicos parabuild
,render
,apply
e assim por diante, não é compatível. Há suporte para módulos estáticos. No Helm, a capacidade de criar um namespace caso não exista um.
A seguir
Acesse o site da Skaffold para saber como ele funciona e o que ele pode fazer por você.
Praticar usando o Cloud Deploy com os perfis Kustomize e Skaffold.
Saiba como o Cloud Deploy seleciona a versão do Skaffold a ser usada, quando a versão do Skaffold muda e como para determinar qual versão está em uso.
Saiba como usar o Skaffold perfis com ferramentas avançadas de gerenciamento de manifesto, como Helm, Kustomize e kpt.