Freigeben über


AzureFunctionOnKubernetes@1: Azure Function in Kubernetes v1-Task

Bereitstellen der Azure-Funktion im 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.

Eingaben

connectionType - Dienstverbindungstyp
string. Erforderlich. Zulässige Werte: Azure Resource Manager, Kubernetes Service Connection. Standardwert. Kubernetes Service Connection.

Wählen Sie einen Kubernetes-Dienstverbindungstyp aus.

  • Kubernetes Service Connection– Ermöglicht es Ihnen, eine KubeConfig-Datei bereitzustellen, ein Dienstkonto anzugeben oder eine AKS-instance mit der Azure-Abonnementoption zu importieren. Für das Importieren einer AKS-instance mit der Azure-Abonnementoption ist der Zugriff auf den Kubernetes-Cluster zum Zeitpunkt der Dienstverbindungskonfiguration erforderlich.
  • Azure Resource Manager– Hiermit können Sie eine AKS-instance auswählen. Greift zum Zeitpunkt der Dienstverbindungskonfiguration nicht auf den Kubernetes-Cluster zu.

Weitere Informationen finden Sie unter Hinweise.


dockerRegistryServiceConnection - Docker-Registrierungsdienstverbindung
string. Erforderlich.

Wählen Sie eine Docker-Registrierungsdienstverbindung aus.


kubernetesServiceConnection - Kubernetes-Dienstverbindung
Eingabealias: kubernetesServiceEndpoint. string. Erforderlich, wenn connectionType = Kubernetes Service Connection.

Wählen Sie eine Kubernetes-Dienstverbindung aus.


azureSubscriptionConnection - Azure-Abonnement
Eingabealias: azureSubscriptionEndpoint. string. Erforderlich, wenn connectionType = Azure Resource Manager.

Wählen Sie das Azure Resource Manager-Abonnement aus, das Azure Container Registry enthält. Hinweis: Wählen Sie zum Konfigurieren einer neuen Dienstverbindung das Azure-Abonnement aus der Liste aus, und klicken Sie auf "Autorisieren". Wenn Ihr Abonnement nicht aufgeführt ist oder Sie einen vorhandenen Dienstprinzipal verwenden möchten, können Sie eine Azure-Dienstverbindung über die Schaltfläche „Hinzufügen“ oder „Verwalten“ einrichten.


azureResourceGroup - Ressourcengruppe
string. Erforderlich, wenn connectionType = Azure Resource Manager.

Wählen Sie eine Azure-Ressourcengruppe aus.


kubernetesCluster - Kubernetes-Cluster
string. Erforderlich, wenn connectionType = Azure Resource Manager.

Wählen Sie einen verwalteten Azure-Cluster aus.


namespace - Kubernetes-Namespace
string.

Kubernetes-Namespace.


secretName - Geheimnisname
string.

Kubernetes-Geheimnis, das Funktionskonfigurationsdaten enthält (z. B. AzureWebJobsStorage: Azure storage connection string).


dockerHubNamespace - Docker Hub Namespace
string.

Docker Hub Namespace. Erforderlich für private Docker Hub Repository.


appName - Anwendungsname
string. Erforderlich.

Anwendungsname. Die erstellten Kubernetes-Objekte verwenden diesen Namen. Dies sollte den Kubernetes-Benennungskonventionen für Ressourcennamen entsprechen.


functionRootDirectory - Funktionsstammverzeichnis
string.

Funktionsstammverzeichnis. Sollte host.json enthalten. Docker-Build und -Push werden aus diesem Verzeichnis ausgeführt.


waitForStability - Warten auf Stabilität
boolean. Standardwert. true.

Warten Sie, bis die Kubernetes-Objekte den gewünschten Zustand erreichen.


arguments - Argumente
string.

Übergeben Sie Argumente an den Befehl. Beispiel:
--no-docker --service-type NodePort.


Optionen für die Vorgangskontrolle

Alle Vorgänge verfügen zusätzlich zu ihren Eingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerungsoptionen und allgemeine Aufgabeneigenschaften.

Ausgabevariablen

Keine.

Hinweise

Überlegungen zur Kubernetes Service-Verbindung beim Zugriff auf AKS

Sie können eine Kubernetes-Dienstverbindung mit einer der folgenden Optionen erstellen.

  • KubeConfig
  • Dienstkonto
  • Azure-Abonnement

Screenshot: Auswählen einer Kubernetes-Dienstverbindungsauthentifizierungsmethode

Wenn Sie die Option Azure-Abonnement auswählen, muss für Azure DevOps zum Zeitpunkt der Dienstverbindungskonfiguration auf Kubernetes zugegriffen werden können. Es kann verschiedene Gründe geben, warum eine Dienstverbindung nicht erstellt werden kann, z. B. haben Sie einen privaten Cluster erstellt oder lokale Konten für den Cluster deaktiviert. In diesen Fällen kann Azure DevOps zum Zeitpunkt der Dienstverbindungskonfiguration keine Verbindung mit Ihrem Cluster herstellen, und Es wird ein Bildschirm zum Laden von Namespaces angezeigt.

Screenshot: Auswählen eines Kubernetes-Dienst-Verbindungsauthentifizierungsdialogfelds, das beim Laden von Namespaces hängen bleibt

Ab Kubernetes 1.24 werden langlebige Token standardmäßig nicht mehr erstellt. Kubernetes empfiehlt, keine langlebigen Token zu verwenden. Daher haben Aufgaben, die eine Kubernetes-Dienstverbindung verwenden, die mit der Azure-Abonnementoption erstellt wurde, keinen Zugriff auf das dauerhafte Token, das für die Authentifizierung erforderlich ist, und können nicht auf Ihren Kubernetes-Cluster zugreifen. Dies führt auch zum gesperrten Dialogfeld Laden von Namespaces .

Verwenden der Azure Resource Manager-Dienstverbindung für den Zugriff auf AKS

Für AKS-Kunden bietet der Verbindungstyp Azure Resource Manager-Dienst die beste Methode, um eine Verbindung mit einem privaten Cluster oder einem Cluster herzustellen, für den lokale Konten deaktiviert sind. Diese Methode ist nicht von der Clusterkonnektivität abhängig, wenn Sie eine Dienstverbindung erstellen. Der Zugriff auf AKS wird auf die Pipelineruntime zurückgestellt, was die folgenden Vorteile hat:

  • Der Zugriff auf einen (privaten) AKS-Cluster kann von einem selbstgehosteten Agent oder einem Skalierungsgruppen-Agent mit Sichtverbindung zum Cluster ausgeführt werden.
  • Für jede Aufgabe, die eine Azure Resource Manager-Dienstverbindung verwendet, wird ein Token erstellt. Dadurch wird sichergestellt, dass Sie eine Verbindung mit Kubernetes mit einem kurzlebigen Token herstellen. Dies ist die Kubernetes-Empfehlung.
  • Auf AKS kann auch dann zugegriffen werden, wenn lokale Konten deaktiviert sind.

Häufig gestellte Fragen zu Dienstverbindungen

Ich erhalte die folgende Fehlermeldung: Es wurde kein Geheimnis gefunden, das mit dem Dienstkonto verknüpft ist. Was passiert?

Sie verwenden die Option Kubernetes-Dienstverbindung mit Azure-Abonnement. Wir aktualisieren diese Methode, um langlebige Token zu erstellen. Dies wird voraussichtlich Mitte Mai verfügbar sein. Es wird jedoch empfohlen, mit der Verwendung des Azure-Dienstverbindungstyps zu beginnen und keine langlebigen Token gemäß Kubernetes-Anleitung zu verwenden.

Ich verwende AKS und möchte nichts ändern. Kann ich weiterhin Aufgaben mit der Kubernetes-Dienstverbindung verwenden?

Wir aktualisieren diese Methode, um langlebige Token zu erstellen. Dies wird voraussichtlich Mitte Mai verfügbar sein. Bitte beachten Sie jedoch, dass dieser Ansatz gegen die Kubernetes-Anleitungen steht.

Ich verwende die Kubernetes-Tasks und die Kubernetes-Dienstverbindung, aber nicht AKS. Muss ich mir Sorgen machen?

Ihre Aufgaben funktionieren weiterhin wie zuvor.

Wird der Kubernetes-Dienstverbindungstyp entfernt?

Unsere Kubernetes-Aufgaben funktionieren mit jedem Kubernetes-Cluster, unabhängig davon, wo sie ausgeführt werden. Die Kubernetes-Dienstverbindung besteht weiterhin.

Ich bin AKS-Kunde und alles läuft gut, soll ich handeln?

Es gibt keine Notwendigkeit, etwas zu ändern. Wenn Sie während der Erstellung die Kubernetes-Dienstverbindung und das ausgewählte Azure-Abonnement verwenden, sollten Sie den Kubernetes-Leitfaden zur Verwendung langlebiger Token beachten.

Ich erschaffe eine Kubernetes-Umgebung und habe keine Option, Dienstverbindungen zu verwenden.

Falls Sie während der Erstellung der Umgebung nicht auf Ihre AKS zugreifen können, können Sie eine leere Umgebung verwenden und die connectionType Eingabe auf eine Azure Resource Manager-Dienstverbindung festlegen.

Ich habe AKS mit Azure Active Directory RBAC konfiguriert, und meine Pipeline funktioniert nicht. Werden diese Updates dies beheben?

Der Zugriff auf Kubernetes, wenn AAD RBAC aktiviert ist, steht in keinem Zusammenhang mit der Tokenerstellung. Um eine interaktive Eingabeaufforderung zu verhindern, werden wir kubelogin in einem zukünftigen Update unterstützen.

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, Klassischer Build, klassisches Release
Wird ausgeführt auf Agent, DeploymentGroup
Forderungen Keine
Capabilities Diese Aufgabe erfüllt keine Anforderungen an nachfolgende Aufgaben im Auftrag.
Befehlseinschränkungen Any
Setzbare Variablen Any
Agent-Version Alle unterstützten Agent-Versionen.
Aufgabenkategorie Bereitstellen