Megosztás a következőn keresztül:


KubernetesManifest@1 – Üzembe helyezés a Kubernetes v1-ben feladat

Kubernetes-jegyzékfájlokat használva fürtökön helyezhet üzembe, vagy akár a Helm-diagramok használatával is megsütheti az üzembe helyezéshez használni kívánt jegyzékfájlokat.

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.

Bevitelek

action - Akció
string. Engedélyezett értékek: bake, createSecret (titkos kód létrehozása), delete, deploy, patch, promote, scale. reject Alapértelmezett érték: deploy.

Megadja a végrehajtandó műveletet.


connectionType - Szolgáltatáskapcsolat típusa
string. Akkor szükséges, ha action != bake. Engedélyezett értékek: azureResourceManager (Azure Resource Manager), kubernetesServiceConnection (Kubernetes Service-kapcsolat). Alapértelmezett érték: kubernetesServiceConnection.

Válassza ki a Kubernetes-szolgáltatás kapcsolattípusát.

  • kubernetesServiceConnection (Kubernetes-szolgáltatáskapcsolat) – Lehetővé teszi Egy KubeConfig-fájl megadását, egy szolgáltatásfiók megadását vagy egy AKS-példány importálását az Azure-előfizetés lehetőséggel. Egy AKS-példány Azure-előfizetési lehetőséggel történő importálásához Kubernetes-fürthozzáféréshez van szükség a Szolgáltatáskapcsolat konfigurálásakor.
  • azureResourceManager(Azure Resource Manager) – Lehetővé teszi egy AKS-példány kiválasztását. Nem fér hozzá a Kubernetes-fürthöz a Szolgáltatáskapcsolat konfigurálásakor.

További információ: Megjegyzések.


kubernetesServiceConnection - Kubernetes-szolgáltatáskapcsolat
Bemeneti alias: kubernetesServiceEndpoint. string. Akkor szükséges, ha action != bake && connectionType = kubernetesServiceConnection.

Kubernetes-szolgáltatáskapcsolatot ad meg.


azureSubscriptionConnection - Azure-előfizetés
Bemeneti alias: azureSubscriptionEndpoint. string. Akkor szükséges, ha action != bake && connectionType = azureResourceManager.

Válassza ki a Azure Container Registry tartalmazó Azure Resource Manager-előfizetést. Megjegyzés: Új szolgáltatáskapcsolat konfigurálásához válassza ki az Azure-előfizetést a listából, és kattintson az Engedélyezés gombra. Ha az előfizetése nem szerepel a listában, vagy ha meglévő szolgáltatásnevet szeretne használni, a "Hozzáadás" vagy a "Kezelés" gombbal beállíthat egy Azure-szolgáltatáskapcsolatot.


azureResourceGroup - Erőforráscsoport
string. Akkor szükséges, ha action != bake && connectionType = azureResourceManager.

Válasszon ki egy Azure-erőforráscsoportot.


kubernetesCluster - Kubernetes-fürt
string. Akkor szükséges, ha action != bake && connectionType = azureResourceManager.

Válasszon ki egy Felügyelt Azure-fürtöt.


useClusterAdmin - Fürt rendszergazdai hitelesítő adatainak használata
boolean. Választható. Használja a következőt: connectionType = azureResourceManager. Alapértelmezett érték: false.

Fürtadminisztrátori hitelesítő adatokat használjon az alapértelmezett fürtfelhasználói hitelesítő adatok helyett.


namespace - Névtér
string.

A parancsok névterét adja meg a –namespace jelölő használatával. Ha a névtér nincs megadva, a parancsok az alapértelmezett névtérben futnak.


strategy - Stratégia
string. Választható. Használja a következőt: action = deploy || action = promote || action = reject. Engedélyezett értékek: canary, none. Alapértelmezett érték: none.

Meghatározza a műveletben egy deploy művelet vagy reject művelet előtt promote használt üzembehelyezési stratégiát. canary Jelenleg ez az egyetlen elfogadható üzembehelyezési stratégia.


trafficSplitMethod - Forgalomfelosztási módszer
string. Választható. Használja a következőt: strategy = canary. Engedélyezett értékek: pod, smi. Alapértelmezett érték: pod.

A érték smiesetében a forgalom százalékos felosztása a kérés szintjén történik egy szolgáltatásháló használatával. A szolgáltatáshálót fürtadminisztrátornak kell beállítania. Ez a feladat kezeli az SMI TrafficSplit-objektumok vezénylését.

A érték podesetében a százalékos felosztás nem lehetséges a kérés szintjén szolgáltatásháló hiányában. Ehelyett a százalékos bemenettel számítjuk ki az alapkonfiguráció és a kanári replikáit. A számítás a replikák százalékos aránya, amely a stabil változat bemeneti jegyzékfájljaiban van megadva.


percentage - Százalékos
string. Akkor szükséges, ha strategy = Canary && action = deploy. Alapértelmezett érték: 0.

A jegyzékfájlokban található számítási feladatok alapkonfiguráció-variánsainak és kanári-variáns replikáinak kiszámításához használt százalékos arány.

A megadott százalékos bemenethez számítsa ki a következőket:

(areplikák százalékos × száma) / 100

Ha az eredmény nem egész szám, az eredmény matematikai padlója lesz felhasználva az alapterv és a kanári-változatok létrehozásakor.

Tegyük fel például, hogy az üzembe helyezés hello-world a bemeneti jegyzékfájlban van, és a következő sorok szerepelnek a tevékenység bemenetében:

replicas: 4
strategy: canary
percentage: 25

Ebben az esetben az üzemelő példányok hello-world-baseline és hello-world-canary egy-egy replikával jönnek létre. Az alapváltozat ugyanazzal a lemezképpel és címkével jön létre, mint a stabil verzió, amely a négy replikaváltozat az üzembe helyezés előtt. A kanári-változat az újonnan üzembe helyezett módosításoknak megfelelő képpel és címkével jön létre.


baselineAndCanaryReplicas - Alapkonfiguráció és kanári replikák
string. Akkor szükséges, ha strategy = Canary && action = deploy && trafficSplitMethod = SMI. Alapértelmezett érték: 1.

Ha a értékre smivan állítvatrafficSplitMethod, a forgalom százalékos felosztását a szolgáltatásháló síkja szabályozza. A kanári- és alapváltozatok replikáinak tényleges számát a forgalom felosztásától függetlenül szabályozhatja.

Tegyük fel például, hogy a bemeneti üzembehelyezési jegyzék 30 replikát határoz meg a stabil változathoz. Azt is feltételezzük, hogy a tevékenységhez a következő bemenetet adja meg:

strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1

Ebben az esetben a stabil változat a forgalom 80%-át kapja, míg az alapkonfiguráció és a kanári változatok mindegyike a megadott 20% felét kapja. Az alapkonfigurációk és a kanári-változatok nem kapnak három replikát. Ehelyett a megadott számú replikát kapnak, ami azt jelenti, hogy mindegyik egy replikát kap.


manifests - Rakományjegyzék
string. Akkor szükséges, ha action = deploy || action = promote || action = reject.

Megadja az üzembe helyezéshez használni kívánt jegyzékfájlok elérési útját. Minden sor egyetlen útvonalat jelöl. A fájlegyeztetési minta minden sorhoz elfogadható érték.


containers - Konténerek
string. Választható. Használja a következőt: action = deploy || action = promote || action = bake.

Megadja a jegyzékfájlok helyettesítéséhez használandó kép teljes erőforrás-URL-címét. Az URL-cím contosodemo.azurecr.io/helloworld:test egy példa.


imagePullSecrets - ImagePullSecrets
string. Választható. Használja a következőt: action = deploy || action = promote.

Többsoros bemenetet ad meg, amelyben minden sor tartalmazza a fürtben már beállított Docker-beállításjegyzékbeli titkos kód nevét. Minden titkos kódnév hozzá lesz adva imagePullSecrets a bemeneti jegyzékfájlokban található számítási feladatokhoz.


renderType - Renderelési motor
string. Választható. Használja a következőt: action = bake. Engedélyezett értékek: helm, kompose, kustomize. Alapértelmezett érték: helm.

Meghatározza a jegyzékfájlok előállításához használt renderelési típust.


dockerComposeFile - A docker-levélírási fájl elérési útja
string. Akkor szükséges, ha action = bake && renderType = kompose.

Docker-compose fájl elérési útját adja meg.


helmChart - Helm-diagram
string. Akkor szükséges, ha action = bake && renderType = helm.

Megadja a sütni kívánt Helm-diagram elérési útját.


releaseName - Helm kiadásának neve
string. Választható. Használja a következőt: action = bake && renderType = helm.

Megadja a használni kívánt Helm-kiadás nevét.


overrideFiles - Fájlok felülbírálása
string. Választható. Használja a következőt: action = bake && renderType = helm.

Egy többsoros bemenetet ad meg, amely elfogadja a felülbírálási fájlok elérési útját. A fájlok a Helm-diagramokból származó jegyzékfájlok sütésekor használatosak.


overrides - Felülbírálja
string. Választható. Használja a következőt: action = bake && renderType = helm.

Megadja a beállítandó felülbírálási értékeket.


kustomizationPath - Kustomization elérési útja
string. Választható. Használja a következőt: action = bake && renderType = kustomize.

Megadja azt az argumentumot, amelynek a fájlt tartalmazó könyvtár elérési útjának kell lennie, vagy egy git-adattár URL-címének, amelynek elérésiút-utótagja az adattár gyökeréhez képest van megadva same .


resourceToPatch - Javítandó erőforrás
string. Akkor szükséges, ha action = patch. Engedélyezett értékek: file, name. Alapértelmezett érték: file.

A következő javítási módszerek egyikét jelzi:

  • A jegyzékfájl azonosítja a javítandó objektumokat.
  • Az egyes objektumok típus és név alapján lesznek azonosítva javításcélként.

Az elfogadható értékek a fájl és a név.


resourceFileToPatch - Fájl elérési útja
string. Akkor szükséges, ha action = patch && resourceToPatch = file.

Megadja a javításhoz használt fájl elérési útját.


kind - Fajta
string. Akkor szükséges, ha action = scale || resourceToPatch = name. Engedélyezett értékek: deployment, replicaset, statefulset.

Meghatározza a K8s objektum típusát, például deploymenta , replicaSet és egyebeket.


name - Név
string. Akkor szükséges, ha action = scale || resourceToPatch = name.

A K8s objektum nevét adja meg.


replicas - Replikák száma
string. Akkor szükséges, ha action = scale.

Megadja, hogy hány replikára kell skálázni.


replicas - Replikák száma
string. Akkor szükséges, ha action = scale.

A K8s objektum nevét adja meg.


mergeStrategy - Egyesítési stratégia
string. Akkor szükséges, ha action = patch. Engedélyezett értékek: json, merge, strategic. Alapértelmezett érték: strategic.

Megadja a megadott javítás típusát.


arguments - Érvek
string. Választható. Használja a következőt: action = delete.

A parancs argumentumait kubectl delete adja meg. Ilyen például a következő: arguments: deployment hello-world foo-bar


patch - Javítás
string. Akkor szükséges, ha action = patch.

Meghatározza a javítás tartalmát.


secretType - Titkos kód típusa
string. Akkor szükséges, ha action = createSecret. Engedélyezett értékek: dockerRegistry, generic. Alapértelmezett érték: dockerRegistry.

Létrehoz vagy frissít egy általános vagy dockert imagepullsecret. Adja meg dockerRegistry a kijelölt beállításjegyzék létrehozását vagy frissítését imagepullsecret . Az An imagePullSecret egy olyan titkos kód átadására, amely tárolóregisztrációs adatbázis jelszavát tartalmazza a Kubeletnek, így lekérhet egy privát rendszerképet a pod nevében.


secretName - Titkos kód neve
string. Választható. Használja a következőt: action = createSecret.

Megadja a titkos kód nevét. Ezt a titkos kódnevet a Kubernetes YAML konfigurációs fájljában használhatja.


secretArguments - Érvek
string. Választható. Használja a következőt: action = createSecret && secretType = generic.

Titkos kulcsokat és literális értékeket ad meg. Például: --from-literal=key1=value1--from-literal=key2="top secret".


dockerRegistryEndpoint - Docker beállításjegyzék-szolgáltatáskapcsolat
string. Választható. Használja a következőt: action = createSecret && secretType = dockerRegistry.

Megadja annak a megadott szolgáltatáskapcsolatnak a hitelesítő adatait, amelyek a Docker beállításkulcsának fürtben való létrehozásához használhatók. A mező jegyzékfájljai imagePullSecrets ezután hivatkozhatnak a titkos kód nevére.


rolloutStatusTimeout - Időtúllépés a bevezetési állapothoz
string. Választható. Használja a következőt: action = deploy || action = patch || action = scale || action = promote. Alapértelmezett érték: 0.

Megadja, hogy mennyi ideig (másodpercben) várjon az állapot befejezése watch on rollout előtt.


Feladatvezérlési lehetőségek

Minden feladathoz tartoznak vezérlési lehetőségek is a feladat bemenetei mellett. További információ: Vezérlési beállítások és gyakori feladattulajdonságok.

Kimeneti változók

Ez a feladat a következő kimeneti változókat határozza meg, amelyeket az alsóbb rétegbeli lépésekben, feladatokban és szakaszokban használhat fel.

manifestsBundle
A bake művelet által létrehozott jegyzékcsomagok helye

Megjegyzések

A Kubernetes-szolgáltatás kapcsolati szempontjai az AKS elérésekor

Az alábbi lehetőségek bármelyikével létrehozhat Kubernetes-szolgáltatáskapcsolatot.

  • KubeConfig
  • Szolgáltatásfiók
  • Azure-előfizetés

Képernyőkép a Kubernetes-szolgáltatás kapcsolat-hitelesítési módszerének kiválasztásáról.

Az Azure-előfizetés lehetőség kiválasztásakor a Kubernetesnek elérhetőnek kell lennie az Azure DevOps számára a szolgáltatás kapcsolatkonfigurációjának időpontjában. Előfordulhat, hogy a szolgáltatáskapcsolat nem hozható létre, például privát fürtöt hozott létre , vagy a fürt helyi fiókjai le vannak tiltva. Ezekben az esetekben az Azure DevOps nem tud csatlakozni a fürthöz a szolgáltatáskapcsolat konfigurációs ideje alatt, és elakadt a névterek betöltése képernyő.

Képernyőkép egy Kubernetes-szolgáltatás kapcsolathitelesítési párbeszédpaneljének kiválasztásáról, amely elakadt a névterek betöltésekor.

A Kubernetes 1.24-től kezdve a hosszú élettartamú tokenek alapértelmezés szerint nem jönnek létre. A Kubernetes a hosszú élettartamú tokenek használatát javasolja. Ennek eredményeképpen az Azure-előfizetés lehetőséggel létrehozott Kubernetes-szolgáltatáskapcsolatot használó feladatok nem rendelkeznek hozzáféréssel a hitelesítéshez szükséges állandó jogkivonathoz, és nem férnek hozzá a Kubernetes-fürthöz. Ez a névterek befagyasztott betöltése párbeszédpanelt is eredményezi.

Az AKS elérése az Azure Resource Manager szolgáltatáskapcsolat használatával

Az AKS-ügyfelek számára az Azure Resource Manager szolgáltatás kapcsolattípusa biztosítja a legjobb módszert egy privát fürthöz vagy egy helyi fiókokat letiltó fürthöz való csatlakozáshoz. Ez a módszer nem függ a fürtkapcsolattól a szolgáltatáskapcsolat létrehozásakor. Az AKS-hez való hozzáférést a rendszer a folyamat futtatókörnyezetére halasztja, amely a következő előnyökkel jár:

  • A (privát) AKS-fürthöz való hozzáférés egy saját üzemeltetésű vagy méretezési csoportügynökből, a fürtre való látóvonallal végezhető el.
  • Minden olyan feladathoz létrejön egy jogkivonat, amely Azure Resource Manager szolgáltatáskapcsolatot használ. Ez biztosítja, hogy rövid élettartamú jogkivonattal csatlakozzon a Kuberneteshez, ami a Kubernetes-javaslat.
  • Az AKS akkor is elérhető, ha a helyi fiókok le vannak tiltva.

Szolgáltatáskapcsolat – gyakori kérdések

A következő hibaüzenet jelenik meg: Nem található a szolgáltatásfiókhoz társított titkos kód. Mi történik?

A Kubernetes szolgáltatáskapcsolatot használja az Azure-előfizetéssel. Ezt a módszert úgy frissítjük, hogy hosszú élettartamú jogkivonatokat hozzon létre. Ez várhatóan május közepén lesz elérhető. Javasoljuk azonban, hogy kezdje el használni az Azure-szolgáltatás kapcsolattípusát, és ne használjon hosszú élettartamú jogkivonatokat a Kubernetes útmutatója szerint.

Az AKS-t használom, és nem szeretnék semmit módosítani, továbbra is használhatok feladatokat a Kubernetes szolgáltatáskapcsolattal?

Ezt a módszert úgy frissítjük, hogy hosszú élettartamú jogkivonatokat hozzon létre. Ez várhatóan május közepén lesz elérhető. Vegye figyelembe azonban, hogy ez a megközelítés nem vonatkozik a Kubernetes útmutatására.

A Kubernetes-feladatokat és a Kubernetes-szolgáltatáskapcsolatot használom, de az AKS-t nem. Aggódnom kellene?

A tevékenységek a korábbiakhoz hasonlóan fognak működni.

Eltávolítja a Kubernetes-szolgáltatás kapcsolattípusát?

A Kubernetes-feladatok bármely Kubernetes-fürttel működnek, függetlenül attól, hogy hol futnak. A Kubernetes szolgáltatáskapcsolat továbbra is fennáll.

AKS-ügyfél vagyok, és minden rendben van.

Semmit sem kell megváltoztatni. Ha a Kubernetes szolgáltatáskapcsolatot használja, és a létrehozás során kiválasztotta az Azure-előfizetést, vegye figyelembe a Kubernetes hosszú élettartamú jogkivonatok használatával kapcsolatos útmutatóját.

Kubernetes-környezetet hozok létre, és nincs lehetőségem szolgáltatáskapcsolatok használatára

Ha nem fér hozzá az AKS-hez a környezet létrehozásakor, használhat üres környezetet, és beállíthatja a connectionType bemenetet egy Azure Resource Manager szolgáltatáskapcsolatra.

Az AKS az Azure Active Directory RBAC-vel van konfigurálva, és a folyamatom nem működik. Ezek a frissítések megoldják ezt?

A Kubernetes elérése az AAD RBAC engedélyezésekor nem kapcsolódik a jogkivonatok létrehozásához. Az interaktív kérések elkerülése érdekében egy későbbi frissítésben támogatjuk a kubelogin használatát.

Kubernetes-jegyzékfeladat használata egy buildelési vagy kiadási folyamatban a jegyzékfájlok Kubernetes-fürtökön való sütéséhez és üzembe helyezéséhez.

Ez a feladat a következőket támogatja:

  • Összetevők helyettesítése: Az üzembe helyezési művelet bemenetként megjeleníti a tárolórendszerképek listáját, amelyeket a címkékkel és kivonatokkal együtt megadhat. Ugyanez a bemenet lesz helyettesítve a nemtemplatizált jegyzékfájlokkal, mielőtt a fürtbe alkalmazásba lép. Ez a helyettesítés biztosítja, hogy a fürtcsomópontok a rendszerkép megfelelő verzióját húzzák le.

  • Jegyzékstabilitás: A rendszer ellenőrzi az üzembe helyezett Kubernetes-objektumok bevezetési állapotát. A stabilitási ellenőrzések be vannak építve annak meghatározásához, hogy a feladat állapota sikeres vagy sikertelen-e.

  • Nyomon követhetőségi széljegyzetek: A rendszer széljegyzeteket ad hozzá az üzembe helyezett Kubernetes-objektumokhoz a nyomonkövethetőségi információk felülbírálásához. A következő széljegyzetek támogatottak:

    • azure-pipelines/org
    • azure-pipelines/project
    • azure-pipelines/pipeline
    • azure-pipelines/pipelineId
    • azure-pipelines/execution
    • azure-pipelines/executionuri
    • azure-pipelines/jobName
  • Titkos kódok kezelése: A createSecret művelet lehetővé teszi, hogy a Docker-beállításjegyzék titkos kulcsait a Docker beállításjegyzék-szolgáltatáskapcsolatai segítségével hozza létre. Lehetővé teszi általános titkos kódok létrehozását egyszerű szöveges változók vagy titkos változók használatával. Mielőtt üzembe helyezené a fürtöt, a bemenet és a secretsdeploy művelet segítségével bővítheti a bemeneti jegyzékfájlokat a megfelelő imagePullSecrets értékkel.

  • Sütési jegyzék: A bake feladat művelete lehetővé teszi a sablonok Kubernetes-jegyzékfájlokba való sütését. A művelet olyan eszközöket használ, mint a Helm, a Compose és a Kustomize. A sütéssel ezek a Kubernetes-jegyzékfájlok használhatók a fürt üzembe helyezéséhez.

  • Üzembe helyezési stratégia: A canary művelettel rendelkező deploy stratégia kiválasztása a és -canaryutótaggal ellátott -baseline számítási feladatok nevének létrehozásához vezet. A feladat a forgalom felosztásának két módszerét támogatja:

    • Service Mesh Interface: A Service Mesh Interface (SMI) absztrakciója lehetővé teszi a konfigurációt olyan szolgáltatókkal, mint a és IstioaLinkerd. A Kubernetes-jegyzékfeladat az SMI-objektumokat TrafficSplit az üzembehelyezési stratégia életciklusa során a stabil, az alapkonfigurációs és a kanári-szolgáltatásokhoz rendeli.

      A szolgáltatáshálón alapuló és ezt a feladatot használó Kanári-üzemelő példányok pontosabbak. Ez a pontosság annak köszönhető, hogy a szolgáltatásháló-szolgáltatók hogyan teszik lehetővé a forgalom részletes százalékos alapú felosztását. A szolgáltatásháló a podokba ágyazott szolgáltatásregisztrációs adatbázist és oldalkocsitárolókat használja. Ez az injektálás az alkalmazástárolók mellett történik a forgalom részletes felosztásának elérése érdekében.

    • Szolgáltatásháló nélküli Kubernetes: Szolgáltatásháló hiányában előfordulhat, hogy a kérés szintjén nem kapja meg a kívánt százalékos arányt. A kanári-telepítéseket azonban az alapkonfiguráció és a kanári változatok használatával is elvégezheti a stabil változat mellett.

      A szolgáltatás kéréseket küld mindhárom számítási feladatváltozat podjainak, mivel a választócímke-megkötések teljesülnek. A Kubernetes Manifest ezeket a kéréseket az alapkonfigurációk és a kanári-változatok létrehozásakor tiszteletben tartja. Ez az útválasztási viselkedés a teljes kérelemnek csak egy részét irányítja át a kanáriba.

    Hasonlítsa össze az alaptervet és a kanári számítási feladatokat a kiadási folyamatok manuális beavatkozási feladatával vagy a YAML-folyamatok késleltetési feladatával . Végezze el az összehasonlítást a feladat előléptetési vagy elutasítási műveletének használata előtt.

Üzembe helyezési művelet

Az alábbi YAML-kód egy példa egy Kubernetes-névtérben való üzembe helyezésre jegyzékfájlok használatával:

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

A fenti példában a feladat megpróbálja megkeresni a képek foo/demo és bar/demo a jegyzékfájlok képmezőinek egyezéseit. Az egyes talált egyezések esetében a rendszer címkeként vagy címkéként hozzáfűzi az értéket tagVariable1tagVariable2 a kép nevéhez. A tárolók bemenetében kivonatokat is megadhat az összetevők helyettesítéséhez.

Megjegyzés

Bár az üzembe helyezési stratégiához kapcsolódó YAML-bemenettel hozhat létre deploy, promoteés reject műveleteket, a manuális beavatkozási feladatok támogatása jelenleg nem érhető el a buildelési folyamatokhoz.

Kiadási folyamatok esetén javasoljuk, hogy az üzembe helyezési stratégiához kapcsolódó műveleteket és bemeneteket az alábbi sorrendben használja:

  1. A és percentage: $(someValue)a paraméterrel strategy: canary megadott üzembehelyezési művelet.
  2. Manuális beavatkozási feladat, amellyel szüneteltetheti a folyamatot, és összehasonlíthatja az alapváltozatot a kanári-változattal.
  3. Olyan előléptetési művelet, amely akkor fut, ha a manuális beavatkozási feladat folytatódik, és egy elutasító művelet, amely akkor fut, ha egy manuális beavatkozási feladatot elutasítanak.

Titkos kód létrehozása művelet

Az alábbi YAML-kód a Docker-beállításjegyzék titkos kulcsainak Docker Registry-szolgáltatáskapcsolat használatával történő létrehozását mutatja be:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: dockerRegistry
    secretName: foobar
    dockerRegistryEndpoint: demoACR
    kubernetesServiceConnection: someK8sSC
    namespace: default

Ez a YAML-kód az általános titkos kódok mintalétrehozását mutatja be:

steps:
- task: KubernetesManifest@0
  displayName: Create secret
  inputs: 
    action: createSecret
    secretType: generic
    secretName: some-secret
    secretArguments: --from-literal=key1=value1
    kubernetesServiceConnection: someK8sSC
    namespace: default

Sütés művelet

Az alábbi YAML-kód egy példa a Helm-diagramok jegyzékfájljainak sütésére. Jegyezze fel egy névbevitel használatát az első tevékenységben. Ezt a nevet később az üzembe helyezési lépésben hivatkozunk a sütési lépés által létrehozott jegyzékek elérési útjának megadására.

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

Megjegyzés

Ha a Helmet közvetlenül szeretné használni a kiadások és a visszaállítások kezeléséhez, tekintse meg a Helm-diagramok csomagolása és üzembe helyezése című feladatot.

Példa a Kustomize-ra

Az alábbi YAML-kód egy példa a Kustomize használatával létrehozott, fájlokat tartalmazó kustomization.yaml jegyzékfájlok sütésére.

steps:
- task: KubernetesManifest@0
  name: bake
  displayName: Bake K8s manifests from kustomization path
  inputs:
    action: bake
    renderType: kustomize
    kustomizationPath: folderContainingKustomizationFile

- task: KubernetesManifest@0
  displayName: Deploy K8s manifests
  inputs:
    kubernetesServiceConnection: k8sSC1
    manifests: $(bake.manifestsBundle)

Kompose példa

Az alábbi YAML-kód egy példa a Kompose,a Docker Compose átalakítási eszközével létrehozott jegyzékfájlok sütéséhez.

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)

Skálázási művelet

Az alábbi YAML-kód egy példát mutat be az objektumok skálázására:

steps:
- task: KubernetesManifest@0
  displayName: Scale
  inputs: 
    action: scale
    kind: deployment
    name: bootcamp-demo
    replicas: 5
    kubernetesServiceConnection: someK8sSC
    namespace: default

Javítási művelet

Az alábbi YAML-kód egy objektumjavítási példát mutat be:

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

Művelet törlése

Ez a YAML-kód egy mintaobjektum törlését jeleníti meg:

steps:
- task: KubernetesManifest@0
  displayName: Delete
  inputs:
    action: delete
    arguments: deployment expressapp
    kubernetesServiceConnection: someK8sSC
    namespace: default

Hibaelhárítás

A Kubernetes-fürtöm tűzfal mögött található, és bérelt ügynököket használok. Hogyan helyezhetek üzembe ebben a fürtben?

Az IP-címek bérelt ügynökök számára történő engedélyezésével adhat hozzáférést a tűzfalon keresztül a bérelt ügynököknek. További részleteket az ügynök IP-tartományairól szóló részben tekinthet meg.

Hogyan működnek a kérések a stabil és a változó szolgáltatási útvonalakon az indikátoros üzemelő példányokkal?

A Kubernetesben a podok és szolgáltatások közötti címkeválasztó kapcsolat lehetővé teszi az üzemelő példányok beállítását úgy, hogy egyetlen szolgáltatás a kéréseket a stabil és az indikátoros változatokhoz is továbbítsa. A Kubernetes-jegyzék feladata ezt az indikátoros környezetekhez használja.

Ha a feladat tartalmazza a és strategy: canarya bemenetét action: deploy a bemeneti jegyzékfájlokban definiált minden számítási feladathoz (Üzembe helyezés, ReplicaSet, Pod, ...), létrejön az üzembe helyezés és -baseline-canary egy változata. Ebben a példában egy üzembe helyezés sampleapp található a bemeneti jegyzékfájlban, és a folyamat 22-es futtatási számának befejezése után a nevű sampleapp üzemelő példány stabil változata lesz üzembe helyezve a fürtben. Az ezt követő futtatásban (ebben az esetben a 23-as számú futtatásnál) a Kubernetes jegyzékfeladata action: deploy a következővel történik, és strategy: canary olyan mintaalkalmazás-alapkonfigurációt és sampleapp-canary üzemelő példányokat hozna létre, amelyek replikáinak számát a tevékenység bemenetének szorzata percentage határozza meg a végső stabil változat sampleapp replikáinak kívánt számával a bemeneti jegyzékfájloknak megfelelően.

A replikák számának kivételével az alapverzió konfigurációja megegyezik a stabil változattal, míg a kanári-verzió az aktuális futtatás által bevezetett új módosításokkal (ebben az esetben a 23-as futtatási számmal). Ha a fenti lépés után manuális beavatkozás van beállítva a folyamatban, lehetővé tenné a folyamat szüneteltetését, hogy a folyamat rendszergazdája kiértékelhesse az alapkonfiguráció és a kanári-verziók fő metrikáit, és eldönthesse, hogy a kanári módosításai biztonságosak és megfelelőek-e a teljes bevezetéshez.

Aaction: promote Kubernetes-jegyzékfeladatok és strategy: canary vagy action: rejectstrategy: canary bemenetei felhasználhatók a kanári-módosítások előléptetésére vagy elutasítására. Vegye figyelembe, hogy a lépés végén mindkét esetben csak a bemeneti jegyzékfájlokban deklarált számítási feladatok stabil változata lesz üzembe helyezve a fürtön, miközben a rövid élettartamú alapkonfiguráció és a kanári-verziók törlődnek.

Követelmények

Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás: Ügynök, DeploymentGroup
Igények None
Képességek Ez a tevékenység nem felel meg a feladat későbbi tevékenységeire vonatkozó követelményeknek.
Parancskorlátozások Bármelyik
Változók beállítása Bármelyik
Ügynök verziója Minden támogatott ügynökverzió.
Feladatkategória Üzembe helyezés