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


KubernetesManifest@0 – Üzembe helyezés a Kubernetes v0-ben feladat

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

Syntax

# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: # string. Namespace. 
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
    #dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file. 
    #helmChart: # string. Required when action = bake && renderType = helm. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides. 
    #kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection. 
    #rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
  inputs:
    #action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
    #kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection. 
    #namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
    #strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
    #percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
    #manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests. 
    #containers: # string. Optional. Use when action = deploy || action = promote. Containers. 
    #imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets. 
    #renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
    #helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart. 
    #releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name. 
    #overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files. 
    #overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides. 
    #resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
    #resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path. 
    #kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind. 
    #name: # string. Required when action = scale || resourceToPatch = name. Name. 
    #replicas: # string. Required when action = scale. Replica count. 
    #mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
    #arguments: # string. Optional. Use when action = delete. Arguments. 
    #patch: # string. Required when action = patch. Patch. 
    #secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
    #secretName: # string. Optional. Use when action = createSecret. Secret name. 
    #secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments. 
    #dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.

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.


kubernetesServiceConnection - Kubernetes-szolgáltatáskapcsolat
string. Akkor szükséges, ha action != bake.

Kubernetes-szolgáltatáskapcsolatot ad meg.


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.


namespace - Névtér
string. Akkor szükséges, ha action != bake. Alapértelmezett érték: default.

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.


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

Megadja a jegyzékfájlok helyettesítéséhez használandó kép teljes URL-címét. Ez a bemenet elfogadja a több összetevő-helyettesítés specifikációját egy új sorra tagolt formában. Bemutatunk egy példát:

containers: |
  contosodemo.azurecr.io/foo:test1
  contosodemo.azurecr.io/bar:test2

Ebben a példában a bemeneti jegyzékfájlok képmezőjében a és contosodemo.azurecr.io/bar a kifejezésre mutató összes hivatkozás contosodemo.azurecr.io/foo szerepel. Minden talált egyezésnél a címke test1 vagy test2 a lecseréli az egyeztetett hivatkozást.


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

Többsoros bemenetet ad meg, ahol 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.

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


renderType - Renderelési motor
string. Választható. Használja a következőt: action = bake. Engedélyezett értékek: helm2 (Helm 2). Alapértelmezett érték: helm2.

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


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

Megadja a docker-compose fájl elérési útját.


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

Megadja a Helm-diagram sütni kívánt útvonalát.


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

Megadja a Helm-diagram sütni kívánt útvonalát.


releaseName - Helm-kiadás 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.


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

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.

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


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

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


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.


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

További felülbírálási értékeket ad meg, amelyeket a parancssori kapcsolón --set keresztül használnak a Helm-et használó jegyzékfájlok sütésekor.

Adja meg a felülbírálási értékeket párként key-value a formátumban key:value. Ha több felülíró key-value párt használ, mindegyik párt külön sorban adja meg key-value . Használjon újvonalas karaktert a különböző key-value párok közötti elválasztó karakterként.


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, amely az adattár gyökeréhez képest megadott same elérésiút-utótaggal rendelkezik.


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 objektumokat a rendszer típus és név alapján azonosítja javítási cé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.

Megadja a K8s objektumtípust, 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.

A replikák számát adja meg, ahány replikára méretezhető.


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.

Megadja 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.

Általános vagy docker-t imagepullsecrethoz létre vagy frissít. Adja meg dockerRegistry a kiválasztott beállításjegyzék létrehozását vagy frissítését imagepullsecret . Az an imagePullSecret egy olyan titkos kód átadása, 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 nevet használhatja a Kubernetes YAML konfigurációs fájljában.


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

Megadja a titkos kódba beszúrandó kulcsokat és literális értékeket. 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ásjegyzékbeli titkos kódjának fürtben való létrehozásához használatosak. A mezőben lévő imagePullSecrets jegyzékfájlok ezután hivatkozhatnak a titkos kód nevére.


rolloutStatusTimeout - Bevezetési állapot időtúllépése
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.


Tevékenységvezérlési beállítások

A tevékenységbemeneteken kívül minden tevékenység rendelkezik vezérlési lehetőségekkel. 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
Megadja a pékművelet által létrehozott jegyzékcsomagok helyét.

Megjegyzések

Megjegyzés

A feladat egy újabb verziója érhető el, amely további támogatást nyújt a Kubernetes-fürtök különböző módokon történő megcélzásához a connectionType tulajdonság használatával. További információ: KubernetesManifest@1 és KubernetesManifest@1 szolgáltatáskapcsolati megjegyzések

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ő helyettesítése: Az üzembe helyezési művelet bemenetként a tárolólemezképek listáját adja meg, amelyeket a címkékkel és kivonatokkal együtt adhat meg. Ugyanez a bemenet lesz helyettesítve a nemtemplatizált jegyzékfájlokkal, mielőtt alkalmazásokat ad a fürtre. Ez a helyettesítés biztosítja, hogy a fürtcsomópontok a rendszerkép megfelelő verzióját kérik 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 megállapításához, hogy a tevékenység állapota sikeres vagy sikertelen-e.

  • Nyomon követhetőségi széljegyzetek: A rendszer széljegyzeteket ad hozzá az üzembe helyezett Kubernetes-objektumokhoz a nyomon kö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 kulcsok kezelése: A createSecret művelet lehetővé teszi, hogy a Docker-beállításjegyzék titkos kódjai Docker-beállításjegyzék-szolgáltatáskapcsolatokkal hozhatók létre. Általános titkos kulcsok egyszerű szöveges változók vagy titkos változók használatával történő létrehozását is lehetővé teszi. Mielőtt üzembe helyezené a fürtöt, a secrets bemenet és a deploy művelet segítségével kiegészítheti a bemeneti jegyzékfájlokat a megfelelő imagePullSecrets értékkel.

  • Bake jegyzékfájl: 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.

  • Üzembehelyezési stratégia: A művelettel rendelkező deploy stratégia kiválasztása canary a és -canaryutótaggal -baseline ellátott 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ásháló-szolgáltatókkal, mint a Linkerd és Istioa. A Kubernetes-jegyzékfeladat az SMI-objektumokat TrafficSplit a stabil, alapkonfigurációs és kanári-szolgáltatásokhoz képezi le az üzembehelyezési stratégia életciklusa során.

      A szolgáltatáshálón alapuló és ezt a feladatot használó Kanári-üzemelő példányok pontosabbak. Ennek a pontosságnak az az oka, hogy a szolgáltatói hálószolgáltatók hogyan teszik lehetővé a forgalom részletes százalékalapú felosztását. A szolgáltatásháló a podokba ágyazott szolgáltatásregisztrációs adatbázist és oldalkocsis tárolókat használja. Ez az injektálás az alkalmazástárolók mellett történik a részletes forgalommegosztás 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ásifeladat-változat podjainak, mivel a választócímke megkötései teljesülnek. A Kubernetes Jegyzékfájl ezeket a kéréseket az alapkonfigurációk és a kanári-változatok létrehozásakor fogadja el. Ez az útválasztási viselkedés úgy éri el a kívánt hatást, hogy az összes kérelemnek csak egy részét irányítja át a kanáriba.

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

Üzembe helyezési művelet

Az alábbi YAML-kód egy példa a 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. Minden talált egyezés esetében a rendszer címkeként fűzi tagVariable1 hozzá a vagy tagVariable2 értéket a kép nevéhez. Az összetevők helyettesítéséhez a tárolók bemenetében is megadhat kivonatokat.

Megjegyzés

Bár az üzembe helyezési stratégiához kapcsolódó YAML-bemenettel létrehozhat 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 használja a következő sorrendben:

  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. Egy előléptetési művelet, amely manuális beavatkozási feladat folytatásakor fut, és egy elutasító művelet, amely manuális beavatkozási feladat elutasítása esetén fut.

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

Az alábbi YAML-kód a Docker registry 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 általános titkos kulcsok mintájá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

Pékművelet

A következő 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ő feladatban. 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ékfájlok 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-nal 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-nal, a Docker Compose átalakítási eszközével létrehozott jegyzékfájlok sütésére.

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óban az aktuális futtatás által bevezetett új módosítások (ebben az esetben a 23-as futtatás). 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ürtben, 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