Partilhar via


AzureFunctionOnKubernetes@1 - Tarefa da Função do Azure no Kubernetes v1

Implementar a função do Azure no cluster do 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 ligação de serviço
string. Obrigatório. Valores permitidos: Azure Resource Manager, Kubernetes Service Connection. Valor predefinido: Kubernetes Service Connection.

Selecione um tipo de ligação do serviço Kubernetes.

  • Kubernetes Service Connection - Permite-lhe fornecer um ficheiro do KubeConfig, especificar uma Conta de Serviço ou importar uma instância do AKS com a opção Subscrição do Azure . Importar uma instância do AKS com a opção Subscrição do Azure requer acesso ao cluster do Kubernetes no tempo de configuração da Ligação de Serviço.
  • Azure Resource Manager - Permite-lhe selecionar uma instância do AKS. Não acede ao cluster do Kubernetes na hora de configuração da Ligação de Serviço.

Para obter mais informações, consulte Observações.


dockerRegistryServiceConnection - Ligação do serviço de registo do Docker
string. Obrigatório.

Selecione uma ligação do serviço de registo do Docker.


kubernetesServiceConnection - Ligação do serviço Kubernetes
Alias de entrada: kubernetesServiceEndpoint. string. Necessário quando connectionType = Kubernetes Service Connection.

Selecione uma ligação de serviço do Kubernetes.


azureSubscriptionConnection - Subscrição do Azure
Alias de entrada: azureSubscriptionEndpoint. string. Necessário quando connectionType = Azure Resource Manager.

Selecione a subscrição do Azure Resource Manager, que contém Azure Container Registry. Nota: para configurar uma nova ligação de serviço, selecione a subscrição do Azure na lista e clique em "Autorizar". Se a sua subscrição não estiver listada ou se quiser utilizar um Principal de Serviço existente, pode configurar uma ligação de serviço do Azure com o botão "Adicionar" ou "Gerir".


azureResourceGroup - Grupo de recursos
string. Necessário quando connectionType = Azure Resource Manager.

Selecione um grupo de recursos do Azure.


kubernetesCluster - Cluster do Kubernetes
string. Necessário quando connectionType = Azure Resource Manager.

Selecione um cluster gerido do Azure.


namespace - Espaço de nomes do Kubernetes
string.

Espaço de nomes do Kubernetes.


secretName - Nome do Segredo
string.

Segredo do Kubernetes que contém dados de configuração de função (por exemplo, AzureWebJobsStorage: Azure storage connection string).


dockerHubNamespace - Docker Hub espaço de nomes
string.

Docker Hub espaço de nomes. Necessário para o repositório de Docker Hub privado.


appName - Nome da Aplicação
string. Obrigatório.

Nome da Aplicação. Os objetos do Kubernetes criados utilizam este nome. Isto deve seguir as convenções de nomenclatura do Kubernetes para nomes de recursos.


functionRootDirectory - Diretório de raiz da função
string.

Diretório de raiz de função. Deve conter host.json. A compilação e a empção do Docker são executadas a partir deste diretório.


waitForStability - Aguarde pela estabilidade
boolean. Valor predefinido: true.

Aguarde que os objetos do Kubernetes atinjam o estado pretendido.


arguments - Argumentos
string.

Transmitir argumentos ao comando. Ex.:
--no-docker --service-type NodePort.


Opções de controlo de tarefas

Todas as tarefas têm opções de controlo para além das entradas de tarefas. Para obter mais informações, veja Opções de controlo e propriedades de tarefas comuns.

Variáveis de saída

Nenhum.

Observações

Considerações sobre a Ligação do Serviço Kubernetes ao aceder ao AKS

Pode criar uma ligação de serviço do Kubernetes com qualquer uma das seguintes opções.

  • KubeConfig
  • Conta de Serviço
  • Subscrição do Azure

Captura de ecrã a mostrar a escolha de um método de autenticação de ligação do serviço Kubernetes.

Ao selecionar a opção Subscrição do Azure , o Kubernetes tem de estar acessível ao Azure DevOps no momento da configuração da ligação de serviço. Podem existir vários motivos pelos quais não é possível criar uma ligação de serviço, por exemplo , criou um cluster privado ou o cluster tem contas locais desativadas. Nestes casos, o Azure DevOps não consegue ligar ao cluster no momento da configuração da ligação de serviço e verá um ecrã a carregar espaços de nomes bloqueado.

Captura de ecrã a mostrar a escolha de uma caixa de diálogo de autenticação de ligação do serviço Kubernetes bloqueada ao carregar espaços de nomes.

A partir do Kubernetes 1.24, os tokens de longa duração já não são criados por predefinição. O Kubernetes recomenda que não utilize tokens de longa duração. Como resultado, as tarefas que utilizam uma ligação de serviço do Kubernetes criada com a opção Subscrição do Azure não têm acesso ao token permanente necessário para autenticar e não podem aceder ao cluster do Kubernetes. Isto também resulta na caixa de diálogo Carregar espaços de nomes congelados .

Utilizar a Ligação do Serviço do Azure Resource Manager para aceder ao AKS

Para os clientes do AKS, o tipo de ligação de serviço do Azure Resource Manager fornece o melhor método para ligar a um cluster privado ou a um cluster com contas locais desativadas. Este método não depende da conectividade do cluster no momento em que criar uma ligação de serviço. O acesso ao AKS é diferido para o runtime do pipeline, que tem as seguintes vantagens:

  • O acesso a um cluster do AKS (privado) pode ser efetuado a partir de um agente autoalojado ou de um conjunto de dimensionamento com linha de visão para o cluster.
  • É criado um token para cada tarefa que utiliza uma ligação de serviço do Azure Resource Manager. Isto garante que está a ligar ao Kubernetes com um token de curta duração, que é a recomendação do Kubernetes.
  • O AKS pode ser acedido mesmo quando as contas locais são desativadas.

FAQ da ligação de serviço

Recebo a seguinte mensagem de erro: Não foi possível localizar nenhum segredo associado à conta de serviço. O que está a acontecer?

Está a utilizar a ligação do serviço Kubernetes com a opção Subscrição do Azure. Estamos a atualizar este método para criar tokens de longa duração. Espera-se que esteja disponível em meados de maio. No entanto, é recomendado começar a utilizar o tipo de ligação de serviço do Azure e não utilizar tokens de longa duração de acordo com as orientações do Kubernetes.

Estou a utilizar o AKS e não quero alterar nada. Posso continuar a utilizar tarefas com a ligação do serviço Kubernetes?

Estamos a atualizar este método para criar tokens de longa duração. Espera-se que esteja disponível em meados de maio. No entanto, tenha em atenção que esta abordagem é contra as orientações do Kubernetes.

Estou a utilizar as tarefas do Kubernetes e a ligação do serviço Kubernetes, mas não o AKS. Devo preocupar-me?

As tarefas continuarão a funcionar como anteriormente.

O tipo de ligação do serviço Kubernetes será removido?

As nossas tarefas do Kubernetes funcionam com qualquer cluster do Kubernetes, independentemente do local onde estão a ser executadas. A ligação do serviço Kubernetes continuará a existir.

Sou um cliente do AKS e está tudo a correr bem, devo agir?

Não há necessidade de mudar nada. Se estiver a utilizar a ligação do serviço Kubernetes e tiver selecionado a Subscrição do Azure durante a criação, deve estar ciente da documentação de orientação do Kubernetes sobre a utilização de tokens de longa duração.

Estou a criar um Ambiente do Kubernetes e não tenho opção de utilizar ligações de serviço

Caso não consiga aceder ao AKS durante a hora de criação do ambiente, pode utilizar um ambiente vazio e definir a connectionType entrada para uma ligação de serviço do Azure Resource Manager.

Configurei o AKS com o RBAC do Azure Active Directory e o meu pipeline não funciona. Estas atualizações irão resolver este problema?

Aceder ao Kubernetes quando o RBAC do AAD está ativado não está relacionado com a criação de tokens. Para impedir um pedido interativo, iremos suportar o kubelogin numa atualização futura.

Requisitos

Requisito Description
Tipos de pipeline YAML, Compilação clássica, Versão clássica
É executado em Agente, DeploymentGroup
Exigências Nenhuma
Capacidades Esta tarefa não satisfaz quaisquer exigências para tarefas subsequentes na tarefa.
Restrições de comandos Qualquer
Variáveis de tabelas definidas Qualquer
Versão do agente Todas as versões de agente suportadas.
Categoria da tarefa Implementação