Sdílet prostřednictvím


KubernetesManifest@1 – Nasazení do úlohy Kubernetes v1

Soubory manifestu Kubernetes můžete použít k nasazení do clusterů nebo dokonce k pečení souborů manifestu, které se mají použít pro nasazení pomocí chartů Helm.

Syntax

# Deploy to Kubernetes v1
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@1
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #connectionType: 'kubernetesServiceConnection' # 'azureResourceManager' | 'kubernetesServiceConnection'. Required when action != bake. Service connection type. Default: kubernetesServiceConnection.
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when action != bake && connectionType = kubernetesServiceConnection. Kubernetes service connection. 
    #azureSubscriptionConnection: # string. Alias: azureSubscriptionEndpoint. Required when action != bake && connectionType = azureResourceManager. Azure subscription. 
    #azureResourceGroup: # string. Required when action != bake && connectionType = azureResourceManager. Resource group. 
    #kubernetesCluster: # string. Required when action != bake && connectionType = azureResourceManager. Kubernetes cluster. 
    #useClusterAdmin: false # boolean. Optional. Use when connectionType = azureResourceManager. Use cluster admin credentials. Default: false.
    #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.

Vstupy

action - Akce
string. Povolené hodnoty: bake, createSecret (vytvoření tajného klíče), delete, deploy, , patch, promote, scale. reject Výchozí hodnota: deploy.

Určuje akci, která se má provést.


connectionType - Typ připojení služby
string. Vyžaduje se, když action != bake. Povolené hodnoty: azureResourceManager (Azure Resource Manager) kubernetesServiceConnection (Připojení ke službě Kubernetes Service). Výchozí hodnota: kubernetesServiceConnection.

Vyberte typ připojení služby Kubernetes.

  • kubernetesServiceConnection (Připojení ke službě Kubernetes Service) – Umožňuje zadat soubor KubeConfig, zadat účet služby nebo importovat instanci AKS s možností Předplatné Azure . Import instance AKS s možností předplatného Azure vyžaduje přístup ke clusteru Kubernetes v době konfigurace připojení služby.
  • azureResourceManager(Azure Resource Manager) – Umožňuje vybrat instanci AKS. Nemá přístup ke clusteru Kubernetes v době konfigurace připojení služby.

Další informace najdete v tématu Poznámky.


kubernetesServiceConnection - Připojení ke službě Kubernetes
Alias vstupu: kubernetesServiceEndpoint. string. Vyžaduje se, když action != bake && connectionType = kubernetesServiceConnection.

Určuje připojení služby Kubernetes.


azureSubscriptionConnection - Předplatné Azure
Alias vstupu: azureSubscriptionEndpoint. string. Vyžaduje se, když action != bake && connectionType = azureResourceManager.

Vyberte předplatné Azure Resource Manager, které obsahuje Azure Container Registry. Poznámka: Pokud chcete nakonfigurovat nové připojení služby, vyberte ze seznamu předplatné Azure a klikněte na Autorizovat. Pokud vaše předplatné není uvedené nebo pokud chcete použít existující instanční objekt, můžete nastavit připojení služby Azure pomocí tlačítka Přidat nebo Spravovat.


azureResourceGroup - Skupina prostředků
string. Vyžaduje se, když action != bake && connectionType = azureResourceManager.

Vyberte skupinu prostředků Azure.


kubernetesCluster - Cluster Kubernetes
string. Vyžaduje se, když action != bake && connectionType = azureResourceManager.

Vyberte spravovaný cluster Azure.


useClusterAdmin - Použití přihlašovacích údajů správce clusteru
boolean. Nepovinný parametr. Použijte, když connectionType = azureResourceManager. Výchozí hodnota: false.

Místo výchozích přihlašovacích údajů uživatele clusteru použijte přihlašovací údaje správce clusteru.


namespace - Obor názvů
string.

Určuje obor názvů pro příkazy pomocí příznaku –namespace . Pokud obor názvů není zadaný, 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 v deploy 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.

V případě hodnoty smise procento rozdělení provozu provádí na úrovni požadavku pomocí sítě služeb. Síť služeb musí nastavit správce clusteru. Tato úloha zpracovává orchestraci objektů SMI TrafficSplit .

Pro hodnotu podnení možné procento rozdělení na úrovni požadavku, pokud chybí síť služeb. Místo toho se procentuální vstup používá k výpočtu replik pro směrný plán a kanárky. 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žije k výpočtu počtu replik standardních a kanárových variant úloh obsažených v souborech manifestu.

Pro zadaný procentuální vstup vypočítejte:

(procento × počet replik) / 100

Pokud výsledek není celé číslo, použije se při vytváření standardních a kanárových variant matematická podlaha výsledku.

Předpokládejme například, že nasazení hello-world je ve vstupním souboru manifestu a že následující řádky jsou ve vstupu úkolu:

replicas: 4
strategy: canary
percentage: 25

V tomto případě se nasazení hello-world-baseline a hello-world-canary vytvoří s jednou replikou. Základní varianta se vytvoří se stejnou imagí a značkou jako stabilní verze, což je varianta se čtyřmi replikami před nasazením. Vytvoří se kanárová varianta s imagí a značkou, které odpovídají nově nasazeným změnám.


baselineAndCanaryReplicas - Repliky standardních hodnot a repliky kanárů
string. Vyžaduje se, když strategy = Canary && action = deploy && trafficSplitMethod = SMI. Výchozí hodnota: 1.

Když 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 vstupní manifest nasazení určuje 30 replik pro stabilní variantu. Také předpokládejme, ž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 základní a kanárské varianty obdrží polovinu ze zadaných 20 %. Standardní a kanárové varianty nedostávají po každé 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 k nasazení. Každý řádek představuje jednu cestu. Vzor porovnávání souborů je přijatelná hodnota 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 .


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á pod 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 vykreslování 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 chartu Helm, která se má upéct.


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.


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 souborům přepsání. 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.


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 určenou same s ohledem na 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 opravy:

  • Soubor manifestu identifikuje objekty, které mají být opraveny.
  • Jednotlivé objekty jsou identifikované podle druhu a názvu 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 typ 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.


replicas - Počet replik
string. Vyžaduje se, když action = scale.

Určuje název objektu K8s.


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 pro vytvoření nebo aktualizaci imagepullsecret vybraného registru. Je imagePullSecret způsob, jak kubeletu předat tajný klíč, který obsahuje heslo registru kontejneru, aby mohl jménem vašeho podu vyžádat soukromou image.


secretName - Název tajného kódu
string. Nepovinný parametr. Použijte, když action = createSecret.

Určuje název tajného kódu. Tento název tajného kódu 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álů, které se mají vložit do tajného klíče. Pří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žijí k vytvoření tajného klíče registru Dockeru v clusteru. Soubory manifestu pod polem imagePullSecrets pak můžou odkazovat na název tohoto tajného kódu.


rolloutStatusTimeout - Vypršení časového limitu 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 ovládání úloh

Všechny úlohy mají kromě vstupů také možnosti ovládání. Další informace najdete v tématu Možnosti ovládacích prvků 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
Umístění balíčků manifestů vytvořených akcí bake

Poznámky

Důležité informace o připojení ke službě Kubernetes Service při přístupu k AKS

Připojení ke službě Kubernetes můžete vytvořit pomocí některé z následujících možností.

  • KubeConfig
  • Service Account
  • Předplatné Azure

Snímek obrazovky s výběrem metody ověřování připojení služby Kubernetes

Při výběru možnosti Předplatné Azure musí být Kubernetes přístupný pro Azure DevOps v době konfigurace připojení služby. Připojení služby může být z různých důvodů, například jste vytvořili privátní cluster nebo cluster má zakázané místní účty. V těchto případech se Azure DevOps nemůže připojit ke clusteru v době konfigurace připojení služby a zobrazí se zablokovaná obrazovka Načítání oborů názvů .

Snímek obrazovky s výběrem dialogového okna ověřování připojení služby Kubernetes při načítání oborů názvů

Počínaje Kubernetes 1.24 se už ve výchozím nastavení nevytvářají dlouhodobé tokeny. Kubernetes doporučuje nepoužít dlouhodobé tokeny. V důsledku toho nemají úlohy používající připojení služby Kubernetes vytvořené s možností Předplatné Azure přístup k trvalému tokenu potřebnému k ověření a nemají přístup ke clusteru Kubernetes. Výsledkem je také zablokování dialogového okna Načítání oborů názvů .

Použití připojení ke službě Azure Resource Manager Service Pro přístup k AKS

Pro zákazníky AKS poskytuje typ připojení služby Azure Resource Manager nejlepší způsob připojení k privátnímu clusteru nebo clusteru se zakázanými místními účty. Tato metoda nezávisí na připojení ke clusteru v okamžiku vytvoření připojení služby. Přístup k AKS se odkládá na modul runtime kanálu, který má následující výhody:

  • Přístup ke (privátnímu) clusteru AKS je možné provést z agenta v místním prostředí nebo z agenta škálovací sady s přehledem clusteru.
  • Token se vytvoří pro každou úlohu, která používá připojení služby Azure Resource Manager. Tím se zajistí, že se připojujete ke Kubernetes pomocí krátkodobého tokenu, což je doporučení Kubernetes.
  • K AKS je možné přistupovat i v případě, že jsou místní účty zakázané.

Nejčastější dotazy k připojení služby

Zobrazuje se mi následující chybová zpráva: Nepodařilo se najít žádný tajný kód přidružený k účtu služby. Co se děje?

Používáte připojení ke službě Kubernetes s předplatným Azure. Tuto metodu aktualizujeme tak, aby vytvářela dlouhodobé tokeny. Očekává se, že bude k dispozici v polovině května. Doporučuje se ale začít používat typ připojení služby Azure a podle pokynů Kubernetes nepoužívat dlouhodobé tokeny.

Používám AKS a nechci nic měnit. Můžu dál používat úlohy s připojením ke službě Kubernetes?

Tuto metodu aktualizujeme tak, aby vytvářela dlouhodobé tokeny. Očekává se, že bude k dispozici v polovině května. Mějte ale na paměti, že tento přístup je v rozporu s pokyny Kubernetes.

Používám úlohy Kubernetes a připojení služby Kubernetes, ale ne AKS. Mám se znepokojovat?

Úkoly budou dál fungovat jako předtím.

Odebere se typ připojení ke službě Kubernetes?

Naše úlohy Kubernetes fungují s libovolným clusterem Kubernetes bez ohledu na to, kde jsou spuštěné. Připojení ke službě Kubernetes bude dál existovat.

Jsem zákazník AKS a všechno funguje v pořádku, mám jednat?

Není potřeba nic měnit. Pokud při vytváření používáte připojení ke službě Kubernetes a vybrané předplatné Azure, měli byste znát pokyny Kubernetes k používání dlouhodobých tokenů.

Vytvářím prostředí Kubernetes a nemám možnost používat připojení služeb

Pokud během vytváření prostředí nemáte přístup ke službě AKS, můžete použít prázdné prostředí a nastavit connectionType vstup na připojení služby Azure Resource Manager.

Mám nakonfigurovanou službu AKS se službou Azure Active Directory RBAC a můj kanál nefunguje. Vyřeší to tyto aktualizace?

Přístup k Kubernetes, když je povolený RBAC AAD, nesouvisí s vytvářením tokenů. Abychom zabránili interaktivní výzvě, budeme kubelogin podporovat v budoucí aktualizaci.

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í: Volba 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 úlohy směrného plánu a kanárů 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, podívejte se na ú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 zkompose

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 škálování objektů:

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 opravy 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

Akce odstranění

Tento kód YAML ukazuje odstranění ukázkového 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 strategy: canarypro 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 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ě spuštění s číslem 23) by úloha manifestu Kubernetes s action: deploystrategy: canary a vytvořila nasazení sampleapp-baseline a sampleapp-canary, jejichž počet replik je určen produktem percentage zadání úlohy s hodnotou požadovaného počtu replik pro konečnou stabilní variantu podle vstupních souborů manifestu sampleapp .

S výjimkou počtu replik má základní verze stejnou konfiguraci jako stabilní varianta, zatímco kanárová verze obsahuje nové změny, které jsou zavedeny aktuálním spuštěním (v tomto případě číslo 23). Pokud je v kanálu po výše uvedeném kroku nastavený ruční zásah, umožnilo by to pozastavit kanál, aby správce kanálu mohl vyhodnotit klíčové metriky pro základní a kanárskou verzi a rozhodnout se, jestli jsou kanárské změny dostatečně bezpečné a vhodné pro úplné zavedení.

Vstupyaction: promote a strategy: canary nebo action: reject a strategy: canary úloh manifestu Kubernetes je možné použít k povýšení nebo odmítnutí kanárkových změn v uvedeném pořadí. 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é standardní a kanárové verze.

Požadavky

Požadavek Popis
Typy kanálů YAML, klasický build, klasická verze
Běží na 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í