Sdílet prostřednictvím


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 smise 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 podnení 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 clusteru secrets můžete pomocí vstupu spolu s deploy akcí rozšířit vstupní soubory manifestu o příslušnou imagePullSecrets 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 s deploy 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 a Istio. Úloha manifestu Kubernetes mapuje objekty SMI TrafficSplit 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 tagVariable1tagVariable2 jako značka. Můžete také zadat hodnoty hash ve vstupu kontejnerů pro nahrazení artefaktů.

Poznámka

I když můžete vytvářet deployakce , promotea 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í:

  1. Akce nasazení zadaná pomocí strategy: canary a percentage: $(someValue).
  2. Úkol ručního zásahu, abyste mohli pozastavit kanál a porovnat variantu směrného plánu s kanárovou variantou.
  3. 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: canarykaž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: canaryaction: 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: canaryaction: 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í