Delen via


AzureFunctionOnKubernetes@1 - Azure-functie op Kubernetes v1-taak

Implementeer de Azure-functie in een Kubernetes-cluster.

Syntax

# Azure Function on Kubernetes v1
# Deploy Azure function to Kubernetes cluster.
- task: AzureFunctionOnKubernetes@1
  inputs:
  # Service Connections
    connectionType: 'Kubernetes Service Connection' # 'Azure Resource Manager' | 'Kubernetes Service Connection'. Required. Service connection type. Default: Kubernetes Service Connection.
    dockerRegistryServiceConnection: # string. Required. Docker registry service connection. 
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection. Kubernetes service connection. 
    #azureSubscriptionConnection: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager. Kubernetes cluster. 
  # Commands
    #namespace: # string. Kubernetes namespace. 
    #secretName: # string. Secret Name. 
    #dockerHubNamespace: # string. Docker Hub namespace. 
    appName: # string. Required. Application Name. 
    #functionRootDirectory: # string. Function root directory. 
    #waitForStability: true # boolean. Wait for stability. Default: true.
    #arguments: # string. Arguments.

Invoerwaarden

connectionType - Type serviceverbinding
string. Vereist. Toegestane waarden: Azure Resource Manager, Kubernetes Service Connection. Standaardwaarde: Kubernetes Service Connection.

Selecteer een verbindingstype voor de Kubernetes-service.

  • Kubernetes Service Connection - Hiermee kunt u een KubeConfig-bestand opgeven, een serviceaccount opgeven of een AKS-exemplaar importeren met de optie Azure-abonnement . Voor het importeren van een AKS-exemplaar met de optie Azure-abonnement is kubernetes-clustertoegang vereist op de configuratietijd van de serviceverbinding.
  • Azure Resource Manager - Hiermee kunt u een AKS-exemplaar selecteren. Heeft geen toegang tot het Kubernetes-cluster tijdens de configuratietijd van de serviceverbinding.

Zie Opmerkingen voor meer informatie.


dockerRegistryServiceConnection - Verbinding met docker-registerservice
string. Vereist.

Selecteer een Docker-registerserviceverbinding.


kubernetesServiceConnection - Kubernetes-serviceverbinding
Invoeralias: kubernetesServiceEndpoint. string. Vereist wanneer connectionType = Kubernetes Service Connection.

Selecteer een Kubernetes-serviceverbinding.


azureSubscriptionConnection - Azure-abonnement
Invoeralias: azureSubscriptionEndpoint. string. Vereist wanneer connectionType = Azure Resource Manager.

Selecteer het Azure Resource Manager-abonnement dat Azure Container Registry bevat. Opmerking: als u een nieuwe serviceverbinding wilt configureren, selecteert u het Azure-abonnement in de lijst en klikt u op Autoriseren. Als uw abonnement niet wordt vermeld of als u een bestaande service-principal wilt gebruiken, kunt u een Azure-serviceverbinding instellen met de knop Toevoegen of Beheren.


azureResourceGroup - Resourcegroep
string. Vereist wanneer connectionType = Azure Resource Manager.

Selecteer een Azure-resourcegroep.


kubernetesCluster - Kubernetes-cluster
string. Vereist wanneer connectionType = Azure Resource Manager.

Selecteer een beheerd Azure-cluster.


namespace - Kubernetes-naamruimte
string.

Kubernetes-naamruimte.


secretName - Geheime naam
string.

Kubernetes-geheim met functieconfiguratiegegevens (bijvoorbeeld AzureWebJobsStorage: Azure storage connection string).


dockerHubNamespace - Docker Hub naamruimte
string.

Docker Hub naamruimte. Vereist voor privé-Docker Hub opslagplaats.


appName - Toepassingsnaam
string. Vereist.

Toepassingsnaam. De Kubernetes-objecten die zijn gemaakt, gebruiken deze naam. Dit moet de Kubernetes-naamconventies voor resourcenamen volgen.


functionRootDirectory - Functiehoofdmap
string.

Functiehoofdmap. Moet host.json bevatten. Docker-build en -push worden uitgevoerd vanuit deze map.


waitForStability - Wachten op stabiliteit
boolean. Standaardwaarde: true.

Wacht tot de Kubernetes-objecten de gewenste status hebben bereikt.


arguments - Argumenten
string.

Geef argumenten door aan de opdracht. Bijvoorbeeld:
--no-docker --service-type NodePort.


Opties voor taakbeheer

Alle taken hebben besturingsopties naast hun taakinvoer. Zie Opties voor besturingselementen en algemene taakeigenschappen voor meer informatie.

Uitvoervariabelen

Geen.

Opmerkingen

Aandachtspunten voor kubernetes-serviceverbindingen bij het openen van AKS

U kunt een Kubernetes-serviceverbinding maken met een van de volgende opties.

  • KubeConfig
  • Serviceaccount
  • Azure-abonnement

Schermopname van het kiezen van een verificatiemethode voor een Kubernetes-serviceverbinding.

Wanneer u de optie Azure-abonnement selecteert, moet Kubernetes tijdens de configuratietijd van de serviceverbinding toegankelijk zijn voor Azure DevOps. Er kunnen verschillende redenen zijn waarom een serviceverbinding niet kan worden gemaakt, bijvoorbeeld omdat u een privécluster hebt gemaakt of dat lokale accounts voor het cluster zijn uitgeschakeld. In deze gevallen kan Azure DevOps geen verbinding maken met uw cluster tijdens de configuratietijd van de serviceverbinding en ziet u een vastgelopen scherm Naamruimten laden .

Schermopname van het kiezen van een dialoogvenster voor verbindingsverificatie van de Kubernetes-service die vastloopt bij het laden van naamruimten.

Vanaf Kubernetes 1.24 worden tokens met een lange levensduur niet meer standaard gemaakt. Kubernetes raadt aan geen tokens met een lange levensduur te gebruiken. Als gevolg hiervan hebben taken die gebruikmaken van een Kubernetes-serviceverbinding die is gemaakt met de optie Azure-abonnement geen toegang tot het permanente token dat is vereist voor verificatie en hebben ze geen toegang tot uw Kubernetes-cluster. Dit resulteert ook in het geblokkeerde dialoogvenster Naamruimten laden .

Azure Resource Manager Service Connection gebruiken om toegang te krijgen tot AKS

Voor AKS-klanten biedt het verbindingstype Azure Resource Manager-service de beste methode om verbinding te maken met een privécluster of een cluster waarvoor lokale accounts zijn uitgeschakeld. Deze methode is niet afhankelijk van de clusterconnectiviteit op het moment dat u een serviceverbinding maakt. Toegang tot AKS wordt uitgesteld tot pijplijnruntime, wat de volgende voordelen heeft:

  • Toegang tot een (privé) AKS-cluster kan worden uitgevoerd vanuit een zelf-hostende of schaalsetagent met zichtlijn naar het cluster.
  • Er wordt een token gemaakt voor elke taak die gebruikmaakt van een Azure Resource Manager serviceverbinding. Dit zorgt ervoor dat u verbinding maakt met Kubernetes met een token met een korte levensduur. Dit is de Kubernetes-aanbeveling.
  • AKS is toegankelijk, zelfs wanneer lokale accounts zijn uitgeschakeld.

Veelgestelde vragen over serviceverbindingen

Ik krijg het volgende foutbericht: Kan geen geheim vinden dat is gekoppeld aan het serviceaccount. Wat gebeurt er?

U gebruikt de kubernetes-serviceverbinding met de optie Azure-abonnement. Deze methode wordt bijgewerkt om tokens met een lange levensduur te maken. Dit is naar verwachting halverwege mei beschikbaar. Het wordt echter aanbevolen om te beginnen met het azure-serviceverbindingstype en niet om tokens met een lange levensduur te gebruiken volgens de Richtlijnen van Kubernetes.

Ik gebruik AKS en wil niets wijzigen. Kan ik taken blijven gebruiken met de Kubernetes-serviceverbinding?

Deze methode wordt bijgewerkt om tokens met een lange levensduur te maken. Dit is naar verwachting halverwege mei beschikbaar. Houd er echter rekening mee dat deze benadering in strijd is met kubernetes-richtlijnen.

Ik gebruik de Kubernetes-taken en kubernetes-serviceverbinding, maar niet AKS. Moet ik me zorgen maken?

Uw taken blijven werken zoals voorheen.

Wordt het verbindingstype van de Kubernetes-service verwijderd?

Onze Kubernetes-taken werken met elk Kubernetes-cluster, ongeacht waar ze worden uitgevoerd. De Kubernetes-serviceverbinding blijft bestaan.

Ik ben een AKS-klant en alles loopt goed, moet ik actie ondernemen?

U hoeft niets te wijzigen. Als u de Kubernetes-serviceverbinding en het geselecteerde Azure-abonnement gebruikt tijdens het maken, moet u rekening houden met de Kubernetes-richtlijnen voor het gebruik van tokens met een lange levensduur.

Ik maak een Kubernetes-omgeving en ik heb geen optie om serviceverbindingen te gebruiken

Als u geen toegang hebt tot uw AKS tijdens het maken van de omgeving, kunt u een lege omgeving gebruiken en de connectionType invoer instellen op een Azure Resource Manager-serviceverbinding.

Ik heb AKS geconfigureerd met Azure Active Directory RBAC en mijn pijplijn werkt niet. Lossen deze updates dit op?

Toegang tot Kubernetes wanneer AAD RBAC is ingeschakeld, is niet gerelateerd aan het maken van tokens. Om een interactieve prompt te voorkomen, ondersteunen we kubelogin in een toekomstige update.

Vereisten

Vereiste Beschrijving
Pijplijntypen YAML, klassieke build, klassieke release
Wordt uitgevoerd op Agent, DeploymentGroup
Eisen Geen
Functies Deze taak voldoet niet aan eventuele vereisten voor volgende taken in de taak.
Opdrachtbeperkingen Alle
Instelbare variabelen Alle
Agentversie Alle ondersteunde agentversies.
Taakcategorie Implementeren