Utilize o Conector de Serviço no Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) é um dos serviços de computação suportados pelo Service Connector.

Este artigo abrange:

  • As diferenças entre o Service Connector para AKS e outros serviços de computação.
  • As operações executadas no cluster durante a criação de uma conexão de serviço.
  • As operações executadas nos serviços de destino durante a criação de uma conexão de serviço.
  • Usando os recursos do Kubernetes criados pelo Service Connector.
  • Solução de problemas e visualização de logs do Service Connector em um cluster AKS.

Pré-requisitos

Diferenças entre o Service Connector para AKS e outros serviços de computação

O Service Connector para AKS difere de como opera com outros serviços computacionais suportados pelo Service Connector em vários aspetos. A seguir descrevemos opções e comportamentos específicos do AKS para cada operação de API.

Criação

As opções de criação específicas do AKS estão listadas abaixo. Consulte o portal Azure ou Azure CLI quickstarts para aprender a criar uma nova ligação no AKS.

  • O Service Connector para AKS exige que o Kubernetes namespace parâmetro especifique onde criar os recursos Kubernetes. Por defeito, utiliza o default namespace.
  • O Service Connector para AKS suporta Workload Identity como opção segura de autenticação de credenciais, enquanto outros serviços de computação oferecem System Managed Identity e User Managed Identity opções.
  • Ao usar Azure Key Vault como serviço-alvo com o Secret Store CSI Driver ativado, o Service Connector utiliza a identidade gerida atribuída pelo utilizador do add-on AKS azure-keyvault-secrets-provider para autenticação, sem exigir que os utilizadores especifiquem o tipo de autenticação.
  • O Service Connector para AKS suporta apenas a opção de rede Firewall Rules, enquanto outros serviços de computação também podem suportar opções Private Link e Virtual Network.

Listar configurações

O Service Connector for AKS exibe apenas configurações não credenciais nas exibições de configuração da lista. Os utilizadores devem verificar manualmente as credenciais no recurso Kubernetes associado , se necessário.

Usando o comando Azure CLI az aks connection list-configuration, o valor de uma configuração de credencial é uma cadeia vazia. No portal Azure, o valor de uma configuração de credencial está oculto, como mostrado abaixo.

Captura de ecrã da configuração da listagem de ligações AKS.

Validação

O Service Connector for AKS não valida as alterações de valor de configuração feitas no cluster do usuário, sejam elas configurações de credenciais ou não-credenciais. No entanto, o Service Connector executa as seguintes validações, como faz para outros serviços de computação:

  • Verificar a existência do serviço de destino
  • Verificando regras de firewall IP para acesso ao serviço de destino
  • Garantindo a atribuição de função para identidade de carga de trabalho para acessar o serviço de destino

A saída do comando Azure CLI az aks connection validate é sempre success. O mesmo se aplica ao portal Azure, como mostrado abaixo.

Captura de ecrã da validação da ligação AKS.

Operações executadas pelo Service Connector no cluster AKS

As operações executadas pelo Service Connector no cluster AKS variam dependendo dos serviços de destino e dos tipos de autenticação selecionados ao criar uma conexão de serviço. A seguir estão listadas as possíveis operações feitas pelo Service Connector.

Adicionando a extensão Kubernetes do Service Connector

Uma extensão Kubernetes nomeada sc-extension é adicionada ao cluster na primeira vez que uma ligação de serviço é criada. Mais tarde, a extensão ajuda a criar recursos do Kubernetes no cluster do usuário, sempre que uma solicitação de conexão de serviço chega ao Service Connector. A extensão encontra-se no cluster AKS do utilizador no portal Azure, no menu Extensões + aplicações.

Captura de ecrã do portal Azure, ver extensão AKS.

Os metadados da conexão de cluster também são armazenados na extensão. A desinstalação da extensão torna todas as conexões no cluster indisponíveis. O operador de extensão está alojado no espaço de nomes sc-system do cluster.

Criando os recursos do Kubernetes

O Service Connector cria recursos do Kubernetes no namespace que o usuário especifica ao criar a conexão de serviço. Os recursos do Kubernetes armazenam as informações de conexão necessárias para as definições de carga de trabalho do usuário ou o código do aplicativo para se comunicar com os serviços de destino. Dependendo do tipo de autenticação, diferentes recursos do Kubernetes são criados. Para os Connection String e Service Principal tipos de autenticação, é criado um segredo do Kubernetes. Para o Workload Identity tipo de autenticação, também é criada uma conta de serviço Kubernetes além de um segredo Kubernetes.

Pode encontrar os recursos Kubernetes criados pelo Service Connector para cada ligação de serviço no portal Azure no seu recurso Kubernetes, no menu Service Connector.

Captura de ecrã do portal Azure, ver Recursos Kubernetes criados pelo Service Connector.

A exclusão de uma conexão de serviço não exclui o recurso Kubernetes associado. Se necessário, remove o teu recurso manualmente, usando por exemplo o kubectl delete comando.

Ativação do azureKeyvaultSecretsProvider complemento

Se o serviço alvo estiver Azure Key Vault e o Driver CSI da Secret Store estiver ativado, o Service Connector ativa o add-on azureKeyvaultSecretsProvider para o cluster.

Captura de ecrã do portal Azure, a ativar o driver CSI para keyvault ao criar uma ligação.

Segue o tutorial Connect to Azure Key Vault usando o driver CSI para estabelecer uma ligação ao Azure Key Vault usando o driver CSI da Secret Store.

Ativação da identidade de carga de trabalho e do emissor do OpenID Connect (OIDC)

Se o tipo de autenticação for Workload Identity, o Service Connector ativa a identidade de workload e o emissor OIDC para o cluster.

Captura de ecrã do portal Azure, usando a identidade da carga de trabalho para criar uma ligação.

Se o tipo de autenticação for Workload Identity, é necessária uma identidade gerida atribuída pelo utilizador para criar a credencial de identidade federada. Saiba mais sobre as identidades carga de trabalho ou consulte o seguinte tutorial para estabelecer uma ligação a Azure Storage usando uma identidade de carga de trabalho.

Operações executadas pelo Service Connector nos serviços de destino

O Service Connector for AKS executa as mesmas operações nos serviços de destino que outros serviços de computação. No entanto, as operações variam dependendo dos tipos de serviço de destino e métodos de autenticação. A seguir estão listadas algumas operações possíveis.

Obter configurações de conexão

O Service Connector recupera as configurações de conexão necessárias do serviço de destino e as define como um segredo do Kubernetes no cluster do usuário. As configurações de conexão variam com base no tipo de serviço de destino e no método de autenticação:

  • Para o tipo de autenticação Connection String, a configuração normalmente inclui um segredo de serviço ou connection string.
  • Para o tipo de autenticação Workload Identity, este normalmente contém o endpoint do serviço.
  • Para o Service Principal tipo de autenticação, contém o ID do tenant do serviço principal, o ID do cliente e o segredo do cliente.

Para informações detalhadas sobre serviços-alvo específicos, consulte a documentação correspondente, como o guia Foundry Tools .

Criar regras de firewall baseadas em IP

O Service Connector recupera o IP público de saída do cluster AKS e cria regras de firewall IP no serviço de destino para permitir o acesso à rede a partir do cluster.

Criar atribuições de funções do Microsoft Entra ID

Ao usar o tipo de Workload Identity autenticação, o Service Connector cria automaticamente uma atribuição de papel para a identidade. A função atribuída varia de acordo com o serviço de destino para garantir o acesso adequado. Os usuários também podem personalizar atribuições de função conforme necessário. Para mais informações, consulte personalização de funções.

Usar os recursos do Kubernetes criados pelo Service Connector

O Service Connector cria vários recursos do Kubernetes dependendo do tipo de serviço de destino e do tipo de autenticação selecionado. As seções a seguir mostram como usar os recursos do Kubernetes criados pelo Service Connector na definição de cargas de trabalho de cluster e no código do aplicativo.

Segredo do Kubernetes

Um segredo Kubernetes é criado quando o tipo de autenticação é definido para ou Connection String ou Service Principal. Sua definição de carga de trabalho de cluster pode fazer referência ao segredo diretamente. O trecho a seguir fornece um exemplo.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

O código da sua aplicação pode utilizar a string de conexão armazenada no segredo de uma variável de ambiente. Consulte o seguinte código de exemplo para saber mais sobre os nomes das variáveis de ambiente e como os usar no código da sua aplicação para autenticar a diferentes serviços-alvo.

Conta de serviço do Kubernetes

Uma conta de serviço Kubernetes e um segredo são criados quando o tipo de autenticação é definido para Workload Identity. Sua definição de carga de trabalho de cluster pode fazer referência à conta de serviço e ao segredo para autenticação por meio da identidade da carga de trabalho. O trecho a seguir fornece um exemplo.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Consulte o tutorial seguinte para aprender como ligar a Azure Storage usando a identidade da carga de trabalho.

Solucionar problemas e exibir logs

Se ocorrer um erro que não puder ser resolvido tentando novamente ao criar uma conexão de serviço, os métodos a seguir ajudarão a reunir mais informações para solução de problemas.

Verifique a extensão do Kubernetes do Service Connector

A extensão Service Connector Kubernetes é construída sobre extensões de cluster Kubernetes habilitadas por Azure Arc. Use os comandos a seguir para verificar se há erros que ocorram durante o processo de instalação ou atualização da extensão.

  1. Instala a extensão k8s-extension Azure CLI.

    az extension add --name k8s-extension
    
  2. Recupere o status da extensão do Service Connector. Verifique a statuses propriedade na saída do comando para identificar quaisquer erros.

    az k8s-extension show \
        --resource-group MyClusterResourceGroup \
        --cluster-name MyCluster \
        --cluster-type managedClusters \
        --name sc-extension
    

Verificar logs de cluster do Kubernetes

Se ocorrer um erro durante a instalação da extensão e a mensagem de erro na statuses propriedade não fornecer informação suficiente, pode investigar mais detalhadamente verificando os registos do Kubernetes com os seguintes passos.

  1. Conecte-se ao seu cluster AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. A extensão do Conector de Serviço é instalada no sc-system espaço de nomes usando um gráfico de Helm. Verifique o namespace e a versão Helm usando os comandos a seguir.

    • Verifique se o namespace existe.

      kubectl get ns
      
    • Verifique o estado da versão do Helm.

      helm list -n sc-system
      
  3. Durante a instalação ou atualização da extensão, um trabalho Kubernetes chamado sc-job cria os recursos Kubernetes para a ligação ao serviço. Uma falha na execução do trabalho normalmente faz com que a extensão falhe. Verifique o status do trabalho executando os seguintes comandos. Se sc-job não existir no sc-system namespace, deveria ter sido executado com sucesso. Este trabalho foi projetado para ser excluído automaticamente após a execução bem-sucedida.

    • Verifique se o trabalho existe.

      kubectl get job -n sc-system
      
    • Obtenha o status do trabalho.

      kubectl describe job/sc-job -n sc-system
      
    • Veja os registos de atividade.

      kubectl logs job/sc-job -n sc-system
      

Erros comuns e atenuações

Erro de criação de extensão

Mensagem de erro:

  • Unable to get a response from the agent in time.
  • Extension pods can't be scheduled if all the node pools in the cluster are "CriticalAddonsOnly" tainted

Mitigação:

Consulte erros de criação de extensões

Erros do Helm

Mensagens de erro:

  • Unable to download the Helm chart from the repo URL

Este erro é causado por problemas de conectividade que ocorrem entre o cluster e o firewall, além de problemas de bloqueio de saída. Para resolver este problema, veja Regras de Rede de Saída e FQDN para clusters do Azure Kubernetes Service (AKS), e adicione o FQDN necessário para obter o Helm chart do Service Connector: mcr.microsoft.com

Mensagens de erro:

  • Timed out waiting for resource readiness
  • Helm chart rendering failed with given values
  • Resource already exists in your cluster
  • Operation is already in progress for Helm

Mitigação:

Consulte os erros de Helm

Conflito

Mensagem de erro:

Operation returned an invalid status code: Conflict.

Motivo:

Este erro ocorre tipicamente ao tentar criar uma ligação de serviço enquanto o cluster Azure Kubernetes Service (AKS) está em estado de atualização. A atualização da ligação de serviço está em conflito com a atualização em curso. Este erro também ocorre quando a sua subscrição não está registada junto do Microsoft.KubernetesConfiguration fornecedor de recursos.

Mitigação:

  1. Verifique se o cluster está em um estado "Bem-sucedido" e tente novamente a criação.

  2. Execute o seguinte comando para garantir que a sua subscrição está registada junto do Microsoft.KubernetesConfiguration fornecedor de recursos.

    az provider register -n Microsoft.KubernetesConfiguration
    

Acesso não autorizado a recursos

Mensagem de erro:

You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Motivo:

O Service Connector requer permissões para operar os recursos do Azure a que pretende ligar-se, de modo a realizar operações de ligação em seu nome. Este erro indica a falta de permissões necessárias em alguns recursos do Azure.

Mitigação:

Verifique as permissões nos recursos do Azure especificadas na mensagem de erro. Obtenha as permissões necessárias e tente novamente a criação.

Registo de subscrição em falta

Mensagem de erro:

The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'

Motivo:

O Service Connector exige que a subscrição seja registada com Microsoft.KubernetesConfiguration, que é o fornecedor de recursos para extensões de cluster Kubernetes equipadas com Azure Arc.

Mitigação:

Registe o Microsoft.KubernetesConfiguration fornecedor de recursos executando o seguinte comando. Para mais informações sobre erros de registo de fornecedores de recursos, consulte Resolver erros para registo de fornecedores de recursos.

az provider register -n Microsoft.KubernetesConfiguration

Próximo passo

Saiba como integrar diferentes serviços de destino e leia sobre suas definições de configuração e métodos de autenticação.