KubernetesManifest@0 – Nasazení do úlohy Kubernetes v0
Pomocí úlohy manifestu Kubernetes v kanálu sestavení nebo verze můžete manifesty do clusterů Kubernetes upéct a nasadit je pomocí chartů 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.
Vstupy
action
- Akce
string
. Povolené hodnoty: bake
, createSecret
(vytvořit tajný klíč), delete
, deploy
, patch
, promote
, , scale
, . reject
Výchozí hodnota: deploy
.
Určuje akci, která se má provést.
kubernetesServiceConnection
- Připojení ke službě Kubernetes
string
. Vyžaduje se, když action != bake
.
Určuje připojení ke službě Kubernetes.
namespace
- Obor názvů
string
.
Určuje obor názvů pro příkazy pomocí příznaku –namespace
. Pokud obor názvů není k dispozici, příkazy se spustí ve výchozím oboru názvů.
namespace
- Obor názvů
string
. Vyžaduje se, když action != bake
. Výchozí hodnota: default
.
Určuje obor názvů pro příkazy pomocí příznaku –namespace
. Pokud obor názvů není k dispozici, příkazy se spustí ve výchozím oboru názvů.
strategy
- Strategie
string
. Nepovinný parametr. Použijte, když action = deploy || action = promote || action = reject
. Povolené hodnoty: canary
, none
. Výchozí hodnota: none
.
Určuje strategii nasazení použitou deploy
v akci před promote
akcí nebo reject
akcí. canary
V současné době je jedinou přijatelnou strategií nasazení.
trafficSplitMethod
- Metoda rozdělení provozu
string
. Nepovinný parametr. Použijte, když strategy = canary
. Povolené hodnoty: pod
, smi
. Výchozí hodnota: pod
.
Pro hodnotu smi
se procento rozdělení provozu provádí na úrovni požadavku pomocí sítě služby. Síť služeb musí nastavit správce clusteru. Tato úloha zpracovává orchestraci objektů SMI TrafficSplit .
Pro hodnotu pod
není při absenci sítě služby možné procentuální rozdělení na úrovni požadavku. Místo toho se procentuální vstup použije k výpočtu replik pro směrný plán a kanár. Výpočet je procento replik zadaných ve vstupních manifestech pro stabilní variantu.
percentage
- Procento
string
. Vyžaduje se, když strategy = Canary && action = deploy
. Výchozí hodnota: 0
.
Procento, které se používá k výpočtu počtu replik standardních a variantních a kanárových variant úloh obsažených v souborech manifestu.
Pro zadaný procentuální vstup vypočítejte:
(procento × počtu replik) / 100
Pokud výsledek není celé číslo, použije se při vytváření variant směrného plánu a kanárů matematická podlaha výsledku.
Předpokládejme například, že nasazení hello-world
je ve vstupním souboru manifestu a že ve vstupu úkolu jsou následující řádky:
replicas: 4
strategy: canary
percentage: 25
V tomto případě se nasazení hello-world-baseline
vytvoří s hello-world-canary
jednou replikou. Základní varianta se vytvoří se stejnou imagí a značkou jako stabilní verze, což je varianta čtyř replik před nasazením. Kanárová varianta se vytvoří s imagí a značkou odpovídající nově nasazeným změnám.
baselineAndCanaryReplicas
- Repliky standardních hodnot a kanárů
string
. Vyžaduje se, když strategy = Canary && action = deploy && trafficSplitMethod = SMI
. Výchozí hodnota: 1
.
Pokud nastavíte trafficSplitMethod
na smi
, procento rozdělení provozu se řídí v rovině sítě služby. Skutečný počet replik pro kanárové a standardní varianty můžete řídit nezávisle na rozdělení provozu.
Předpokládejme například, že manifest nasazení vstupu určuje 30 replik pro stabilní variantu. Předpokládejme také, že pro úkol zadáte následující vstup:
strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1
V tomto případě stabilní varianta přijímá 80 % provozu, zatímco standardní a kanárské varianty obdrží polovinu ze zadaných 20 %. Standardní a kanárové varianty neobdrží tři repliky. Místo toho obdrží zadaný počet replik, což znamená, že každá z nich obdrží jednu repliku.
manifests
- Manifesty
string
. Vyžaduje se, když action = deploy || action = promote || action = reject
.
Určuje cestu k souborům manifestu, které se mají použít pro nasazení. Každý řádek představuje jednu cestu. Vzor porovnávání souborů je přijatelnou hodnotou pro každý řádek.
containers
- Kontejnery
string
. Nepovinný parametr. Použijte, když action = deploy || action = promote || action = bake
.
Určuje plně kvalifikovanou adresu URL prostředku obrázku, která se má použít k nahrazení souborů manifestu. Příkladem je adresa URL contosodemo.azurecr.io/helloworld:test
.
containers
- Kontejnery
string
. Nepovinný parametr. Použijte, když action = deploy || action = promote
.
Určuje plně kvalifikovanou adresu URL obrázku, která se má použít k nahrazení souborů manifestu. Tento vstup přijímá specifikaci nahrazení více artefaktů ve formě oddělené novým řádekem. Tady je příklad:
containers: |
contosodemo.azurecr.io/foo:test1
contosodemo.azurecr.io/bar:test2
V tomto příkladu se všechny odkazy na contosodemo.azurecr.io/foo
a contosodemo.azurecr.io/bar
vyhledávají v poli obrázku vstupních souborů manifestu. Pro každou nalezenou shodu značka test1
nebo test2
nahradí odpovídající odkaz.
imagePullSecrets
- ImagePullSecrets
string
. Nepovinný parametr. Použijte, když action = deploy || action = promote
.
Určuje víceřádkový vstup, kde každý řádek obsahuje název tajného klíče registru Dockeru, který už byl v clusteru nastavený. Každý název tajného kódu se přidá v části imagePullSecrets
pro úlohy, které se nacházejí ve vstupních souborech manifestu.
renderType
- Vykreslovací modul
string
. Nepovinný parametr. Použijte, když action = bake
. Povolené hodnoty: helm
, kompose
, kustomize
. Výchozí hodnota: helm
.
Určuje typ vykreslení použitý k vytvoření souborů manifestu.
renderType
- Vykreslovací modul
string
. Nepovinný parametr. Použijte, když action = bake
. Povolené hodnoty: helm2
(Helm 2). Výchozí hodnota: helm2
.
Určuje typ vykreslení použitý k vytvoření souborů manifestu.
dockerComposeFile
- Cesta k souboru docker compose
string
. Vyžaduje se, když action = bake && renderType = kompose
.
Určuje cestu k souboru docker-compose.
helmChart
- Helm Chart
string
. Vyžaduje se, když action = bake && renderType = helm
.
Určuje cestu grafu Helm k pečení.
helmChart
- Helm Chart
string
. Vyžaduje se, když action = bake && renderType = helm2
.
Určuje cestu grafu Helm k pečení.
releaseName
- Název verze Helm
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm
.
Určuje název verze Helm, který se má použít.
releaseName
- Název verze Helm
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm2
.
Určuje název verze Helm, který se má použít.
overrideFiles
- Přepsat soubory
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm
.
Určuje víceřádkový vstup, který přijímá cestu k přepsání souborů. Soubory se používají při pečení souborů manifestu z chartů Helm.
overrideFiles
- Přepsat soubory
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm2
.
Určuje víceřádkový vstup, který přijímá cestu k přepsání souborů. Soubory se používají při pečení souborů manifestu z chartů Helm.
overrides
- Přepisuje
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm
.
Určuje hodnoty přepsání, které se mají nastavit.
overrides
- Přepisuje
string
. Nepovinný parametr. Použijte, když action = bake && renderType = helm2
.
Určuje další hodnoty přepsání, které se používají prostřednictvím přepínače --set
příkazového řádku při pečení souborů manifestu pomocí helmu.
Zadejte přepsání hodnot jako key-value
párů ve formátu key:value
. Pokud použijete více přepsání key-value
párů, zadejte každou key-value
dvojici na samostatný řádek. Jako oddělovač mezi různými key-value
páry použijte znak nového řádku.
kustomizationPath
- Cesta kustomizace
string
. Nepovinný parametr. Použijte, když action = bake && renderType = kustomize
.
Určuje argument, který musí být cesta k adresáři obsahujícímu soubor, nebo adresa URL úložiště Git s příponou cesty, která určuje same
kořen úložiště.
resourceToPatch
- Prostředek k opravě
string
. Vyžaduje se, když action = patch
. Povolené hodnoty: file
, name
. Výchozí hodnota: file
.
Označuje jednu z následujících metod oprav:
- Soubor manifestu identifikuje objekty, které mají být opraveny.
- Jednotlivé objekty jsou označeny druhem a názvem jako cíl opravy.
Přijatelné hodnoty jsou soubor a název.
resourceFileToPatch
- Cesta k souboru
string
. Vyžaduje se, když action = patch && resourceToPatch = file
.
Určuje cestu k souboru použitému pro opravu.
kind
- Druhu
string
. Vyžaduje se, když action = scale || resourceToPatch = name
. Povolené hodnoty: deployment
, replicaset
, statefulset
.
Určuje druh objektu K8s, například deployment
, replicaSet
a další.
name
- Jméno
string
. Vyžaduje se, když action = scale || resourceToPatch = name
.
Určuje název objektu K8s.
replicas
- Počet replik
string
. Vyžaduje se, když action = scale
.
Určuje počet replik, na které se má škálovat.
mergeStrategy
- Strategie sloučení
string
. Vyžaduje se, když action = patch
. Povolené hodnoty: json
, merge
, strategic
. Výchozí hodnota: strategic
.
Určuje typ poskytované opravy.
arguments
- Argumenty
string
. Nepovinný parametr. Použijte, když action = delete
.
Určuje argumenty příkazu kubectl delete
. Příklad: arguments: deployment hello-world foo-bar
patch
- Oprava
string
. Vyžaduje se, když action = patch
.
Určuje obsah opravy.
secretType
- Typ tajného kódu
string
. Vyžaduje se, když action = createSecret
. Povolené hodnoty: dockerRegistry
, generic
. Výchozí hodnota: dockerRegistry
.
Vytvoří nebo aktualizuje obecný nebo docker imagepullsecret
. Zadejte dockerRegistry
, jestli chcete vytvořit nebo aktualizovat imagepullsecret
vybraný registr. Je imagePullSecret
způsob, jak předat tajný klíč, který obsahuje heslo registru kontejneru kubeletu, aby mohl jménem vašeho podu načíst privátní image.
secretName
- Název tajného kódu
string
. Nepovinný parametr. Použijte, když action = createSecret
.
Určuje název tajného klíče. Tento název tajného klíče můžete použít v konfiguračním souboru Kubernetes YAML.
secretArguments
- Argumenty
string
. Nepovinný parametr. Použijte, když action = createSecret && secretType = generic
.
Určuje klíče a hodnoty literálu, které se mají vložit do tajného klíče. Například --from-literal=key1=value1
--from-literal=key2="top secret"
.
dockerRegistryEndpoint
- Připojení služby registru Dockeru
string
. Nepovinný parametr. Použijte, když action = createSecret && secretType = dockerRegistry
.
Určuje přihlašovací údaje zadaného připojení služby, které se používají k vytvoření tajného klíče registru Dockeru v rámci clusteru. Soubory manifestu pod polem imagePullSecrets
pak můžou odkazovat na název tohoto tajného kódu.
rolloutStatusTimeout
- Časový limit stavu uvedení
string
. Nepovinný parametr. Použijte, když action = deploy || action = patch || action = scale || action = promote
. Výchozí hodnota: 0
.
Určuje dobu čekání (v sekundách) před ukončením watch on rollout
stavu.
Možnosti řízení úkolů
Všechny úkoly mají kromě vstupů úkolů také možnosti řízení. Další informace najdete v tématu Možnosti ovládacího prvku a běžné vlastnosti úlohy.
Výstupní proměnné
Tato úloha definuje následující výstupní proměnné, které můžete využívat v podřízených krocích, úlohách a fázích.
manifestsBundle
Určuje umístění balíčků manifestu vytvořených akcí pečení.
Poznámky
Poznámka
K dispozici je novější verze této úlohy, která poskytuje další podporu pro cílení na cluster Kubernetes různými způsoby pomocí connectionType
vlastnosti . Další informace najdete v tématu poznámky k KubernetesManifest@1 a KubernetesManifest@1 připojení služby.
Použití úlohy manifestu Kubernetes v kanálu sestavení nebo verze k pečení a nasazení manifestů do clusterů Kubernetes
Tato úloha podporuje následující:
Nahrazení artefaktů: Akce nasazení přijímá jako vstup seznam imagí kontejneru, které můžete zadat spolu s jejich značkami a souhrny. Stejný vstup se nahradí do netemplatizovaných souborů manifestu před aplikací do clusteru. Toto nahrazení zajistí, že uzly clusteru vyžádat správnou verzi image.
Stabilita manifestu: Kontroluje se stav uvedení nasazených objektů Kubernetes. Kontroly stability jsou začleněny, aby se zjistilo, jestli je stav úkolu úspěšný nebo neúspěšný.
Poznámky sledovatelnosti: Poznámky se přidávají do nasazených objektů Kubernetes, aby se přetvářly informace o sledovatelnosti. Podporují se následující poznámky:
- azure-pipelines/org
- azure-pipelines/project
- azure-pipelines/pipeline
- azure-pipelines/pipelineId
- azure-pipelines/execution
- azure-pipelines/executionuri
- azure-pipelines/jobName
Zpracování tajných kódů: Akce
createSecret
umožňuje vytvářet tajné kódy registru Dockeru pomocí připojení služby registru Dockeru. Umožňuje také vytvářet obecné tajné kódy pomocí proměnných prostého textu nebo tajných proměnných. Před nasazením do clusterusecrets
můžete pomocí vstupu spolu sdeploy
akcí rozšířit vstupní soubory manifestu o příslušnouimagePullSecrets
hodnotu.Bake manifest: Akce
bake
úlohy umožňuje pečení šablon do souborů manifestu Kubernetes. Akce používá nástroje, jako jsou Helm, Compose a Kustomize. Při pečení jsou tyto soubory manifestu Kubernetes použitelné pro nasazení do clusteru.Strategie nasazení: Výběr
canary
strategie sdeploy
akcí vede k vytvoření názvů úloh s příponou-baseline
a-canary
. Úloha podporuje dvě metody rozdělení provozu:Rozhraní Service Mesh: Abstrakce rozhraní SMI ( Service Mesh Interface ) umožňuje konfiguraci s poskytovateli sítí služeb, jako jsou
Linkerd
aIstio
. Úloha manifestu Kubernetes mapuje objekty SMITrafficSplit
na stabilní, standardní a kanárské služby během životního cyklu strategie nasazení.Nasazení kanárů, která jsou založená na síti služby a používají tuto úlohu, jsou přesnější. Tato přesnost je způsobená tím, jak poskytovatelé sítí služeb umožňují podrobné rozdělení provozu na základě procent. Síť služby používá registr služby a kontejnery sajdkár, které jsou vloženy do podů. K tomuto injektáži dochází společně s kontejnery aplikací, aby bylo dosaženo podrobného rozdělení provozu.
Kubernetes bez sítě služeb: Pokud síť služeb neexistuje, nemusí se na úrovni požadavku dostat přesně požadované procento rozdělení. Nasazení kanárů ale můžete provádět pomocí standardních a kanárových variant vedle stabilní varianty.
Služba odesílá požadavky na pody všech tří variant úloh, protože jsou splněna omezení selektoru popisků. Manifest Kubernetes tyto požadavky dodržuje při vytváření variant směrného plánu a kanárů. Toto chování směrování dosáhne zamýšleného efektu směrování pouze části celkových požadavků na kanár.
Porovnejte základní a kanárské úlohy pomocí úlohy Ruční zásah v kanálech verze nebo úlohy Zpoždění v kanálech YAML. Proveďte porovnání před použitím akce zvýšení úrovně nebo odmítnutí úkolu.
Akce nasazení
Následující kód YAML je příkladem nasazení do oboru názvů Kubernetes pomocí souborů manifestu:
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
Ve výše uvedeném příkladu se úkol pokusí najít shody pro obrázky foo/demo
a bar/demo
v polích obrázků v souborech manifestu. Pro každou nalezenou shodu se k názvu obrázku připojí hodnota nebo tagVariable1
tagVariable2
jako značka. Můžete také zadat hodnoty hash ve vstupu kontejnerů pro nahrazení artefaktů.
Poznámka
I když můžete vytvářet deploy
akce , promote
a reject
se vstupem YAML související se strategií nasazení, pro kanály sestavení není v současné době k dispozici podpora úlohy ručního zásahu.
Pro kanály verze doporučujeme použít akce a vstupy související se strategií nasazení v následujícím pořadí:
- Akce nasazení zadaná pomocí
strategy: canary
apercentage: $(someValue)
. - Úkol ručního zásahu, abyste mohli pozastavit kanál a porovnat variantu směrného plánu s kanárovou variantou.
- Akce zvýšení úrovně, která se spustí, pokud je obnovena úloha ručního zásahu, a akce odmítnout, která se spustí, pokud je odmítnuta úloha ručního zásahu.
Vytvořit akci tajného kódu
Následující kód YAML ukazuje ukázkové vytvoření tajných kódů registru Dockeru pomocí připojení služby Docker Registry:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: dockerRegistry
secretName: foobar
dockerRegistryEndpoint: demoACR
kubernetesServiceConnection: someK8sSC
namespace: default
Tento kód YAML ukazuje ukázkové vytvoření obecných tajných kódů:
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: generic
secretName: some-secret
secretArguments: --from-literal=key1=value1
kubernetesServiceConnection: someK8sSC
namespace: default
Akce pečení
Následující kód YAML je příkladem pečení souborů manifestu z chartů Helm. Všimněte si použití vstupu názvu v prvním úkolu. Na tento název se později odkazuje z kroku nasazení pro určení cesty k manifestům vytvořeným krokem pečení.
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
Poznámka
Pokud chcete helm použít přímo ke správě vydaných verzí a vrácení zpět, přečtěte si úlohu Balení a nasazení chartů Helm.
Příklad Kustomize
Následující kód YAML je příkladem pečení souborů manifestu vygenerovaných pomocí Kustomize, které obsahují kustomization.yaml
soubor.
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)
Příklad Kompose
Následující kód YAML je příkladem pečení souborů manifestu vygenerovaných pomocí nástroje pro převod Kompose pro 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)
Akce škálování
Následující kód YAML ukazuje příklad objektů škálování:
steps:
- task: KubernetesManifest@0
displayName: Scale
inputs:
action: scale
kind: deployment
name: bootcamp-demo
replicas: 5
kubernetesServiceConnection: someK8sSC
namespace: default
Akce opravy
Následující kód YAML ukazuje příklad oprav objektů:
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
Odstranit akci
Tento kód YAML ukazuje ukázkové odstranění objektu:
steps:
- task: KubernetesManifest@0
displayName: Delete
inputs:
action: delete
arguments: deployment expressapp
kubernetesServiceConnection: someK8sSC
namespace: default
Řešení potíží
Můj cluster Kubernetes se nachází za bránou firewall a používám hostované agenty. Jak můžu provést nasazení do tohoto clusteru?
Hostovaným agentům můžete udělit přístup přes bránu firewall povolením IP adres hostovaných agentů. Další podrobnosti najdete v části věnované rozsahům IP adres agentů.
Jak u testovacích nasazení fungují požadavky na stabilní a proměnlivé trasy služby?
Vztah selektoru popisku mezi pody a službami v Kubernetes umožňuje nastavit nasazení tak, aby jedna služba směrovala požadavky jak na stabilní, tak na testovací variantu. Úloha manifestu Kubernetes ho využívá pro testovací nasazení.
Pokud úloha obsahuje vstupy action: deploy
a pro strategy: canary
každou úlohu (Deployment, ReplicaSet, Pod, ...) definované ve vstupních souborech manifestu, -baseline
vytvoří se varianta a -canary
nasazení. V tomto příkladu je ve vstupním souboru manifestu nasazení sampleapp
a že po dokončení spuštění s číslem 22 kanálu se v clusteru nasadí stabilní varianta tohoto nasazení s názvem sampleapp
. V následném spuštění (v tomto případě s číslem 23) úloha manifestu Kubernetes s strategy: canary
action: deploy
a vytvoří nasazení sampleapp-baseline a sampleapp-canary, jejichž počet replik určuje součin percentage
zadání úkolu s hodnotou požadovaného počtu replik pro konečnou stabilní variantu podle vstupních souborů manifestusampleapp
.
Bez počtu replik má základní verze stejnou konfiguraci jako stabilní varianta, zatímco kanárová verze má nové změny, které jsou zavedeny aktuálním spuštěním (v tomto případě číslo 23). Pokud se v kanálu nastaví ruční zásah po výše uvedeném kroku, umožní to pozastavit kanál, aby správce kanálu mohl vyhodnotit klíčové metriky pro standardní a kanárské verze a rozhodnout se, jestli jsou kanárské změny bezpečné a dostatečně dobré pro úplné zavedení.
Vstupyaction: promote
a strategy: canary
nebo strategy: canary
action: reject
úloh manifestu Kubernetes se dají použít k povýšení nebo odmítnutí kanárových změn. Všimněte si, že v obou případech zůstane na konci tohoto kroku v clusteru nasazena pouze stabilní varianta úloh deklarovaných ve vstupních souborech manifestu, zatímco se vyčistí dočasný směrný plán a kanárské verze.
Požadavky
Požadavek | Popis |
---|---|
Typy kanálů | YAML, classic build, verze Classic |
Spustí se | Agent, DeploymentGroup |
Požadavky | Žádné |
Možnosti | Tento úkol nesplňuje žádné požadavky na následné úkoly v úloze. |
Omezení příkazů | Všechny |
Nastavitelné proměnné | Všechny |
Verze agenta | Všechny podporované verze agenta. |
Kategorie úloh | Nasazení |