AzureFunctionOnKubernetes@1 - Tâche Azure Function on Kubernetes v1

Déployez la fonction Azure sur un cluster Kubernetes.

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.

Entrées

connectionType - Type de connexion de service
string. Obligatoire. Valeurs autorisées : Azure Resource Manager, Kubernetes Service Connection. Valeur par défaut : Kubernetes Service Connection.

Sélectionnez un type de connexion de service Kubernetes.

  • Kubernetes Service Connection- Vous permet de fournir un fichier KubeConfig, de spécifier un compte de service ou d’importer un instance AKS avec l’option Abonnement Azure. L’importation d’un instance AKS avec l’option Abonnement Azure nécessite l’accès au cluster Kubernetes au moment de la configuration de la connexion de service.
  • Azure Resource Manager- Vous permet de sélectionner un instance AKS. N’accède pas au cluster Kubernetes au moment de la configuration de la connexion de service.

Pour plus d’informations, consultez Remarques.


dockerRegistryServiceConnection - Connexion au service du Registre Docker
string. Obligatoire.

Sélectionnez une connexion au service du Registre Docker.


kubernetesServiceConnection - Connexion au service Kubernetes
Alias d’entrée : kubernetesServiceEndpoint. string. Nécessaire lorsque connectionType = Kubernetes Service Connection.

Sélectionnez une connexion de service Kubernetes.


azureSubscriptionConnection - Abonnement Azure
Alias d’entrée : azureSubscriptionEndpoint. string. Nécessaire lorsque connectionType = Azure Resource Manager.

Sélectionnez l’abonnement Azure Resource Manager qui contient Azure Container Registry. Remarque : Pour configurer une nouvelle connexion de service, sélectionnez l’abonnement Azure dans la liste, puis cliquez sur « Autoriser ». Si votre abonnement n’est pas répertorié, ou si vous souhaitez utiliser un principal de service existant, vous pouvez configurer une connexion de service Azure à l’aide du bouton « Ajouter » ou « Gérer ».


azureResourceGroup - Groupe de ressources
string. Nécessaire lorsque connectionType = Azure Resource Manager.

Sélectionnez un groupe de ressources Azure.


kubernetesCluster - Cluster Kubernetes
string. Nécessaire lorsque connectionType = Azure Resource Manager.

Sélectionnez un cluster managé Azure.


namespace - Espace de noms Kubernetes
string.

Espace de noms Kubernetes.


secretName - Nom du secret
string.

Secret Kubernetes contenant des données de configuration de fonction (par exemple, AzureWebJobsStorage : Azure storage connection string).


dockerHubNamespace - espace de noms Docker Hub
string.

Docker Hub espace de noms. Obligatoire pour le dépôt de Docker Hub privé.


appName - Nom de l’application
string. Obligatoire.

Nom de l’application. Les objets Kubernetes créés utilisent ce nom. Cela doit suivre les conventions de nommage Kubernetes pour les noms de ressources.


functionRootDirectory - Répertoire racine de la fonction
string.

Répertoire racine de la fonction. Doit contenir host.json. La génération et le push Docker sont effectués à partir de ce répertoire.


waitForStability - Attendez la stabilité
boolean. Valeur par défaut : true.

Attendez que les objets Kubernetes atteignent l’état souhaité.


arguments - Arguments
string.

Passez les arguments à la commande. Exemple :
--no-docker --service-type NodePort.


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Considérations relatives à la connexion au service Kubernetes lors de l’accès à AKS

Vous pouvez créer une connexion de service Kubernetes avec l’une des options suivantes.

  • KubeConfig
  • Compte Service Account
  • Abonnement Azure

Capture d’écran du choix d’une méthode d’authentification de connexion de service Kubernetes.

Lorsque vous sélectionnez l’option Abonnement Azure , Kubernetes doit être accessible à Azure DevOps au moment de la configuration de la connexion de service. Il peut y avoir différentes raisons pour lesquelles une connexion de service ne peut pas être créée, par exemple vous avez créé un cluster privé ou si les comptes locaux du cluster sont désactivés. Dans ce cas, Azure DevOps ne peut pas se connecter à votre cluster au moment de la configuration de la connexion de service et vous verrez un écran Chargement des espaces de noms bloqué.

Capture d’écran de la sélection d’une boîte de dialogue d’authentification de connexion de service Kubernetes bloquée lors du chargement des espaces de noms.

À compter de Kubernetes 1.24, les jetons à longue durée de vie ne sont plus créés par défaut. Kubernetes recommande de ne pas utiliser de jetons de longue durée. Par conséquent, les tâches utilisant une connexion de service Kubernetes créée avec l’option Abonnement Azure n’ont pas accès au jeton permanent requis pour l’authentification et ne peuvent pas accéder à votre cluster Kubernetes. Cela entraîne également la boîte de dialogue Chargement des espaces de noms figé.

Utiliser la connexion de service Azure Resource Manager pour accéder à AKS

Pour les clients AKS, le type de connexion de service Azure Resource Manager fournit la meilleure méthode pour se connecter à un cluster privé ou à un cluster dont les comptes locaux sont désactivés. Cette méthode ne dépend pas de la connectivité du cluster au moment où vous créez une connexion de service. L’accès à AKS est différé au runtime de pipeline, ce qui présente les avantages suivants :

  • L’accès à un cluster AKS (privé) peut être effectué à partir d’un agent auto-hébergé ou identique avec une visibilité directe vers le cluster.
  • Un jeton est créé pour chaque tâche qui utilise une connexion de service Azure Resource Manager. Cela garantit que vous vous connectez à Kubernetes avec un jeton de courte durée, qui est la recommandation Kubernetes.
  • AKS est accessible même lorsque les comptes locaux sont désactivés.

FAQ sur la connexion de service

Je reçois le message d’erreur suivant : Impossible de trouver un secret associé au compte de service. Ce qui se passe

Vous utilisez la connexion au service Kubernetes avec l’option Abonnement Azure. Nous mettons à jour cette méthode pour créer des jetons de longue durée. Cette option devrait être disponible à la mi-mai. Toutefois, il est recommandé de commencer à utiliser le type de connexion de service Azure et de ne pas utiliser de jetons de longue durée conformément aux instructions Kubernetes.

J’utilise AKS et ne souhaite rien changer. Puis-je continuer à utiliser des tâches avec la connexion au service Kubernetes ?

Nous mettons à jour cette méthode pour créer des jetons de longue durée. Cette option devrait être disponible à la mi-mai. Toutefois, n’oubliez pas que cette approche va à l’encontre des conseils de Kubernetes.

J’utilise les tâches Kubernetes et la connexion au service Kubernetes, mais pas AKS. Dois-je être inquiet ?

Vos tâches continueront à fonctionner comme avant.

Le type de connexion de service Kubernetes sera-t-il supprimé ?

Nos tâches Kubernetes fonctionnent avec n’importe quel cluster Kubernetes, quel que soit l’endroit où elles s’exécutent. La connexion au service Kubernetes continue d’exister.

Je suis un client AKS et tout va bien, dois-je agir ?

Il n’est pas nécessaire de changer quoi que ce soit. Si vous utilisez la connexion au service Kubernetes et que vous avez sélectionné l’abonnement Azure lors de la création, vous devez connaître les conseils Kubernetes sur l’utilisation de jetons de longue durée.

Je crée un environnement Kubernetes et n’ai pas la possibilité d’utiliser des connexions de service

Si vous ne pouvez pas accéder à votre AKS au moment de la création de l’environnement, vous pouvez utiliser un environnement vide et définir l’entrée connectionType sur une connexion de service Azure Resource Manager.

AKS est configuré avec le RBAC Azure Active Directory et mon pipeline ne fonctionne pas. Ces mises à jour permettront-elles de résoudre ce problème ?

L’accès à Kubernetes lorsque le RBAC AAD est activé n’est pas lié à la création de jetons. Pour éviter une invite interactive, nous allons prendre en charge kubelogin dans une prochaine mise à jour.

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent Toutes les versions d’agent prises en charge.
Catégorie de la tâche Déployer