HelmDeploy@0 – Helm-diagramok v0-feladatának csomagolása és üzembe helyezése

Ezzel a feladattal üzembe helyezhet, konfigurálhat vagy frissíthet egy Kubernetes-fürtöt az Azure Container Service-ben helm-parancsok futtatásával.

Szinopszis

# Package and deploy Helm charts v0
# Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands.
- task: HelmDeploy@0
  inputs:
  # Kubernetes Cluster
    #connectionType: 'Azure Resource Manager' # 'Azure Resource Manager' | 'Kubernetes Service Connection' | 'None'. Required when command != logout && command != package && command != save. Connection Type. Default: Azure Resource Manager.
    #azureSubscription: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Kubernetes cluster. 
    #useClusterAdmin: false # boolean. Optional. Use when connectionType = Azure Resource Manager && command != logout && command != package && command != save. Use cluster admin credentials. Default: false.
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection && command != logout && command != package && command != save. Kubernetes Service Connection. 
    #namespace: # string. Optional. Use when command != logout && command != package && command != save. Namespace. 
  # Azure Container Registry
    #azureSubscriptionForACR: # string. Alias: azureSubscriptionEndpointForACR. Required when command == save. Azure subscription for Container Registry. 
    #azureResourceGroupForACR: # string. Required when command == save. Resource group. 
    #azureContainerRegistry: # string. Required when command == save. Azure Container Registry. 
  # Commands
    command: 'ls' # 'create' | 'delete' | 'expose' | 'get' | 'init' | 'install' | 'login' | 'logout' | 'ls' | 'package' | 'rollback' | 'save' | 'upgrade' | 'uninstall'. Required. Command. Default: ls.
    #chartType: 'Name' # 'Name' | 'FilePath'. Required when command == install || command == upgrade. Chart Type. Default: Name.
    chartName: # string. Required when chartType == Name. Chart Name. 
    #chartPath: # string. Required when chartType == FilePath || command == package. Chart Path. 
    #chartVersion: # string. Alias: version. Optional. Use when command == package || command == install || command == upgrade. Version. 
    #releaseName: # string. Optional. Use when command == install || command == upgrade. Release Name. 
    #overrideValues: # string. Optional. Use when command == install || command == upgrade. Set Values. 
    #valueFile: # string. Optional. Use when command == install || command == upgrade. Value File. 
    #destination: '$(Build.ArtifactStagingDirectory)' # string. Optional. Use when command == package. Destination. Default: $(Build.ArtifactStagingDirectory).
    #canaryimage: false # boolean. Optional. Use when command == init. Use canary image version. Default: false.
    #upgradetiller: true # boolean. Optional. Use when command == init. Upgrade Tiller. Default: true.
    #updatedependency: false # boolean. Optional. Use when command == install || command == package. Update Dependency. Default: false.
    #save: true # boolean. Optional. Use when command == package. Save. Default: true.
    #install: true # boolean. Optional. Use when command == upgrade. Install if release not present. Default: true.
    #recreate: false # boolean. Optional. Use when command == upgrade. Recreate Pods. Default: false.
    #resetValues: false # boolean. Optional. Use when command == upgrade. Reset Values. Default: false.
    #force: false # boolean. Optional. Use when command == upgrade. Force. Default: false.
    #waitForExecution: true # boolean. Optional. Use when command == init || command == install || command == upgrade. Wait. Default: true.
    #arguments: # string. Optional. Use when command != login && command != logout. Arguments. 
    #chartNameForACR: # string. Required when command == save. Chart Name For Azure Container Registry. 
    #chartPathForACR: # string. Required when command == save. Chart Path for Azure Container Registry. 
  # TLS
    #enableTls: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Enable TLS. Default: false.
    #caCert: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. CA certificate. 
    #certificate: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Certificate. 
    #privatekey: # string. Required when enableTls == true && command != login && command != logout && command != package && command != save. Key. 
  # Advanced
    #tillernamespace: # string. Optional. Use when command != login && command != logout && command != package && command != save. Tiller namespace. 
    #failOnStderr: false # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Fail on Standard Error. Default: false.
    #publishPipelineMetadata: true # boolean. Optional. Use when command != login && command != logout && command != package && command != save. Publish pipeline metadata. Default: true.

Bemenetek

connectionType - kapcsolattípus
string. command != logout && command != package && command != saveesetén kötelező. Engedélyezett értékek: Azure Resource Manager, Kubernetes Service Connection, None. Alapértelmezett érték: Azure Resource Manager.

Megadja a kapcsolat típusát.

  • Kubernetes Service Connection – Adja meg Kubernetes Service Connection, hogy bármely Kubernetes-fürthöz csatlakozni szeretne kubeconfig vagy az Azure-szolgáltatásfiók használatával. Lehetővé teszi KubeConfig-fájl megadását, szolgáltatásfiók megadását vagy AKS-példány importálását az Azure-előfizetés lehetőséggel. Az AKS-példány Azure-előfizetés beállítással történő importálásához Kubernetes-fürthozzáférés szükséges a Szolgáltatáskapcsolat konfigurációs ideje alatt.
  • Azure Resource Manager – Adja meg az Azure Kubernetes-szolgáltatáshoz való csatlakozáshoz szükséges Azure Resource Manager az Azure Service Connection használatával. Nem fér hozzá a Kubernetes-fürthöz a Szolgáltatáskapcsolat konfigurációs ideje alatt.
  • None – Helyileg tárolt, előre létrehozott Kubernetes-konfiguráció használata.

További információ: Szolgáltatáskapcsolat az alábbi Megjegyzések szakaszban.


Azure-előfizetés azureSubscription -
Bemeneti alias: azureSubscriptionEndpoint. string. connectionType = Azure Resource Manager && command != logout && command != package && command != saveesetén kötelező.

Az Azure Service Connection neve. Adja meg a tárolóregisztrációs adatbázist tartalmazó Azure-előfizetést.


azureResourceGroup - erőforráscsoport
string. connectionType = Azure Resource Manager && command != logout && command != package && command != saveesetén kötelező.

Az előfizetésen belüli erőforráscsoport neve. Adjon meg egy Azure-erőforráscsoportot.


kubernetesCluster - Kubernetes-fürt
string. connectionType = Azure Resource Manager && command != logout && command != package && command != saveesetén kötelező.

Az AKS-fürt neve. Adjon meg egy Felügyelt Azure-fürtöt.


useClusterAdmin - Fürt rendszergazdai hitelesítő adatainak használata
boolean. Opcionális. Használja a connectionType = Azure Resource Manager && command != logout && command != package && command != save. Alapértelmezett érték: false.

A fürt rendszergazdai hitelesítő adatait használja az alapértelmezett fürtfelhasználói hitelesítő adatok helyett.


kubernetesServiceConnection - Kubernetes szolgáltatáskapcsolat
Bemeneti alias: kubernetesServiceEndpoint. string. connectionType = Kubernetes Service Connection && command != logout && command != package && command != saveesetén kötelező.

Kubernetes-szolgáltatáskapcsolatot ad meg.


namespace - névtér
string. Opcionális. Használja a command != logout && command != package && command != save.

Az a névtér, amelyen a kubectl parancsokat futtatja. Ha nincs megadva, a tevékenység az alapértelmezett névteret használja. Adja meg a használni kívánt Kubernetes-névteret. A Tiller névteret a tevékenység speciális szakaszában vagy a --tiller-namespace lehetőség argumentumként való átadásával adhatja meg.


azureSubscriptionForACR - Azure-előfizetés a Container Registry
Bemeneti alias: azureSubscriptionEndpointForACR. string. command == saveesetén kötelező.

Az Azure Container Registryt tartalmazó Azure-előfizetést adja meg.


azureResourceGroupForACR - erőforráscsoport
string. command == saveesetén kötelező.

A tárolóregisztrációs adatbázissal rendelkező Azure-erőforráscsoportot adja meg.


azureContainerRegistry - Azure Container Registry-
string. command == saveesetén kötelező.

Megadja a Helm-diagramok leküldéséhez használandó Azure Container Registryt.


command - parancs
string. Szükséges. Engedélyezett értékek: create, delete, expose, get, init, install, login, logout, ls, package, rollback, save, upgrade, uninstall. Alapértelmezett érték: ls.

Helm-parancsot ad meg.


chartType - diagramtípus
string. command == install || command == upgradeesetén kötelező. Engedélyezett értékek: Name, FilePath (Fájl elérési útja). Alapértelmezett érték: Name.

A diagramadatok megadásának módját adja meg. Megadhatja a diagram nevét, illetve a diagram mappa/fájl elérési útját.


chartName - diagramnév
string. chartType == Nameesetén kötelező.

A telepítendő diagramhivatkozás neve. Ez lehet EGY URL-cím vagy egy diagram neve. Ha például a diagram neve stable/mysql, a tevékenység helm install stable/mysqlfut.


chartPath - diagram elérési útja
string. chartType == FilePath || command == packageesetén kötelező.

A telepítendő diagram elérési útja. Ez lehet egy csomagolt diagram elérési útja, vagy egy kicsomagolt diagramkönyvtár elérési útja. Ha például ./redisad meg, a feladat helm install ./redisfut. Ha összetevőként közzétett diagramot használ, akkor az elérési út $(System.DefaultWorkingDirectory)/ARTIFACT-NAME/Charts/CHART-NAME.


chartVersion - verzió
Bemeneti alias: version. string. Opcionális. Használja a command == package || command == install || command == upgrade.

Megadja a telepíteni kívánt diagramverziót. Ha nem adja meg a diagramverziót, a feladat telepíti a legújabb verziót. Állítsa a diagramon szereplő verziót erre a szemver verzióra.


releaseName - kiadási név
string. Opcionális. Használja a command == install || command == upgrade.

A kiadás neve. Ha nem adja meg a kiadás nevét, a feladat automatikusan létrehoz egyet. A releaseName bemenet csak install és upgrade parancsokra érvényes.


overrideValues - Értékek beállítása
string. Opcionális. Használja a command == install || command == upgrade.

A parancssor értékeit adja meg. Ez a bemenet több vagy különálló értéket is megadhat vesszővel: key1=val1,key2=val2.

Több értéket is megadhat, ha azokat egy új vonallal elválasztja, az alábbiak szerint:

  • key1=val1
  • key2=val2

Ha új sorokat tartalmazó értékkel rendelkezik, használja a valueFile lehetőséget. Ellenkező esetben a feladat elválasztóként kezeli az új sort. A feladat ezeket a beállított értékeket használva hozza létre a Helm parancsot. Az értéket például a következőhöz hasonló paranccsal állíthatja be: helm install --set key1=val1 ./redis.


valueFile - Értékfájl
string. Opcionális. Használja a command == install || command == upgrade.

YaML-fájlban vagy URL-címen megadott értékeket ad meg. Például a myvalues.yaml eredményének megadása helm install --values=myvals.yaml.


destination - Cél
string. Opcionális. Használja a command == package. Alapértelmezett érték: $(Build.ArtifactStagingDirectory).

YaML-fájlban vagy URL-címen megadott értékeket ad meg.


canaryimage - Canary-rendszerkép verziójának használata.
boolean. Opcionális. Használja a command == init. Alapértelmezett érték: false.

A canary Tiller rendszerképét adja meg. Használja a Tiller legújabb előzetes verzióját.


upgradetiller - Tiller frissítése
boolean. Opcionális. Használja a command == init. Alapértelmezett érték: true.

Ha true, ez a bemenet frissíti a Tillert, ha a Tiller már telepítve van.


updatedependency - Függőségi frissítése
boolean. Opcionális. Használja a command == install || command == package. Alapértelmezett érték: false.

Ha true, ez a bemenet frissíti a Helm-függőség frissítését a diagram telepítése előtt. A requirements.yaml függőségeit a csomagolás előtt frissíti a charts/ könyvtárba.


save - Mentés
boolean. Opcionális. Használja a command == package. Alapértelmezett érték: true.

Menti a csomagolt diagramot a helyi diagramtárházba true​beállítás esetén.


install - Telepítés, ha a kiadás nem jelenik meg.
boolean. Opcionális. Használja a command == upgrade. Alapértelmezett érték: true.

Ha egy ilyen nevű kiadás még nem létezik, ez a bemenet futtat egy telepítést.


recreate - Podok újbóli létrehozása.
boolean. Opcionális. Használja a command == upgrade. Alapértelmezett érték: false.

Szükség esetén elvégzi az erőforrás podok újraindítását.


resetValues - Alaphelyzetbe állítási értékek.
boolean. Opcionális. Használja a command == upgrade. Alapértelmezett érték: false.

Alaphelyzetbe állítja az értékeket a diagramba épített értékekre.


force - Kényszerítés
boolean. Opcionális. Használja a command == upgrade. Alapértelmezett érték: false.

Szükség esetén kényszeríti az erőforrás frissítését egy törlési vagy újbóli műveleten keresztül.


waitForExecution - Várakozási
boolean. Opcionális. Használja a command == init || command == install || command == upgrade. Alapértelmezett érték: true.

Letiltja a műveletet, amíg a parancs végrehajtása befejeződik.


arguments - argumentumok
string. Opcionális. Használja a command != login && command != logout.

A Helm parancs beállításai.


enableTls - TLS- engedélyezése
boolean. Opcionális. Használja a command != login && command != logout && command != package && command != save. Alapértelmezett érték: false.

Engedélyezi az SSL használatát Helm és Tiller között.


caCert - hitelesítésszolgáltatói tanúsítvány
string. enableTls == true && command != login && command != logout && command != package && command != saveesetén kötelező.

A Tiller- és Helm-ügyfél tanúsítványának kiállításához használt hitelesítésszolgáltatói tanúsítvány.


certificate - tanúsítvány
string. enableTls == true && command != login && command != logout && command != package && command != saveesetén kötelező.

Adja meg a Tiller-tanúsítványt vagy a Helm-ügyféltanúsítványt.


privatekey - kulcs
string. enableTls == true && command != login && command != logout && command != package && command != saveesetén kötelező.

Adja meg a Tiller vagy a Helm ügyfélkulcsot.


tillernamespace - Tiller-névtér
string. Opcionális. Használja a command != login && command != logout && command != package && command != save.

Adja meg Tiller Kubernetes-névterét.


failOnStderr - Normál hiba
boolean. Opcionális. Használja a command != login && command != logout && command != package && command != save. Alapértelmezett érték: false.

Ha ez a bemenet true, ez a feladat meghiúsul, ha a hibafolyamatba bármilyen hiba van beírva, vagy ha az adatok a Standard hibafolyamba vannak írva. Ellenkező esetben a feladat a kilépési kódra támaszkodik a hiba megállapításához.


publishPipelineMetadata - Folyamat metaadatainak közzététele
boolean. Opcionális. Használja a command != login && command != logout && command != package && command != save. Alapértelmezett érték: true.

Ha ez a bemenet true, a feladat összegyűjti és közzéteszi az üzembehelyezési metaadatokat.


chartNameForACR - Azure Container Registry- diagramneve
string. command == saveesetén kötelező.

A diagram neve az Azure Container Registryben.


chartPathForACR - Azure Container Registry- diagramútvonala
string. command == saveesetén kötelező.

Az Azure Container Registry diagramkönyvtárának elérési útja.


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ők é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.

helmExitCode
A megadott Helm-parancs végrehajtásából kibocsátott kilépési kód.

helmOutput
A megadott Helm-parancs végrehajtásából kibocsátott kimenet.

Megjegyzések

A HelmDeploy@0 használatával üzembe helyezhet, konfigurálhat vagy frissíthet Egy Kubernetes-fürtöt az Azure Container Service-ben Helm-parancsok futtatásával. A Helm egy olyan eszköz, amely leegyszerűsíti a Kubernetes-alkalmazások üzembe helyezését és kezelését a diagramok nevű csomagolási formátum használatával.

A Helm használatával meghatározhatja, verziószámozhatja, megoszthatja, telepítheti és frissítheti még a legösszetettebb Kubernetes-alkalmazást is.

  • A Helm segítségével több Kubernetes-jegyzékfájlt (yaml) kombinálhat, például a szolgáltatást, az üzembe helyezéseket, a konfigurációtérképeket és egyebeket egyetlen, Helm-diagramoknak nevezett egységben. Nem kell tokenizációt vagy templatáló eszközt kitalálnia vagy használnia.
  • A Helm-diagramok segítségével kezelheti az alkalmazásfüggőségeket, üzembe helyezheti és egységként visszaállíthatja azokat. Emellett könnyen létrehozható, verziószámozhat, közzétehet és megosztható más partnercsapatokkal.

Az Azure Pipelines beépített támogatást nyújt a Helm-diagramokhoz:

  • A Helm-eszköz telepítőfeladata a Helm megfelelő verziójának az ügynökökre való telepítéséhez használható.
  • A Helm-csomag és az üzembe helyezési feladat használható az alkalmazás csomagolására és kubernetes-fürtön való üzembe helyezésére. A feladat segítségével telepítheti vagy frissítheti a Tillert egy Kubernetes-névtérre, biztonságosan csatlakozhat Tillerhez tLS-en keresztül diagramok üzembe helyezéséhez, vagy futtathat bármilyen Helm-parancsot, például lint.
  • A Helm-feladat egy Azure-szolgáltatáskapcsolat használatával támogatja az Azure Kubernetes-szolgáltatáshoz való csatlakozást. Bármely Kubernetes-fürthöz csatlakozhat kubeconfig vagy szolgáltatásfiók használatával.
  • A Helm-üzemelő példányok a Kubectl feladattal kiegészíthetők; például létrehozás/frissítés, imagepullsecret és mások.

Szolgáltatáskapcsolat

HelmDeploy@0 két szolgáltatáskapcsolattípussal működik: Azure Resource Manager és Kubernetes Service Connection. A két kapcsolattípus konfigurálásával kapcsolatos példákért lásd példákat.

Megjegyzés

Nincs szükség szolgáltatáskapcsolatra, ha egy Kubernetes-fürtre hivatkozó környezeti erőforrás már meg van adva a folyamat fázisában.

Kubernetes-szolgáltatáskapcsolati szempontok az AKS elérésekor

Kubernetes-szolgáltatáskapcsolatot az alábbi lehetőségek bármelyikével hozhat létre.

  • 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 beállítás kiválasztásakor a Kubernetesnek elérhetőnek kell lennie az Azure DevOps számára a szolgáltatáskapcsolat konfigurációs ideje alatt. Előfordulhat, hogy a szolgáltatáskapcsolat nem hozható létre, például privát fürtöt, vagy a fürt helyi fiók le van 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őn.

Képernyőkép a 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ú jogkivonatok már nem jönnek létre alapértelmezés szerint. A Kubernetes azt javasolja, hogy ne használjuk a hosszú élettartamú jogkivonatokat. Ennek eredményeképpen a Azure-előfizetési beállítással 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 azt is eredményezi, hogy a befagyasztott A névterek betöltése párbeszédpanelen.

Az Azure Resource Manager szolgáltatáskapcsolat használata az AKS eléréséhez

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és a folyamat futtatókörnyezetére halasztható, amelynek az alábbi előnyei vannak:

  • A (privát) AKS-fürthöz való hozzáférés egy saját üzemeltetésű vagy méretezési csoport ügynökéből, a fürt felé irányuló látóvonallal végezhető el.
  • A rendszer létrehoz egy jogkivonatot minden olyan feladathoz, amely Azure Resource Manager-szolgáltatáskapcsolatot használ. Ez biztosítja, hogy rövid élettartamú jogkivonattal csatlakozzon a Kuberneteshez, amely 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 az Azure-előfizetés lehetőséggel használja. 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 az Azure-szolgáltatás kapcsolattípusát használja, és ne használjon hosszú élettartamú jogkivonatokat Kubernetes-útmutató.

AKS-t használok, és nem szeretnék semmit módosítani, használhatom továbbra is a 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ő. Ne feledje azonban, hogy ez a megközelítés nem Kubernetes-útmutató.

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

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ármilyen 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, cselekednem kell?

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, ismernie kell a hosszú élettartamú jogkivonatok Kubernetes-útmutatót.

Létrehozok egy Kubernetes-környezetet, és nincs lehetőségem szolgáltatáskapcsolatok használatára

Ha nem fér hozzá az AKS-hez a környezet létrehozása során, üres környezetet használhat, é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 folyamat nem működik. Ezek a frissítések megoldják ezt?

Az AAD RBAC engedélyezésekor a Kubernetes elérése nem kapcsolódik a jogkivonatok létrehozásához. Az interaktív kérések megakadályozása érdekében egy későbbi frissítésben támogatni fogjuk kubelogin.

Parancsértékek

A parancs bemenete a következő helm-parancsok egyikét fogadja: create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade. A példákat a Példák szakaszban találja.

Az egyes parancsbemenetek feladatbemenetek készletére képeznek le. A tevékenységbemenethez leképezett parancsok a YAML szintaxisblokkjában és a tevékenységbemenetek táblában vannak kijelölve

Hibaelhárítás

A HelmDeploy-feladat "ismeretlen jelző: --wait" hibát jelez, miközben a Helm 3.0.2-es verzióján futtatja a "helm init --wait --client-only" parancsot.

A Helm 2 és a Helm 3 között van néhány kompatibilitástörő változás. Ezek egyike magában foglalja a tiller eltávolítását, ezért helm init parancs már nem támogatott. Parancs eltávolítása: init a Helm 3.0+ verziók használatakor.

A Helm 3 használatakor, ha a System.debug értéke igaz, és a Helm-frissítés a használt parancs, a folyamat akkor is meghiúsul, ha a frissítés sikeres volt.

Ez a Helm 3 ismert problémája, mivel naplókat ír a stderrbe. A Helm üzembe helyezési feladat sikertelenként van megjelölve, ha az stderr naplói vagy a kilépési kód nem nulla. Állítsa be a feladatbemeneti failOnStderr: false értéket az stderrre nyomtatott naplók figyelmen kívül hagyásához.

Példák

Azure Erőforrás-kezelő

Ez a YAML-példa bemutatja, hogyan hivatkozik az Azure Resource Manager a Kubernetes-fürtre. Ez a helm-parancsok egyikével és a parancshoz szükséges megfelelő értékekkel használható:

variables:
  azureSubscriptionEndpoint: Contoso
  azureContainerRegistry: contoso.azurecr.io
  azureResourceGroup: Contoso
  kubernetesCluster: Contoso

- task: HelmDeploy@0
  displayName: Helm deploy
  inputs:
    connectionType: Azure Resource Manager
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)

Kubernetes-szolgáltatáskapcsolat

Ez a YAML-példa bemutatja, hogyan használja a Kubernetes-szolgáltatáskapcsolatot a Kubernetes-fürtre való hivatkozáshoz. Ez a helm-parancsok egyikével és a parancshoz szükséges megfelelő értékekkel használható:

- task: HelmDeploy@0
  displayName: Helm deploy
  inputs:
    connectionType: Kubernetes Service Connection
    kubernetesServiceEndpoint: Contoso

Parancsok

A parancs bemenete a következő helm-parancsok egyikét fogadja: create/delete/expose/get/init/install/login/logout/ls/package/rollback/upgrade.

Ez a YAML-példa az ls parancsot mutatja be:

- task: HelmDeploy@0
  displayName: Helm list
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: ls
    arguments: --all

init parancs

Ez a YAML-példa a init parancsot mutatja be:

- task: HelmDeploy@0
  displayName: Helm init
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: init
    upgradetiller: true
    waitForExecution: true
    arguments: --client-only

telepítési parancs

Ez a YAML-példa a telepítési parancsot mutatja be:

- task: HelmDeploy@0
  displayName: Helm install
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: install
    chartType: FilePath
    chartPath: Application/charts/sampleapp

csomagparancs

Ez a YAML-példa a csomag parancsot mutatja be:

- task: HelmDeploy@0
  displayName: Helm package
  inputs:
    command: package
    chartPath: Application/charts/sampleapp
    destination: $(Build.ArtifactStagingDirectory)

frissítési parancs

Ez a YAML-példa a frissítési parancsot mutatja be:

- task: HelmDeploy@0
  displayName: Helm upgrade
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: upgrade
    chartType: filepath
    chartPath: $(Build.ArtifactStagingDirectory)/sampleapp-v0.2.0.tgz
    releaseName: azuredevopsdemo
    install: true
    waitForExecution: false

Mentés parancs

Ez a YAML-példa bemutatja a mentési parancsot:

- task: HelmDeploy@0
  displayName: Helm save
  inputs:
    command: save
    chartNameForACR: mycontainerregistry.azurecr.io/helm/hello-world:v1
    chartPathForACR: Application/charts/sampleapp
    azureSubscriptionEndpointForACR: $(azureSubscriptionEndpointForACR)
    azureResourceGroupForACR: $(azureResourceGroupForACR)
    azureContainerRegistry: $(azureContainerRegistry)

Helm-diagramok csomagolása és aláírása

Ebben a szakaszban megtudhatja, hogyan csomagolhat és írhat alá Helm-diagramokat egy folyamatban.

Privát-nyilvános kulcspár létrehozása a helm-diagram gpg használatával történő aláírásához

  1. Töltse le GPG.

  2. Indítsa el a parancssort rendszergazdai módban. Futtassa az alábbi parancsot egy privát-nyilvános kulcspár létrehozásához a helm-diagram gpg használatával való aláírásához. A kulcs létrehozásakor a rendszer kérni fogja a felhasználónevet és az e-mail-címet. A "név e-mail-cím" később a létrehozott privát-nyilvános kulcspár elnevezésére szolgál.

    gpg --full-generate-key
    

    Kulcs létrehozása

  3. A rendszer kérni fogja a jelszó megadását. Adja meg az értéket, és kattintson az OK gombra.

    A jelszó megadását bemutató képernyőkép.

  4. A kulcs létrehozása után az alábbi paranccsal megtekintheti a titkos és a nyilvános kulcsokat tartalmazó kulcsok listáját.

    • A titkos kulcsok listájának megtekintése

      gpg --list-secret-keys
      

      titkos kulcsok

    • A nyilvános kulcsok listájának megtekintése

      gpg --list-keys
      

      nyilvános kulcsok

  5. A privát és nyilvános kulcsokat 2 különböző fájlban tárolhatja a gpg kiterjesztéssel, az alábbiak szerint.

    • Titkos kulcs esetén
    gpg --export-secret-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/privatekeys.gpg
    

    A privatekeys.gpg fájl exportálva lesz a fent említett elérési útra.

    • Nyilvános kulcs esetén
    gpg --export-key AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00 contoso@microsoft.com > C:/somepath/publickey.gpg
    

    A publickey.gpg fájl exportálva lesz a fent említett elérési útra.

Az Azure DevOpsban mentse a privatekey.gpg fájlt a tárban biztonságos fájlok szakaszban.

Példa

pool:
  name: Hosted Ubuntu 1604

variables:
  # The below variable should be secure
  HelmKeyPassphrase: contoso@123
  keyName: contoso contoso@microsoft.com
  azureSubscriptionEndpoint: contoso
  azureResourceGroup: contoso
  kubernetesCluster: contoso

steps:
- task: DownloadSecureFile@1
  displayName: Download Secure file
  inputs:
    secureFile: privatekey.gpg
  name: privateKeyRing

- task: HelmInstaller@0
  displayName: Install Helm 2.12.0
  inputs:
    helmVersion: 2.12.0

- task: HelmDeploy@0
  displayName: helm init
  inputs:
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: init
    arguments: --client-only

- task: HelmDeploy@0
  displayName: helm package
  inputs:
    command: package
    chartPath: Application/charts/sampleapp
    arguments: --sign --key "$(keyName)" --keyring $(privateKeyRing.secureFilePath)
  env:
    HelmKeyPassphrase: $(HelmKeyPassphrase)

Követelmények

Követelmény Leírás
Folyamattípusok YAML, klasszikus build, klasszikus kiadás
Futtatás bekapcsolva Ügynök, DeploymentGroup
Követelmények Egyik sem
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ármely
Változók beállítása Bármely
Ügynök verziója Minden támogatott ügynökverzió.
Tevékenységkategória Üzembe helyezés