Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Use o Azure Pipelines para implantar no Serviço de Kubernetes do Azure e clusters Kubernetes oferecidos por outros provedores de nuvem. O Azure Pipelines tem duas tarefas de trabalho com o Kubernetes:
- Tarefa KubernetesManifest: faça o bake e implante manifestos em clusters do Kubernetes com Helm, Kompose ou Kustomize
- Tarefa Kubectl: implante, configure e atualize um cluster do Kubernetes no Serviço de Contêiner do Azure executando comandos kubectl
Se você usar o Serviço de Kubernetes do Azure com qualquer tarefa, o tipo de conexão de serviço do Azure Resource Manager será a melhor maneira de se conectar a um cluster privado ou a um cluster com contas locais desabilitadas.
Para obter mais rastreabilidade de implantação, use um recurso do Kubernetes em ambientes , juntamente com uma tarefa do Kubernetes.
Para começar a usar o Azure Pipelines e o Serviço de Kubernetes do Azure, consulte Compilar e implantar no Serviço de Kubernetes do Azure com o Azure Pipelines. Para começar a usar o Azure Pipelines, o Kubernetes e a estratégia de implantação canária, consulte Usar uma estratégia de implantação canária para implantações do Kubernetes com o Azure Pipelines.
Tarefa KubernetesManifest
A tarefa KubernetesManifest verifica a estabilidade do objeto antes de marcar uma tarefa como bem-sucedida ou com falha. A tarefa também pode executar substituição de artefatos, adicionar anotações relacionadas à rastreabilidade de pipeline, simplificar a criação e fazer referência a imagePullSecrets, fornecer manifestos e auxiliar nas implantações de estratégia de implantação.
Observação
O pipeline com base em YAML oferece suporte a gatilhos dentro de um único repositório Git. Se você precisar de um gatilho para um arquivo de manifesto armazenado em outro repositório Git ou se forem necessários gatilhos para o Registro de Contêiner do Azure ou o Docker Hub, use um pipeline clássico em vez de um pipeline baseado em YAML.
Você pode usar a ação bake na tarefa de manifesto do Kubernetes para inserir modelos em arquivos de manifesto do Kubernetes. A ação permite que você use ferramentas como Helm, Kustomize e Kompose. A ação bake da tarefa de manifesto do Kubernetes mostra a transformação entre modelos de entrada e os arquivos de manifesto finais usados em implantações. Você pode consumir downstream de arquivos de manifesto com bake (em tarefas) como entradas para a ação de implantação da tarefa de manifesto do Kubernetes.
Direcionar recursos do Kubernetes que fazem parte de ambientes com trabalhos de implantação. O uso de ambientes e implantações de recursos melhora a rastreabilidade do pipeline, ajudando você a diagnosticar problemas de implantação. Você também pode fazer a implantação em clusters do Kubernetes com trabalhos regulares sem os mesmos recursos de integridade.
O código YAML a seguir mostra como gerar arquivos de manifesto a partir de Charts do Helm.
steps:
- task: KubernetesManifest@1
name: bake
displayName: Bake K8s manifests from Helm chart
inputs:
action: bake
helmChart: charts/sample
overrides: 'image.repository:nginx'
- task: KubernetesManifest@1
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: someK8sSC
namespace: default
manifests: $(bake.manifestsBundle)
containers: |
nginx: 1.24.0
Tarefa Kubectl
Como alternativa à tarefa KubernetesManifest KubernetesManifest, use a tarefa Kubectl para implantar, configurar e atualizar um cluster Kubernetes no Serviço de Contêiner do Azure executando os comandos kubectl.
Este exemplo mostra como uma conexão de serviço se refere ao cluster do Kubernetes.
- task: Kubernetes@1
displayName: kubectl apply
inputs:
connectionType: Kubernetes Service Connection
kubernetesServiceConnection: Contoso #alias: kubernetesServiceEndpoint
tarefa Script
Use kubectl com uma tarefa de script.
Este exemplo usa um script para executar kubectl.
- script: |
kubectl apply -f manifest.yml
Estratégias de implantação do Kubernetes
A tarefa de manifesto do Kubernetes dá suporte à estratégia de implantação canary. Use a estratégia de implantação "canário" para implantar parcialmente novas mudanças, permitindo que coexistam com as implantações atuais antes de uma implantação completa.
Para obter mais informações sobre implantações canárias com pipelines, consulte Como usar uma estratégia de implantação canária para o Kubernetes com o Azure Pipelines.
Implantações do Kubernetes multinuvem
O Kubernetes funciona da mesma maneira em todos os provedores de nuvem. Use o Azure Pipelines para implantar no AKS (Serviço de Kubernetes do Azure), no Mecanismo de Kubernetes do Google (GKE), no EKS (Amazon Elastic Kubernetes Service) ou em clusters de outros provedores de nuvem.
Para configurar a implantação de várias nuvens, crie um ambiente e adicione recursos do Kubernetes associados a namespaces de clusters do Kubernetes.
A abordagem de provedor genérico, com base em uma conta de serviço existente, funciona com clusters de qualquer provedor de nuvem, incluindo o Azure. Usar a opção Serviço de Kubernetes do Azure cria novos objetos ServiceAccount e RoleBinding . Isso garante que o objeto RoleBinding limite as operações do ServiceAccount ao namespace escolhido.
Ao usar a abordagem de provedor genérico, verifique se existe um RoleBinding que concede permissões na editClusterRole para a conta de serviço desejada. Conceda permissões à conta de serviço correta para que o Azure Pipelines possa usá-la para criar objetos no namespace escolhido.
Implantações paralelas para várias nuvens
O seguinte exemplo mostra como fazer implantações paralelas em clusters em várias nuvens. Neste exemplo, há implantações nos clusters AKS, GKE, EKS e OpenShift. Esses quatro namespaces estão associados aos recursos do Kubernetes no ambiente contoso.
trigger:
- main
jobs:
- deployment:
displayName: Deploy to AKS
pool:
vmImage: ubuntu-latest
environment: contoso.aksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: aksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to GKE
pool:
vmImage: ubuntu-latest
environment: contoso.gkenamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: gkenamespace
manifests: manifests/*
- deployment:
displayName: Deploy to EKS
pool:
vmImage: ubuntu-latest
environment: contoso.eksnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: eksnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to OpenShift
pool:
vmImage: ubuntu-latest
environment: contoso.openshiftnamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: openshiftnamespace
manifests: manifests/*
- deployment:
displayName: Deploy to DigitalOcean
pool:
vmImage: ubuntu-latest
environment: contoso.digitaloceannamespace
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@1
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
kubernetesServiceConnection: serviceConnection #replace with your service connection
namespace: digitaloceannamespace
manifests: manifests/*