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 smi
se 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 pod
není 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
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ů .
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 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í: Volba
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 ú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 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, 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: canary
pro 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: deploy
strategy: 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í |