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 smi
eseté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 pod
eseté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 smi
van á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 deployment
a , 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
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ő.
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 asecrets
deploy
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-canary
utó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
Istio
aLinkerd
. A Kubernetes-jegyzékfeladat az SMI-objektumokatTrafficSplit
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 tagVariable1
tagVariable2
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:
- A és
percentage: $(someValue)
a paraméterrelstrategy: canary
megadott üzembehelyezési művelet. - Manuális beavatkozási feladat, amellyel szüneteltetheti a folyamatot, és összehasonlíthatja az alapváltozatot a kanári-változattal.
- 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: canary
a 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: reject
strategy: 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 |