Compartir a través de


AzureFunctionOnKubernetes@1: tarea Azure Functions en Kubernetes v1

Implemente la función de Azure en el clúster de 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.

Entradas

connectionType - Tipo de conexión de servicio
string. Obligatorio. Valores permitidos: Azure Resource Manager, Kubernetes Service Connection. Valor predeterminado: Kubernetes Service Connection.

Seleccione un tipo de conexión de servicio de Kubernetes.

  • Kubernetes Service Connection - Permite proporcionar un archivo KubeConfig, especificar una cuenta de servicio o importar una instancia de AKS con la opción Suscripción de Azure . La importación de una instancia de AKS con la opción Suscripción de Azure requiere acceso al clúster de Kubernetes en el momento de la configuración de la conexión de servicio.
  • Azure Resource Manager - Permite seleccionar una instancia de AKS. No tiene acceso al clúster de Kubernetes en el momento de la configuración de la conexión de servicio.

Para obtener más información, vea Comentarios.


dockerRegistryServiceConnection - Conexión del servicio del registro de Docker
string. Obligatorio.

Seleccione una conexión de servicio del registro de Docker.


kubernetesServiceConnection - Conexión del servicio Kubernetes
Alias de entrada: kubernetesServiceEndpoint. string. Necesario cuando connectionType = Kubernetes Service Connection.

Seleccione una conexión de servicio de Kubernetes.


azureSubscriptionConnection - Suscripción de Azure
Alias de entrada: azureSubscriptionEndpoint. string. Necesario cuando connectionType = Azure Resource Manager.

Seleccione la suscripción de Azure Resource Manager, que contiene Azure Container Registry. Nota: Para configurar una nueva conexión de servicio, seleccione la suscripción de Azure en la lista y haga clic en "Autorizar". Si la suscripción no aparece o si desea usar una entidad de servicio existente, puede configurar una conexión de servicio de Azure mediante el botón "Agregar" o "Administrar".


azureResourceGroup - Grupo de recursos
string. Necesario cuando connectionType = Azure Resource Manager.

Seleccione un grupo de recursos de Azure.


kubernetesCluster - Clúster de Kubernetes
string. Necesario cuando connectionType = Azure Resource Manager.

Seleccione un clúster administrado de Azure.


namespace - Espacio de nombres de Kubernetes
string.

Espacio de nombres de Kubernetes.


secretName - Nombre del secreto
string.

Secreto de Kubernetes que contiene datos de configuración de función (por ejemplo, AzureWebJobsStorage: Azure storage connection string).


dockerHubNamespace - Docker Hub espacio de nombres
string.

Docker Hub espacio de nombres. Necesario para el repositorio de Docker Hub privado.


appName - Nombre de la aplicación
string. Obligatorio.

Nombre de la aplicación. Los objetos de Kubernetes creados usan este nombre. Esto debe seguir las convenciones de nomenclatura de Kubernetes para los nombres de recursos.


functionRootDirectory - Directorio raíz de la función
string.

Directorio raíz de la función. Debe contener host.json. La compilación e inserción de Docker se realiza desde este directorio.


waitForStability - Esperar estabilidad
boolean. Valor predeterminado: true.

Espere a que los objetos de Kubernetes alcancen el estado deseado.


arguments - Argumentos
string.

Pase argumentos al comando . Por ejemplo:
--no-docker --service-type NodePort.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de las entradas de tareas. Para obtener más información, vea Opciones de control y propiedades de tareas comunes.

Variables de salida

Ninguno.

Comentarios

Consideraciones sobre la conexión de Kubernetes Service al acceder a AKS

Puede crear una conexión de servicio de Kubernetes con cualquiera de las siguientes opciones.

  • KubeConfig
  • Cuenta de servicio
  • Suscripción de Azure

Captura de pantalla de la elección de un método de autenticación de conexión de servicio de Kubernetes.

Al seleccionar la opción Suscripción de Azure , Kubernetes debe ser accesible para Azure DevOps en el momento de la configuración de la conexión del servicio. Puede haber varias razones por las que no se puede crear una conexión de servicio, por ejemplo, ha creado un clúster privado o el clúster tiene deshabilitadas las cuentas locales. En estos casos, Azure DevOps no se puede conectar al clúster en el momento de la configuración de la conexión del servicio y verá una pantalla bloqueada Cargando espacios de nombres .

Captura de pantalla de cómo elegir un cuadro de diálogo de autenticación de conexión de servicio de Kubernetes bloqueado en la carga de espacios de nombres.

A partir de Kubernetes 1.24, los tokens de larga duración ya no se crean de forma predeterminada. Kubernetes recomienda no usar tokens de larga duración. Como resultado, las tareas que usan una conexión de servicio de Kubernetes creada con la opción Suscripción de Azure no tienen acceso al token permanente necesario para autenticarse y no pueden acceder al clúster de Kubernetes. Esto también da como resultado el cuadro de diálogo Cargando espacios de nombres inmovilizados.

Uso de la conexión de servicio de Azure Resource Manager para acceder a AKS

Para los clientes de AKS, el tipo de conexión de servicio de Azure Resource Manager proporciona el mejor método para conectarse a un clúster privado o un clúster que tenga deshabilitadas las cuentas locales. Este método no depende de la conectividad del clúster en el momento en que se crea una conexión de servicio. El acceso a AKS se aplaza al entorno de ejecución de canalización, que tiene las siguientes ventajas:

  • El acceso a un clúster de AKS (privado) se puede realizar desde un agente de conjunto de escalado o autohospedado con línea de visión al clúster.
  • Se crea un token para cada tarea que usa una conexión de servicio de Azure Resource Manager. Esto garantiza que se conecta a Kubernetes con un token de corta duración, que es la recomendación de Kubernetes.
  • Se puede acceder a AKS incluso cuando se deshabilitan las cuentas locales.

Preguntas más frecuentes sobre la conexión de servicio

Recibo el siguiente mensaje de error: No se encontró ningún secreto asociado a la cuenta de servicio. ¿Qué pasa?

Usa la opción conexión de servicio de Kubernetes con la suscripción de Azure. Estamos actualizando este método para crear tokens de larga duración. Se espera que esté disponible a mediados de mayo. Sin embargo, se recomienda empezar a usar el tipo de conexión de servicio de Azure y no usar tokens de larga duración según las instrucciones de Kubernetes.

Uso AKS y no quiero cambiar nada, ¿puedo seguir usando tareas con la conexión del servicio Kubernetes?

Estamos actualizando este método para crear tokens de larga duración. Se espera que esté disponible a mediados de mayo. Sin embargo, tenga en cuenta que este enfoque está en contra de las instrucciones de Kubernetes.

Uso las tareas de Kubernetes y la conexión de servicio de Kubernetes, pero no AKS. ¿Debería preocuparme?

Las tareas seguirán funcionando como antes.

¿Se quitará el tipo de conexión del servicio Kubernetes?

Nuestras tareas de Kubernetes funcionan con cualquier clúster de Kubernetes, independientemente de dónde se ejecuten. La conexión del servicio Kubernetes seguirá existiendo.

Soy un cliente de AKS y todo funciona bien, ¿debo actuar?

No es necesario cambiar nada. Si usa la conexión del servicio Kubernetes y la suscripción de Azure seleccionada durante la creación, debe tener en cuenta las instrucciones de Kubernetes sobre el uso de tokens de larga duración.

Estoy creando un entorno de Kubernetes y no tengo ninguna opción para usar conexiones de servicio.

En caso de que no pueda acceder a AKS durante el tiempo de creación del entorno, puede usar un entorno vacío y establecer la connectionType entrada en una conexión de servicio de Azure Resource Manager.

Tengo AKS configurado con RBAC de Azure Active Directory y mi canalización no funciona. ¿Resolverán estas actualizaciones?

El acceso a Kubernetes cuando AAD RBAC está habilitado no está relacionado con la creación de tokens. Para evitar un aviso interactivo, se admitirá kubelogin en una actualización futura.

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
Peticiones None
Capabilities Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
Restricciones de comandos Any
Variables que se pueden establecer Any
Versión del agente Todas las versiones de agente compatibles.
Categoría de la tarea: Implementación