Dela via


KubernetesManifest@0 – Distribuera till Kubernetes v0-uppgift

Använd en Kubernetes-manifestuppgift i en bygg- eller versionspipeline för att baka och distribuera manifest till Kubernetes-kluster med hjälp av Helm-diagram.

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.

Indata

action - Åtgärder
string. Tillåtna värden: bake, createSecret (skapa hemlighet), delete, deploy, patch, promote, scale, reject. Standardvärde: deploy.

Anger vilken åtgärd som ska utföras.


kubernetesServiceConnection - Kubernetes-tjänstanslutning
string. Krävs när action != bake.

Anger en Kubernetes-tjänstanslutning.


namespace - Namnområde
string.

Anger namnområdet för kommandona med hjälp –namespace av flaggan . Om namnområdet inte anges körs kommandona i standardnamnområdet.


namespace - Namnområde
string. Krävs när action != bake. Standardvärde: default.

Anger namnområdet för kommandona med hjälp –namespace av flaggan . Om namnområdet inte anges körs kommandona i standardnamnområdet.


strategy - Strategi
string. Valfritt. Använd när action = deploy || action = promote || action = reject. Tillåtna värden: canary, none. Standardvärde: none.

Anger den distributionsstrategi som används i deploy åtgärden före en promote åtgärd eller reject åtgärd. canary Är för närvarande den enda godtagbara distributionsstrategin.


trafficSplitMethod - Trafikdelningsmetod
string. Valfritt. Använd när strategy = canary. Tillåtna värden: pod, smi. Standardvärde: pod.

För värdet smiutförs den procentuella trafikdelningen på begärandenivå med hjälp av ett tjänstnät. Ett tjänstnät måste konfigureras av en klusteradministratör. Den här uppgiften hanterar orkestrering av SMI TrafficSplit-objekt .

För värdet podgår det inte att dela procentandelen på begäransnivå om det inte finns något tjänstnät. I stället används procentuella indata för att beräkna replikerna för baslinje och kanarie. Beräkningen är en procentandel repliker som anges i indatamanifesten för den stabila varianten.


percentage - Procent
string. Krävs när strategy = Canary && action = deploy. Standardvärde: 0.

Den procentandel som används för att beräkna antalet repliker av typen baseline-variant och canary-variant av de arbetsbelastningar som finns i manifestfiler.

För angivna procentuella indata beräknar du:

(procentandel × antal repliker) / 100

Om resultatet inte är ett heltal används det matematiska golvet i resultatet när originalvarianter och kanarievarianter skapas.

Anta till exempel att distributionen hello-world finns i indatamanifestfilen och att följande rader finns i aktivitetens indata:

replicas: 4
strategy: canary
percentage: 25

I det här fallet skapas distributionerna hello-world-baseline och hello-world-canary med en replik vardera. Baslinjevarianten skapas med samma avbildning och tagg som den stabila versionen, som är varianten med fyra repliker före distributionen. Kanarievarianten skapas med avbildningen och taggen som motsvarar de nyligen distribuerade ändringarna.


baselineAndCanaryReplicas - Baslinjerepliker och kanarierepliker
string. Krävs när strategy = Canary && action = deploy && trafficSplitMethod = SMI. Standardvärde: 1.

När du anger trafficSplitMethod styrs smiden procentuella trafikdelningen i servicenätplanet. Du kan styra det faktiska antalet repliker för kanarie- och baslinjevarianter oberoende av trafikdelningen.

Anta till exempel att manifestet för indatadistributionen anger 30 repliker för den stabila varianten. Anta också att du anger följande indata för aktiviteten:

strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1

I det här fallet tar den stabila varianten emot 80 % av trafiken, medan baslinje- och kanarievarianterna får hälften av de angivna 20 %. Originalvarianter och kanarievarianter tar inte emot tre repliker vardera. De får i stället det angivna antalet repliker, vilket innebär att de var och en får en replik.


manifests - Manifesterar
string. Krävs när action = deploy || action = promote || action = reject.

Anger sökvägen till de manifestfiler som ska användas för distribution. Varje rad representerar en enda sökväg. Ett filmatchningsmönster är ett acceptabelt värde för varje rad.


containers - Behållare
string. Valfritt. Använd när action = deploy || action = promote || action = bake.

Anger den fullständigt kvalificerade resurs-URL:en för bilden som ska användas för ersättningar på manifestfilerna. URL:en contosodemo.azurecr.io/helloworld:test är ett exempel.


containers - Behållare
string. Valfritt. Använd när action = deploy || action = promote.

Anger den fullständigt kvalificerade URL:en för bilden som ska användas för ersättningar på manifestfilerna. Dessa indata accepterar specifikationen av flera artefaktersättningar i ett nytt, avgränsat formulär. Här är ett exempel:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

I det här exemplet genomsöks alla referenser till contosodemo.azurecr.io/foo och contosodemo.azurecr.io/bar i bildfältet i indatamanifestfilerna. För varje matchning som hittas ersätter taggen test1 eller test2 den matchade referensen.


imagePullSecrets - ImagePullSecrets
string. Valfritt. Använd när action = deploy || action = promote.

Anger indata med flera rader där varje rad innehåller namnet på en Docker-registerhemlighet som redan har konfigurerats i klustret. Varje hemligt namn läggs till under imagePullSecrets för de arbetsbelastningar som finns i indatamanifestfilerna.


renderType - Återgivningsmotor
string. Valfritt. Använd när action = bake. Tillåtna värden: helm, kompose, kustomize. Standardvärde: helm.

Anger den återgivningstyp som används för att skapa manifestfilerna.


renderType - Återgivningsmotor
string. Valfritt. Använd när action = bake. Tillåtna värden: helm2 (Helm 2). Standardvärde: helm2.

Anger den återgivningstyp som används för att skapa manifestfilerna.


dockerComposeFile - Sökväg till docker compose-fil
string. Krävs när action = bake && renderType = kompose.

Anger en docker-compose-filsökväg.


helmChart - Helm-diagram
string. Krävs när action = bake && renderType = helm.

Anger helm-diagramsökvägen som ska bakas.


helmChart - Helm-diagram
string. Krävs när action = bake && renderType = helm2.

Anger helm-diagramsökvägen som ska bakas.


releaseName - Helm-versionsnamn
string. Valfritt. Använd när action = bake && renderType = helm.

Anger helm-versionsnamnet som ska användas.


releaseName - Helm-versionsnamn
string. Valfritt. Använd när action = bake && renderType = helm2.

Anger helm-versionsnamnet som ska användas.


overrideFiles - Åsidosätt filer
string. Valfritt. Använd när action = bake && renderType = helm.

Anger en flerradsinmatning som accepterar sökvägen till åsidosättningsfilerna. Filerna används när manifestfiler från Helm-diagram bakas.


overrideFiles - Åsidosätt filer
string. Valfritt. Använd när action = bake && renderType = helm2.

Anger en flerradsinmatning som accepterar sökvägen till åsidosättningsfilerna. Filerna används när manifestfiler från Helm-diagram bakas.


overrides - Åsidosätter
string. Valfritt. Använd när action = bake && renderType = helm.

Anger de åsidosättningsvärden som ska anges.


overrides - Åsidosätter
string. Valfritt. Använd när action = bake && renderType = helm2.

Anger ytterligare åsidosättningsvärden som används via kommandoradsväxeln --set när manifestfiler som använder Helm bakas.

Ange åsidosättningsvärden som key-value par i formatet key:value. Om du använder flera övergripande key-value par anger du varje key-value par på en separat rad. Använd ett nytt radtecken som avgränsare mellan olika key-value par.


kustomizationPath - Kustomization Path
string. Valfritt. Använd när action = bake && renderType = kustomize.

Anger argumentet som måste vara sökvägen till katalogen som innehåller filen eller en GIT-lagringsplats-URL med ett sökvägssuffix som anger same med avseende på lagringsplatsens rot.


resourceToPatch - Resurs att korrigera
string. Krävs när action = patch. Tillåtna värden: file, name. Standardvärde: file.

Anger någon av följande korrigeringsmetoder:

  • En manifestfil identifierar de objekt som ska korrigeras.
  • Ett enskilt objekt identifieras med typ och namn som korrigeringsmål.

Godkända värden är fil och namn.


resourceFileToPatch - Filsökväg
string. Krävs när action = patch && resourceToPatch = file.

Anger sökvägen till filen som används för en korrigering.


kind - Typ
string. Krävs när action = scale || resourceToPatch = name. Tillåtna värden: deployment, replicaset, statefulset.

Anger typen av K8-objekt, till exempel deployment, replicaSet och mer.


name - Namn
string. Krävs när action = scale || resourceToPatch = name.

Anger namnet på K8s-objektet.


replicas - Antal repliker
string. Krävs när action = scale.

Anger antalet repliker som ska skalas till.


mergeStrategy - Sammanslagningsstrategi
string. Krävs när action = patch. Tillåtna värden: json, merge, strategic. Standardvärde: strategic.

Anger vilken typ av korrigering som tillhandahålls.


arguments - Argument
string. Valfritt. Använd när action = delete.

Anger argumenten kubectl delete för kommandot. Ett exempel är: arguments: deployment hello-world foo-bar


patch - Patch
string. Krävs när action = patch.

Anger innehållet i korrigeringen.


secretType - Typ av hemlighet
string. Krävs när action = createSecret. Tillåtna värden: dockerRegistry, generic. Standardvärde: dockerRegistry.

Skapar eller uppdaterar en allmän eller docker imagepullsecret. Ange dockerRegistry för att skapa eller uppdatera det imagepullsecret valda registret. Ett imagePullSecret är ett sätt att skicka en hemlighet som innehåller ett containerregisterlösenord till Kubelet, så att den kan hämta en privat avbildning för poddens räkning.


secretName - Hemligt namn
string. Valfritt. Använd när action = createSecret.

Anger namnet på hemligheten. Du kan använda det här hemliga namnet i Kubernetes YAML-konfigurationsfilen.


secretArguments - Argument
string. Valfritt. Använd när action = createSecret && secretType = generic.

Anger nycklar och literalvärden som ska infogas i hemlighet. Till exempel --from-literal=key1=value1--from-literal=key2="top secret".


dockerRegistryEndpoint - Docker-registertjänstanslutning
string. Valfritt. Använd när action = createSecret && secretType = dockerRegistry.

Anger autentiseringsuppgifterna för den angivna tjänstanslutningen som används för att skapa en Docker-registerhemlighet i klustret. Manifestfiler under fältet imagePullSecrets kan sedan referera till den här hemlighetens namn.


rolloutStatusTimeout - Tidsgräns för distributionsstatus
string. Valfritt. Använd när action = deploy || action = patch || action = scale || action = promote. Standardvärde: 0.

Anger hur lång tid (i sekunder) som ska vänta innan statusen avslutas watch on rollout .


Alternativ för aktivitetskontroll

Alla aktiviteter har kontrollalternativ utöver sina uppgiftsindata. Mer information finns i Kontrollalternativ och vanliga uppgiftsegenskaper.

Utdatavariabler

Den här uppgiften definierar följande utdatavariabler, som du kan använda i underordnade steg, jobb och steg.

manifestsBundle
Anger platsen för manifestpaketen som skapats av åtgärden bake.

Kommentarer

Anteckning

Det finns en nyare version av den här uppgiften som ger ytterligare stöd för att rikta in ett Kubernetes-kluster på olika sätt med hjälp av connectionType egenskapen . Mer information finns i KubernetesManifest@1 - och KubernetesManifest@1-tjänstanslutningskommentarer

Använd en Kubernetes-manifestaktivitet i en bygg- eller versionspipeline för att baka och distribuera manifest till Kubernetes-kluster.

Den här uppgiften stöder följande:

  • Artefaktersättning: Distributionsåtgärden tar som indata en lista över containeravbildningar som du kan ange tillsammans med deras taggar och sammanfattningar. Samma indata ersätts med de icke-anpassade manifestfilerna före programmet till klustret. Den här ersättningen säkerställer att klusternoderna hämtar rätt version av avbildningen.

  • Manifeststabilitet: Distributionsstatusen för de distribuerade Kubernetes-objekten är markerad. Stabilitetskontrollerna införlivas för att avgöra om uppgiftsstatusen är en lyckad uppgift eller ett fel.

  • Spårningsanteckningar: Anteckningar läggs till i de distribuerade Kubernetes-objekten för att lägga till spårbarhetsinformation. Följande anteckningar stöds:

    • azure-pipelines/org
    • azure-pipelines/project
    • azure-pipelines/pipeline
    • azure-pipelines/pipelineId
    • azure-pipelines/execution
    • azure-pipelines/executionuri
    • azure-pipelines/jobName
  • Hemlig hantering: Åtgärden createSecret gör att Docker-registerhemligheter kan skapas med hjälp av Docker-registertjänstanslutningar. Det gör också att allmänna hemligheter kan skapas med hjälp av variabler med oformaterad text eller hemliga variabler. Innan du distribuerar till klustret kan du använda secrets indata tillsammans med deploy åtgärden för att utöka indatamanifestfilerna med lämpligt imagePullSecrets värde.

  • Bakningsmanifest: Åtgärden bake för uppgiften gör det möjligt att baka mallar i Kubernetes-manifestfiler. Åtgärden använder verktyg som Helm, Compose och Kustomize. Med bakning kan dessa Kubernetes-manifestfiler användas för distributioner till klustret.

  • Distributionsstrategi: Om du väljer canary strategi med åtgärden deploy skapas arbetsbelastningsnamn som är suffix med -baseline och -canary. Uppgiften stöder två metoder för trafikdelning:

    • Service Mesh Interface: SMI-abstraktion ( Service Mesh Interface ) tillåter konfiguration med tjänstnätproviders som Linkerd och Istio. Kubernetes Manifest-uppgiften mappar SMI-objekt TrafficSplit till stabila, baslinje- och kanarietjänster under distributionsstrategins livscykel.

      Kanariedistributioner som baseras på ett servicenät och använder den här uppgiften är mer exakta. Den här noggrannheten beror på hur tjänstenätprovidrar möjliggör den detaljerade procentbaserade trafikdelningen. Service mesh använder tjänstregistret och sidovagnscontainrar som matas in i poddar. Den här inmatningen sker tillsammans med programcontainrar för att uppnå den detaljerade trafikdelningen.

    • Kubernetes utan servicenät: Om det inte finns något tjänstnät kanske du inte får den exakta procentuella uppdelning du vill ha på begärandenivån. Du kan dock utföra kanariedistributioner med hjälp av baslinjevarianter och kanarievarianter bredvid den stabila varianten.

      Tjänsten skickar begäranden till poddar med alla tre arbetsbelastningsvarianterna när begränsningarna för väljarens etikett uppfylls. Kubernetes-manifestet respekterar dessa begäranden när du skapar baslinjevarianter och kanarievarianter. Det här routningsbeteendet uppnår den avsedda effekten av att endast dirigera en del av de totala begärandena till kanariefågeln.

    Jämför baslinje- och kanariearbetsbelastningar med hjälp av antingen en manuell åtgärdsaktivitet i versionspipelines eller en fördröjningsaktivitet i YAML-pipelines. Gör jämförelsen innan du använder åtgärden för att höja upp eller avvisa uppgiften.

Distribuera åtgärd

Följande YAML-kod är ett exempel på distribution till ett Kubernetes-namnområde med hjälp av manifestfiler:

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

I exemplet ovan försöker uppgiften hitta matchningar för bilderna foo/demo och bar/demo i bildfälten i manifestfiler. För varje matchning som hittas läggs värdet för antingen tagVariable1 eller tagVariable2 till som en tagg till avbildningsnamnet. Du kan också ange sammandrag i containrarnas indata för artefaktersättning.

Anteckning

Du kan skapa deploy, promoteoch reject åtgärder med YAML-indata relaterade till distributionsstrategi, men stöd för en manuell åtgärdsaktivitet är för närvarande inte tillgängligt för bygg-pipelines.

För versionspipelines rekommenderar vi att du använder åtgärder och indata relaterade till distributionsstrategin i följande sekvens:

  1. En distributionsåtgärd som anges med strategy: canary och percentage: $(someValue).
  2. En manuell åtgärdsaktivitet så att du kan pausa pipelinen och jämföra baslinjevarianten med kanarievarianten.
  3. En uppflyttingsåtgärd som körs om en manuell åtgärdsaktivitet återupptas och en avvisande åtgärd som körs om en manuell åtgärdsaktivitet avvisas.

Skapa hemlig åtgärd

Följande YAML-kod visar ett exempel på hur du skapar Docker-registerhemligheter med hjälp av Docker Registry-tjänstanslutning:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: dockerRegistry
    secretName: foobar
    dockerRegistryEndpoint: demoACR
    kubernetesServiceConnection: someK8sSC
    namespace: default

Den här YAML-koden visar ett exempel på hur generiska hemligheter skapas:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: generic
    secretName: some-secret
    secretArguments: --from-literal=key1=value1
    kubernetesServiceConnection: someK8sSC
    namespace: default

Baka åtgärd

Följande YAML-kod är ett exempel på att baka manifestfiler från Helm-diagram. Observera användningen av en namninmatning i den första aktiviteten. Det här namnet refereras senare från distributionssteget för att ange sökvägen till manifesten som skapades av bakningssteget.

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

Anteckning

Information om hur du använder Helm direkt för att hantera versioner och återställningar finns i uppgiften Paketera och distribuera Helm-diagram.

Kustomize-exempel

Följande YAML-kod är ett exempel på bakning av manifestfiler som genereras med Kustomize som innehåller en kustomization.yaml fil.

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)

Kompose-exempel

Följande YAML-kod är ett exempel på att baka manifestfiler som genereras med Kompose, ett konverteringsverktyg för 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)

Skalningsåtgärd

Följande YAML-kod visar ett exempel på skalningsobjekt:

steps:
- task: KubernetesManifest@0
  displayName: Scale
  inputs: 
    action: scale
    kind: deployment
    name: bootcamp-demo
    replicas: 5
    kubernetesServiceConnection: someK8sSC
    namespace: default

Korrigeringsåtgärd

Följande YAML-kod visar ett exempel på objektkorrigering:

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

Ta bort åtgärd

Den här YAML-koden visar ett exempel på borttagning av objekt:

steps:
- task: KubernetesManifest@0
  displayName: Delete
  inputs:
    action: delete
    arguments: deployment expressapp
    kubernetesServiceConnection: someK8sSC
    namespace: default

Felsökning

Mitt Kubernetes-kluster ligger bakom en brandvägg och jag använder värdbaserade agenter. Hur gör jag för att distribuera till det här klustret?

Du kan bevilja värdbaserade agenter åtkomst genom brandväggen genom att tillåta IP-adresserna för värdbaserade agenter. Mer information finns i IP-intervall för agenter.

Hur fungerar begäranden för stabila och varianter av tjänstvägar med kanariedistributioner?

Etikettväljarens relation mellan poddar och tjänster i Kubernetes gör det möjligt att konfigurera distributioner så att en enda tjänst dirigerar begäranden till både stabila varianter och kanarievarianter. Kubernetes-manifestaktiviteten använder detta för kanariedistributioner.

Om uppgiften innehåller indata action: deploy för och strategy: canary, för varje arbetsbelastning (Distribution, ReplicaSet, Pod, ...) som definierats i indatamanifestfilerna skapas en och -canary variant -baseline av distributionen. I det här exemplet finns det en distribution sampleapp i manifestfilen för indata och att den stabila varianten av den här distributionen med namnet sampleapp distribueras i klustret när körningsnummer 22 har slutförts. I den efterföljande körningen (i det här fallet kör du nummer 23) visar Kubernetes manifestuppgift med action: deploy och strategy: canary skulle resultera i att exempelappbaslinje- och sampleapp-canary-distributioner skapas vars antal repliker bestäms av produkten av percentage uppgiftsindata med värdet för önskat antal repliker för den slutliga stabila varianten av sampleapp enligt indatamanifestfilerna.

Förutom antalet repliker har baslinjeversionen samma konfiguration som den stabila varianten medan den kanära versionen har de nya ändringar som introduceras av den aktuella körningen (i det här fallet kör du nummer 23). Om en manuell åtgärd har konfigurerats i pipelinen efter ovanstående steg skulle det ge möjlighet att pausa pipelinen så att pipelineadministratören kan utvärdera viktiga mått för baslinje- och kanarieversionerna och fatta beslut om huruvida kanarieändringarna är säkra och tillräckligt bra för en fullständig distribution.

Indataaction: promote och strategy: canary och action: reject för strategy: canary Kubernetes-manifestuppgifterna kan användas för att höja upp eller avvisa kanarieändringarna. Observera att i båda fallen, i slutet av det här steget, kommer endast den stabila varianten av arbetsbelastningarna som deklareras i indatamanifestfilerna att fortsätta att distribueras i klustret, medan den tillfälliga baslinjen och kanarieversionerna rensas.

Krav

Krav Beskrivning
Pipelinetyper YAML, klassisk version, klassisk version
Körs på Agent, DeploymentGroup
Krav Ingen
Funktioner Den här aktiviteten uppfyller inte några krav för efterföljande uppgifter i jobbet.
Kommandobegränsningar Valfri
Inställningsbara variabler Valfri
Agentversion Alla agentversioner som stöds.
Uppgiftskategori Distribuera