KubernetesManifest@0 - Implementar na tarefa kubernetes v0
Utilize uma tarefa de manifesto do Kubernetes num pipeline de compilação ou versão para criar e implementar manifestos em clusters do Kubernetes com gráficos Helm.
Syntax
# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
inputs:
#action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
#kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection.
#namespace: # string. Namespace.
#strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
#trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
#percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
#baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
#manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests.
#containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers.
#imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets.
#renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
#dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file.
#helmChart: # string. Required when action = bake && renderType = helm. Helm Chart.
#releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name.
#overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files.
#overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides.
#kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path.
#resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
#resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path.
#kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind.
#name: # string. Required when action = scale || resourceToPatch = name. Name.
#replicas: # string. Required when action = scale. Replica count.
#mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
#arguments: # string. Optional. Use when action = delete. Arguments.
#patch: # string. Required when action = patch. Patch.
#secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
#secretName: # string. Optional. Use when action = createSecret. Secret name.
#secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments.
#dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.
#rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
inputs:
#action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
#kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection.
#namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
#strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
#percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
#manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests.
#containers: # string. Optional. Use when action = deploy || action = promote. Containers.
#imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets.
#renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
#helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart.
#releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name.
#overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files.
#overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides.
#resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
#resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path.
#kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind.
#name: # string. Required when action = scale || resourceToPatch = name. Name.
#replicas: # string. Required when action = scale. Replica count.
#mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
#arguments: # string. Optional. Use when action = delete. Arguments.
#patch: # string. Required when action = patch. Patch.
#secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
#secretName: # string. Optional. Use when action = createSecret. Secret name.
#secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments.
#dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.
Entradas
action
- Ação
string
. Valores permitidos: bake
, (criar segredo), delete
, , deploy
, patch
promote
, , . reject
scale
createSecret
Valor predefinido: deploy
.
Especifica a ação a ser executada.
kubernetesServiceConnection
- Ligação do serviço Kubernetes
string
. Necessário quando action != bake
.
Especifica uma ligação de serviço do Kubernetes.
namespace
- Espaço de nomes
string
.
Especifica o espaço de nomes dos comandos com o –namespace
sinalizador. Se o espaço de nomes não for fornecido, os comandos serão executados no espaço de nomes predefinido.
namespace
- Espaço de nomes
string
. Necessário quando action != bake
. Valor predefinido: default
.
Especifica o espaço de nomes dos comandos com o –namespace
sinalizador. Se o espaço de nomes não for fornecido, os comandos serão executados no espaço de nomes predefinido.
strategy
- Estratégia
string
. Opcional. Utilize quando action = deploy || action = promote || action = reject
. Valores permitidos: canary
, none
. Valor predefinido: none
.
Especifica a estratégia de implementação utilizada na ação deploy
antes de uma promote
ação ou reject
ação. Atualmente, canary
é a única estratégia de implementação aceitável.
trafficSplitMethod
- Método de divisão de tráfego
string
. Opcional. Utilize quando strategy = canary
. Valores permitidos: pod
, smi
. Valor predefinido: pod
.
Para o valor smi
, a percentagem de divisão de tráfego é efetuada ao nível do pedido através de uma malha de serviço. Uma malha de serviço tem de ser configurada por um administrador de cluster. Esta tarefa processa a orquestração de objetos SMI TrafficSplit .
Para o valor pod
, a divisão percentual não é possível ao nível do pedido na ausência de uma malha de serviço. Em vez disso, a percentagem de entrada é utilizada para calcular as réplicas da linha de base e do canário. O cálculo é uma percentagem de réplicas especificadas nos manifestos de entrada para a variante estável.
percentage
- Percentagem
string
. Necessário quando strategy = Canary && action = deploy
. Valor predefinido: 0
.
A percentagem utilizada para calcular o número de réplicas de variantes de linha de base e de variantes canárias das cargas de trabalho contidas em ficheiros de manifesto.
Para a percentagem de entrada especificada, calcule:
(percentagem × número de réplicas) / 100
Se o resultado não for um número inteiro, o piso matemático do resultado é utilizado quando são criadas variantes de linha de base e canários.
Por exemplo, suponha que a implementação hello-world
está no ficheiro de manifesto de entrada e que as seguintes linhas estão na entrada da tarefa:
replicas: 4
strategy: canary
percentage: 25
Neste caso, as implementações e hello-world-canary
são criadas hello-world-baseline
com uma réplica cada. A variante de linha de base é criada com a mesma imagem e etiqueta que a versão estável, que é a variante de quatro réplicas antes da implementação. A variante canary é criada com a imagem e a etiqueta correspondentes às alterações recentemente implementadas.
baselineAndCanaryReplicas
- Réplicas de linha de base e canários
string
. Necessário quando strategy = Canary && action = deploy && trafficSplitMethod = SMI
. Valor predefinido: 1
.
Quando definir trafficSplitMethod
como smi
, a divisão de tráfego de percentagem é controlada no plano de malha de serviço. Pode controlar o número real de réplicas para variantes canárias e de linha de base independentemente da divisão de tráfego.
Por exemplo, suponha que o manifesto de implementação de entrada especifica 30 réplicas para a variante estável. Assuma também que especifica a seguinte entrada para a tarefa:
strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1
Neste caso, a variante estável recebe 80% do tráfego, enquanto as variantes de linha de base e canário recebem metade dos 20% especificados. As variantes de linha de base e canários não recebem três réplicas cada. Em vez disso, recebem o número especificado de réplicas, o que significa que cada uma recebe uma réplica.
manifests
- Manifestos
string
. Necessário quando action = deploy || action = promote || action = reject
.
Especifica o caminho para os ficheiros de manifesto a utilizar para a implementação. Cada linha representa um único caminho. Um padrão de correspondência de ficheiros é um valor aceitável para cada linha.
containers
- Contentores
string
. Opcional. Utilize quando action = deploy || action = promote || action = bake
.
Especifica o URL de recurso completamente qualificado da imagem a utilizar para substituições nos ficheiros de manifesto. O URL contosodemo.azurecr.io/helloworld:test
é um exemplo.
containers
- Contentores
string
. Opcional. Utilize quando action = deploy || action = promote
.
Especifica o URL completamente qualificado da imagem a utilizar para substituições nos ficheiros de manifesto. Esta entrada aceita a especificação de múltiplas substituições de artefactos num formulário separado por newline. Eis um exemplo:
containers: |
contosodemo.azurecr.io/foo:test1
contosodemo.azurecr.io/bar:test2
Neste exemplo, todas as referências a contosodemo.azurecr.io/foo
e contosodemo.azurecr.io/bar
são pesquisadas no campo de imagem dos ficheiros de manifesto de entrada. Para cada correspondência encontrada, a etiqueta test1
ou test2
substitui a referência correspondente.
imagePullSecrets
- ImagePullSecrets
string
. Opcional. Utilize quando action = deploy || action = promote
.
Especifica uma entrada multiline em que cada linha contém o nome de um segredo do registo do Docker que já foi configurado no cluster. Cada nome de segredo é adicionado imagePullSecrets
em para as cargas de trabalho que se encontram nos ficheiros de manifesto de entrada.
renderType
- Motor de Composição
string
. Opcional. Utilize quando action = bake
. Valores permitidos: helm
, , kompose
kustomize
. Valor predefinido: helm
.
Especifica o tipo de composição utilizado para produzir os ficheiros de manifesto.
renderType
- Motor de Composição
string
. Opcional. Utilize quando action = bake
. Valores permitidos: helm2
(Helm 2). Valor predefinido: helm2
.
Especifica o tipo de composição utilizado para produzir os ficheiros de manifesto.
dockerComposeFile
- Caminho para o ficheiro de composição do Docker
string
. Necessário quando action = bake && renderType = kompose
.
Especifica um caminho de ficheiro docker-compose.
helmChart
- Gráfico Helm
string
. Necessário quando action = bake && renderType = helm
.
Especifica o caminho do gráfico Helm para cozer.
helmChart
- Gráfico Helm
string
. Necessário quando action = bake && renderType = helm2
.
Especifica o caminho do gráfico Helm para cozer.
releaseName
- Nome da Versão do Helm
string
. Opcional. Utilize quando action = bake && renderType = helm
.
Especifica o nome de versão do Helm a utilizar.
releaseName
- Nome da Versão do Helm
string
. Opcional. Utilize quando action = bake && renderType = helm2
.
Especifica o nome de versão do Helm a utilizar.
overrideFiles
- Substituir Ficheiros
string
. Opcional. Utilize quando action = bake && renderType = helm
.
Especifica uma entrada de várias linhas que aceita o caminho para os ficheiros de substituição. Os ficheiros são utilizados quando os ficheiros de manifesto dos gráficos Helm são cozidos.
overrideFiles
- Substituir Ficheiros
string
. Opcional. Utilize quando action = bake && renderType = helm2
.
Especifica uma entrada de várias linhas que aceita o caminho para os ficheiros de substituição. Os ficheiros são utilizados quando os ficheiros de manifesto dos gráficos Helm são cozidos.
overrides
- Substituições
string
. Opcional. Utilize quando action = bake && renderType = helm
.
Especifica os valores de substituição a definir.
overrides
- Substituições
string
. Opcional. Utilize quando action = bake && renderType = helm2
.
Especifica valores de substituição adicionais que são utilizados através do comutador --set
da linha de comandos quando os ficheiros de manifesto que utilizam o Helm são cozidos.
Especifique valores de substituição como key-value
pares no formato key:value
. Se utilizar vários pares de substituição key-value
, especifique cada key-value
par numa linha separada. Utilize um caráter de nova linha como delimitador entre pares diferentes key-value
.
kustomizationPath
- Caminho de Kustomization
string
. Opcional. Utilize quando action = bake && renderType = kustomize
.
Especifica o argumento que tem de ser o caminho para o diretório que contém o ficheiro ou um URL do repositório git com um sufixo de caminho que especifica same
em relação à raiz do repositório.
resourceToPatch
- Recurso a corrigir
string
. Necessário quando action = patch
. Valores permitidos: file
, name
. Valor predefinido: file
.
Indica um dos seguintes métodos de patch:
- Um ficheiro de manifesto identifica os objetos a serem corrigidos.
- Um objeto individual é identificado por tipo e nome como o destino do patch.
Os valores aceitáveis são ficheiro e nome.
resourceFileToPatch
- Caminho do ficheiro
string
. Necessário quando action = patch && resourceToPatch = file
.
Especifica o caminho para o ficheiro utilizado para um patch.
kind
- Tipo
string
. Necessário quando action = scale || resourceToPatch = name
. Valores permitidos: deployment
, , replicaset
statefulset
.
Especifica o tipo de objeto K8s, como deployment
, replicaSet
e muito mais.
name
- Nome
string
. Necessário quando action = scale || resourceToPatch = name
.
Especifica o nome do objeto K8s.
replicas
- Contagem de réplicas
string
. Necessário quando action = scale
.
Especifica o número de réplicas a dimensionar.
mergeStrategy
- Estratégia de Intercalação
string
. Necessário quando action = patch
. Valores permitidos: json
, , merge
strategic
. Valor predefinido: strategic
.
Especifica o tipo de patch que está a ser fornecido.
arguments
- Argumentos
string
. Opcional. Utilize quando action = delete
.
Especifica os argumentos para o kubectl delete
comando . Um exemplo é: arguments: deployment hello-world foo-bar
patch
- Patch
string
. Necessário quando action = patch
.
Especifica o conteúdo do patch.
secretType
- Tipo de segredo
string
. Necessário quando action = createSecret
. Valores permitidos: dockerRegistry
, generic
. Valor predefinido: dockerRegistry
.
Cria ou atualiza um genérico ou docker imagepullsecret
. Especifique dockerRegistry
para criar ou atualizar o imagepullsecret
do registo selecionado. Uma imagePullSecret
é uma forma de transmitir um segredo que contém uma palavra-passe de registo de contentor para o Kubelet, para que possa extrair uma imagem privada em nome do seu Pod.
secretName
- Nome do segredo
string
. Opcional. Utilize quando action = createSecret
.
Especifica o nome do segredo. Pode utilizar este nome de segredo no ficheiro de configuração YAML do Kubernetes.
secretArguments
- Argumentos
string
. Opcional. Utilize quando action = createSecret && secretType = generic
.
Especifica chaves e valores literais a inserir em segredo. Por exemplo, --from-literal=key1=value1
--from-literal=key2="top secret"
.
dockerRegistryEndpoint
- Ligação do serviço de registo do Docker
string
. Opcional. Utilize quando action = createSecret && secretType = dockerRegistry
.
Especifica as credenciais da ligação de serviço especificada que são utilizadas para criar um segredo do registo do Docker no cluster. Os ficheiros de manifesto no imagePullSecrets
campo podem, em seguida, referir-se ao nome deste segredo.
rolloutStatusTimeout
- Tempo limite para o estado da implementação
string
. Opcional. Utilize quando action = deploy || action = patch || action = scale || action = promote
. Valor predefinido: 0
.
Especifica o período de tempo (em segundos) a aguardar antes de terminar watch on rollout
o estado.
Opções de controlo de tarefas
Todas as tarefas têm opções de controlo para além das respetivas entradas de tarefas. Para obter mais informações, veja Opções de controlo e propriedades de tarefas comuns.
Variáveis de saída
Esta tarefa define as seguintes variáveis de saída, que pode consumir em passos, tarefas e fases a jusante.
manifestsBundle
Especifica a localização dos pacotes de manifesto criados pela ação de cozedura.
Observações
Nota
Existe uma versão mais recente desta tarefa disponível que fornece suporte adicional para direcionar um cluster do Kubernetes de formas diferentes, utilizando a connectionType
propriedade . Para obter mais informações, veja KubernetesManifest@1 e KubernetesManifest@1 observações de ligação do serviço
Utilize uma tarefa de manifesto do Kubernetes num pipeline de compilação ou versão para criar e implementar manifestos em clusters do Kubernetes.
Esta tarefa suporta o seguinte:
Substituição de artefactos: a ação de implementação é tomada como entrada de uma lista de imagens de contentor que pode especificar juntamente com as respetivas etiquetas e resumos. A mesma entrada é substituída nos ficheiros de manifesto não modelados antes da aplicação para o cluster. Esta substituição garante que os nós de cluster solicitam a versão correta da imagem.
Estabilidade do manifesto: o estado de implementação dos objetos do Kubernetes implementados está verificado. As verificações de estabilidade são incorporadas para determinar se o estado da tarefa é um êxito ou uma falha.
Anotações de rastreabilidade: as anotações são adicionadas aos objetos do Kubernetes implementados para sobrepor informações de rastreabilidade. São suportadas as seguintes anotações:
- azure-pipelines/org
- azure-pipelines/project
- azure-pipelines/pipeline
- azure-pipelines/pipelineId
- azure-pipelines/execução
- azure-pipelines/executionuri
- azure-pipelines/jobName
Processamento de segredos:
createSecret
a ação permite criar segredos do registo do Docker com ligações do serviço de registo do Docker. Também permite a criação de segredos genéricos com variáveis de texto simples ou variáveis secretas. Antes da implementação no cluster, pode utilizar asecrets
entrada juntamente com a açãodeploy
para aumentar os ficheiros de manifesto de entrada com o valor adequadoimagePullSecrets
.Manifesto do Bake:
bake
a ação da tarefa permite cozer modelos em ficheiros de manifesto do Kubernetes. A ação utiliza ferramentas como Helm, Compose e Kustomize. Com o baking, estes ficheiros de manifesto do Kubernetes são utilizáveis para implementações no cluster.Estratégia de implementação: escolher a
canary
estratégia com a açãodeploy
leva à criação de nomes de cargas de trabalho sufixos com-baseline
e-canary
. A tarefa suporta dois métodos de divisão de tráfego:Interface do Service Mesh: a abstração do Service Mesh Interface (SMI) permite a configuração com fornecedores de malha de serviços como
Linkerd
eIstio
. A tarefa Manifesto do Kubernetes mapeia objetos SMITrafficSplit
para os serviços estáveis, de linha de base e canários durante o ciclo de vida da estratégia de implementação.As implementações canary baseadas numa malha de serviço e que utilizam esta tarefa são mais precisas. Esta precisão deve-se à forma como os fornecedores de malha de serviços permitem a divisão granular baseada em percentagem do tráfego. A malha de serviço utiliza o registo de serviços e os contentores de sidecar que são injetados em pods. Esta injeção ocorre juntamente com os contentores de aplicações para obter a divisão de tráfego granular.
Kubernetes sem malha de serviço: na ausência de uma malha de serviço, poderá não obter a percentagem exata que pretende ao nível do pedido. No entanto, pode efetuar implementações canárias com variantes de linha de base e canário junto à variante estável.
O serviço envia pedidos para pods das três variantes de carga de trabalho à medida que as restrições selector-label são cumpridas. O Manifesto do Kubernetes respeita estes pedidos ao criar variantes de linha de base e canários. Este comportamento de encaminhamento obtém o efeito pretendido de encaminhar apenas uma parte do total de pedidos para o canary.
Compare as cargas de trabalho de linha de base e de canário com uma tarefa de Intervenção Manual em pipelines de versão ou uma tarefa Atraso em pipelines YAML. Faça a comparação antes de utilizar a ação promover ou rejeitar a tarefa.
Implementar ação
O seguinte código YAML é um exemplo de implementação num espaço de nomes do Kubernetes com ficheiros de manifesto:
steps:
- task: KubernetesManifest@0
displayName: Deploy
inputs:
kubernetesServiceConnection: someK8sSC1
namespace: default
manifests: |
manifests/deployment.yml
manifests/service.yml
containers: |
foo/demo:$(tagVariable1)
bar/demo:$(tagVariable2)
imagePullSecrets: |
some-secret
some-other-secret
No exemplo acima, a tarefa tenta localizar correspondências para as imagens foo/demo
e bar/demo
nos campos de imagem dos ficheiros de manifesto. Para cada correspondência encontrada, o valor de ou tagVariable1
tagVariable2
é acrescentado como uma etiqueta ao nome da imagem. Também pode especificar resumos na entrada de contentores para substituição de artefactos.
Nota
Embora possa criar deploy
, promote
e reject
ações com entrada YAML relacionadas com a estratégia de implementação, o suporte para uma tarefa de Intervenção Manual está atualmente indisponível para pipelines de compilação.
Para pipelines de versão, recomendamos que utilize ações e entradas relacionadas com a estratégia de implementação na seguinte sequência:
- Uma ação de implementação especificada com
strategy: canary
epercentage: $(someValue)
. - Uma tarefa de Intervenção Manual para que possa colocar o pipeline em pausa e comparar a variante de linha de base com a variante canary.
- Uma ação de promoção que é executada se uma tarefa de Intervenção Manual for retomada e uma ação de rejeição que é executada se uma tarefa de Intervenção Manual for rejeitada.
Criar ação secreta
O seguinte código YAML mostra um exemplo de criação de segredos do registo do Docker com a ligação do serviço de Registo do Docker:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: dockerRegistry
secretName: foobar
dockerRegistryEndpoint: demoACR
kubernetesServiceConnection: someK8sSC
namespace: default
Este código YAML mostra um exemplo de criação de segredos genéricos:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: generic
secretName: some-secret
secretArguments: --from-literal=key1=value1
kubernetesServiceConnection: someK8sSC
namespace: default
Ação de cozer
O seguinte código YAML é um exemplo de ficheiros de manifesto de assar a partir de gráficos Helm. Repare na utilização de uma entrada de nome na primeira tarefa. Este nome é posteriormente referenciado a partir do passo de implementação para especificar o caminho para os manifestos que foram produzidos pelo passo de cozedura.
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from Helm chart
inputs:
action: bake
helmChart: charts/sample
overrides: 'image.repository:nginx'
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: someK8sSC
namespace: default
manifests: $(bake.manifestsBundle)
containers: |
nginx: 1.7.9
Nota
Para utilizar o Helm diretamente para gerir lançamentos e reversões, veja a tarefa Compactar e implementar gráficos Helm.
Exemplo do Kustomize
O seguinte código YAML é um exemplo de ficheiros de manifesto gerados com o Kustomize que contêm um kustomization.yaml
ficheiro.
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from kustomization path
inputs:
action: bake
renderType: kustomize
kustomizationPath: folderContainingKustomizationFile
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: k8sSC1
manifests: $(bake.manifestsBundle)
Exemplo de Kompose
O seguinte código YAML é um exemplo de ficheiros de manifesto gerados com o Kompose, uma ferramenta de conversão para Docker Compose.
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from Docker Compose
inputs:
action: bake
renderType: kompose
dockerComposeFile: docker-compose.yaml
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: k8sSC1
manifests: $(bake.manifestsBundle)
Ação de dimensionamento
O seguinte código YAML mostra um exemplo de dimensionamento de objetos:
steps:
- task: KubernetesManifest@0
displayName: Scale
inputs:
action: scale
kind: deployment
name: bootcamp-demo
replicas: 5
kubernetesServiceConnection: someK8sSC
namespace: default
Ação de patch
O seguinte código YAML mostra um exemplo de aplicação de patches de objetos:
steps:
- task: KubernetesManifest@0
displayName: Patch
inputs:
action: patch
kind: pod
name: demo-5fbc4d6cd9-pgxn4
mergeStrategy: strategic
patch: '{"spec":{"containers":[{"name":"demo","image":"foobar/demo:2239"}]}}'
kubernetesServiceConnection: someK8sSC
namespace: default
Eliminar ação
Este código YAML mostra uma eliminação de objeto de exemplo:
steps:
- task: KubernetesManifest@0
displayName: Delete
inputs:
action: delete
arguments: deployment expressapp
kubernetesServiceConnection: someK8sSC
namespace: default
Resolução de problemas
O cluster My Kubernetes está protegido por uma firewall e eu estou a utilizar agentes alojados. Como posso implementar neste cluster?
Pode conceder acesso a agentes alojados através da firewall, ao permitir os endereços IP para os agentes alojados. Para obter mais detalhes, veja Intervalos de IP do agente.
Como é que os pedidos funcionam para rotas de serviço estáveis e de variantes com implementações de proteção?
A relação do seletor de etiquetas entre pods e serviços no Kubernetes permite a configuração de implementações para que um único serviço encaminhe os pedidos para as variantes estáveis e de proteção. A tarefa de manifesto do Kubernetes utiliza-o para implementações de proteção.
Se a tarefa incluir as entradas de action: deploy
e strategy: canary
, para cada carga de trabalho (Implementação, ReplicaSet, Pod, ...) definidas nos ficheiros de manifesto de entrada, é criada uma -baseline
variante e -canary
da implementação. Neste exemplo, existe uma implementação sampleapp
no ficheiro de manifesto de entrada e que, após a conclusão do número de execução 22 do pipeline, a variante estável desta implementação denominada sampleapp
é implementada no cluster. Na execução subsequente (neste caso, execute o número 23), a tarefa de manifesto do Kubernetes com action: deploy
e strategy: canary
resultaria na criação de implementações sampleapp-baseline e sampleapp-canary cujo número de réplicas é determinado pelo produto da entrada da percentage
tarefa com o valor do número pretendido de réplicas para a variante estável final de de acordo com os ficheiros de manifesto de sampleapp
entrada.
Excluindo o número de réplicas, a versão de linha de base tem a mesma configuração que a variante estável, enquanto a versão canary tem as novas alterações que estão a ser introduzidas pela execução atual (neste caso, execute o número 23). Se for configurada uma intervenção manual no pipeline após o passo mencionado acima, esta permitirá uma oportunidade de colocar o pipeline em pausa para que o administrador do pipeline possa avaliar as métricas-chave das versões de linha de base e canary e tomar a decisão sobre se as alterações canárias são seguras e boas o suficiente para uma implementação completa.
Asaction: promote
tarefas de manifesto e strategy: canary
ou action: reject
e strategy: canary
das tarefas de manifesto do Kubernetes podem ser utilizadas para promover ou rejeitar as alterações canárias, respetivamente. Tenha em atenção que, em ambos os casos, no final deste passo, apenas a variante estável das cargas de trabalho declaradas nos ficheiros de manifesto de entrada permanecerá implementada no cluster, enquanto a linha de base efémera e as versões canary são limpas.
Requisitos
Requisito | Description |
---|---|
Tipos de pipeline | YAML, Compilação clássica, Versão clássica |
É executado em | Agent, DeploymentGroup |
Exigências | Nenhuma |
Capacidades | Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa. |
Restrições de comandos | Qualquer |
Variáveis de tabelas definidas | Qualquer |
Versão do agente | Todas as versões de agente suportadas. |
Categoria da tarefa | Implementação |