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 smi
utfö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 pod
gå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 smi
den 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ändasecrets
indata tillsammans meddeploy
åtgärden för att utöka indatamanifestfilerna med lämpligtimagePullSecrets
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ärdendeploy
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
ochIstio
. Kubernetes Manifest-uppgiften mappar SMI-objektTrafficSplit
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
, promote
och 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:
- En distributionsåtgärd som anges med
strategy: canary
ochpercentage: $(someValue)
. - En manuell åtgärdsaktivitet så att du kan pausa pipelinen och jämföra baslinjevarianten med kanarievarianten.
- 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 |