Esta página descreve como configurar o Cloud Deploy para renderizar a configuração de cada destino num pipeline de fornecimento.
O Cloud Deploy usa o Skaffold para renderizar os seus manifestos do Kubernetes. O serviço suporta a renderização de manifestos não processados e ferramentas de gestão de manifestos mais avançadas, como o Helm, o Kustomize e o kpt.
O processo de renderização tem duas fases:
A ferramenta de gestão de manifestos gera o manifesto.
O Skaffold substitui as referências de imagens no manifesto pelas imagens que quer implementar na sua versão.
Esta página inclui exemplos de configuração com o Helm e o Kustomize.
Usar o Skaffold para gerar a sua configuração
Se ainda não tiver um ficheiro de configuração do Skaffold (skaffold.yaml
), pode usar o Skaffold para gerar um com base no conteúdo do seu repositório.
Instale o Skaffold com a Google Cloud CLI:
gcloud components install skaffold
Execute
skaffold init
no repositório que contém os seus manifestos:skaffold init --skip-build
Este comando cria um ficheiro skaffold.yaml
no seu repositório. Esse ficheiro faz referência aos manifestos nesse repositório. O conteúdo tem o seguinte aspeto:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: sample-app
manifests:
rawYaml:
- k8s-manifests/deployment.yaml
- k8s-manifests/rbac.yaml
- k8s-manifests/redis.yaml
- k8s-manifests/service.yaml
Renderização de manifestos não processados
Os manifestos não processados são manifestos que não são geridos por uma ferramenta como o Helm ou o Kustomize e, por isso, não precisam de pré-processamento antes de serem preenchidos e implementados num cluster.
Por predefinição, o Cloud Deploy usa o skaffold render
para renderizar os seus manifestos do Kubernetes, substituindo os nomes de imagens não etiquetados pelos nomes de imagens etiquetados das imagens de contentores que está a implementar. Em seguida, quando
promove o lançamento, o Cloud Deploy usa
skaffold apply
para aplicar os manifestos e implementar as imagens no seu cluster do Google Kubernetes Engine.
Uma secção manifests
de uma configuração básica tem o seguinte aspeto:
manifests:
rawYaml:
- PATH_TO_MANIFEST
Consulte a documentação do Skaffold para mais informações sobre os valores que podem ser transmitidos aqui.
Renderização com o Helm
Pode usar o Cloud Deploy para renderizar os seus gráficos Helm. Para o fazer, inclua detalhes do gráfico Helm numa secção deploy
num perfil do Skaffold.
Cada definição deste tipo tem o seguinte aspeto:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
helm:
releases:
- name: RELEASE_NAME
chartPath: PATH_TO_HELM_CHART
Onde:
RELEASE_NAME é o nome da instância do gráfico Helm para esta versão.
PATH_TO_HELM_CHART é o caminho local para um gráfico Helm incluído num pacote ou um diretório de gráficos Helm não incluído num pacote.
Pode usar opções de configuração do Helm adicionais, conforme descrito na documentação do Skaffold
Renderização com o Kustomize
Pode usar o Kustomize com o Cloud Deploy. Para o fazer, indica os ficheiros de personalização a partir da secção deploy
na configuração do perfil skaffold.yaml
.
Inclui uma configuração do Kustomize separada para cada destino que está a usar com o Kustomize, em cada profile
correspondente no seu skaffold.yaml
.
Cada definição deste tipo tem o seguinte aspeto:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
kustomize:
paths:
- PATH_TO_KUSTOMIZE
Onde:
PATH_TO_KUSTOMIZE aponta para os seus ficheiros de personalização. A predefinição é
["."]
Pode usar opções de configuração adicionais do Kustomize, conforme descrito na documentação do Skaffold
Configurar manifestos diferentes por alvo
Muitas vezes, cada alvo precisa de uma configuração ligeiramente diferente. Por exemplo, pode ter mais réplicas nas implementações de produção do que nas implementações de preparação.
Pode renderizar um conjunto diferente de manifestos para cada destino, fornecendo cada variação como um perfil do Skaffold diferente.
Perfis com manifestos não processados
Quando trabalha com manifestos não processados, pode direcionar o Cloud Deploy para um ficheiro diferente, consoante o destino. Pode configurar essa opção da seguinte forma:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
rawYaml:
- prod.yaml
- name: staging
manifests:
rawYaml:
- staging.yaml
Perfis com o Kustomize
Segue-se um exemplo de skaffold.yaml
que tem perfis diferentes para testes e produção com o Kustomize, em que cada perfil aponta para uma personalização diferente:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
kustomize:
paths:
- environments/prod
- name: staging
manifests:
kustomize:
paths:
- environments/staging
Perfis referenciados no pipeline de entrega
Estes perfis, definidos em skaffold.yaml
, são referenciados na configuração do pipeline de
entrega, por destino:
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
Substitua uma imagem específica quando criar o lançamento
O manifesto pode usar um marcador de posição para o nome da imagem, que pode substituir quando criar o lançamento.
Segue-se um exemplo de um manifesto com um marcador de posição para a imagem:
apiVersion: v1
kind: Deployment
metadata:
name: getting-started
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: my-app-image
Quando cria o lançamento, pode usar a flag --images=
para identificar a imagem específica a implementar. Por exemplo, o comando seguinte cria uma versão e substitui um nome de imagem qualificado por SHA pelo nome do marcador de posição:
gcloud deploy releases create test-release-001 \
--project=test-gke-using-deployment \
--region=us-central1 \
--delivery-pipeline=my-gke-demo-app-1 \
--images=my-app-image=gcr.io/google-containers/nginx@sha256:f49a843c290594dcf4d193535d1f4ba8af7d56cea2cf79d1e9554f077f1e7aaa
O manifesto renderizado resultante tem agora uma referência à imagem especificada
em vez de my-app-image
.
O que se segue?
- Saiba mais sobre a configuração do pipeline de entrega do Cloud Deploy.
- Experimente o tutorial sobre os perfis do Skaffold do Cloud Deploy
- Saiba mais sobre o Kustomize.
- Saiba mais sobre o Helm.
- Saiba mais sobre o Kpt
- Considere usar o Artifact Registry para armazenar artefactos, como gráficos Helm ou personalizações.