Partilhar via


Como usar o Service Connector no Serviço Kubernetes do Azure (AKS)

O Serviço Kubernetes do Azure (AKS) é um dos serviços de computação suportados pelo Service Connector. Este artigo pretende ajudá-lo a compreender:

  • Quais operações são feitas no cluster ao criar uma conexão de serviço.
  • Como usar os recursos do kubernetes que o Service Connector cria.
  • Como solucionar problemas e exibir logs do Service Connector em um cluster AKS.

Pré-requisitos

Quais operações o Service Connector faz no cluster

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

Adicionar a extensão kubernetes do Service Connector

Uma extensão kubernetes nomeada sc-extension é adicionada ao cluster na primeira vez que uma conexão de serviço é criada. Mais tarde, a extensão ajuda a criar recursos kubernetes no cluster do usuário, sempre que uma solicitação de conexão de serviço chega ao Service Connector. Você pode encontrar a extensão em seu cluster AKS no portal do Azure, no menu Extensões + aplicativos .

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

A extensão também é onde os metadados de conexões de cluster são armazenados. A desinstalação da extensão torna todas as conexões no cluster indisponíveis. O operador de extensão está hospedado no namespace sc-systemdo cluster .

Criar recursos do kubernetes

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

Você pode encontrar os recursos do kubernetes criados pelo Service Connector para cada conexão de serviço no portal do Azure em seu recurso kubernetes, no menu Service Connector.

Captura de tela do portal do Azure, exiba os 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, remova seu recurso manualmente, usando, por exemplo, o comando kubectl delete.

Ativar o azureKeyvaultSecretsProvider addon

Se o serviço de destino for o Cofre da Chave do Azure e o Driver CSI do Repositório Secreto estiver habilitado ao criar uma conexão de serviço, o Service Connector habilitará o complemento azureKeyvaultSecretsProvider para o cluster.

Captura de tela do portal do Azure, habilitando o driver CSI para keyvault ao criar uma conexão.

Siga o tutorialConectar ao Cofre da Chave do Azure usando o driver CSI para configurar uma conexão com o Cofre da Chave do Azure usando o driver CSI do Repositório Secreto.

Habilite a identidade da carga de trabalho e o emissor do OpenID Connect (OIDC)

Se o tipo de autenticação for Workload Identity ao criar uma conexão de serviço, o Service Connector habilitará a identidade da carga de trabalho e o emissor OIDC para o cluster.

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

Quando o tipo de autenticação é Workload Identity, uma identidade gerenciada atribuída pelo usuário é necessária para criar a credencial de identidade federada. Saiba mais sobre o que são identidades de carga de trabalho ou siga o tutorialpara configurar uma conexão com o Armazenamento do Azure usando a identidade de carga de trabalho.

Como usar os recursos kubernetes criados pelo Service Connector

Recursos kubernetes diferentes são criados quando o tipo de serviço de destino e o tipo de autenticação são diferentes. As seções a seguir mostram como usar os recursos kubernetes criados pelo Service Connector em suas cargas de trabalho de cluster, definição e códigos de aplicativo.

Segredo do Kubernetes

Um segredo do kubernetes é criado quando o tipo de autenticação é 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 é 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

Em seguida, os códigos do aplicativo podem consumir a cadeia de conexão na variável secret from environment. Você pode verificar o código de exemplo para saber mais sobre os nomes das variáveis de ambiente e como usá-los em seus códigos de aplicativo para autenticar em diferentes serviços de destino.

Conta de serviço do Kubernetes

Uma conta de serviço kubernetes e um segredo são criados quando o tipo de autenticação é 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

Você pode verificar o tutorial para saber como se conectar ao Armazenamento do Azure usando a identidade da carga de trabalho.

Como solucionar problemas e exibir logs

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

Verifique a extensão kubernetes do Service Connector

A extensão kubernetes do Service Connector é criada sobre as extensões de cluster do Kubernetes habilitadas para Azure Arc. Use os comandos a seguir para investigar se há erros durante a instalação ou atualização da extensão.

  1. Instale a extensão CLI do k8s-extension Azure.
az extension add --name k8s-extension
  1. Obtenha o status da extensão do Service Connector. Verifique a statuses propriedade na saída do comando para ver se há erros.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Verificar logs de cluster do kubernetes

Se houver um erro durante a instalação da extensão e a mensagem de erro na propriedade não fornecer informações suficientes sobre o statuses que aconteceu, você poderá verificar ainda mais os logs do kubernetes com as etapas a seguir.

  1. Conecte-se ao seu cluster AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. A extensão do Service Connector é instalada no namespace sc-system através do gráfico helm, verifique o namespace e a liberação do helm seguindo os comandos.

    • Verifique se o namespace existe.
    kubectl get ns
    
    • Verifique o status de liberação do leme.
    helm list -n sc-system
    
  3. Durante a instalação ou atualização da extensão, um trabalho do kubernetes chamado sc-job cria os recursos do kubernetes para a conexão de serviço. A falha na execução do trabalho geralmente causa a falha de extensão. Verifique o status do trabalho executando os seguintes comandos. Se sc-job não existir no sc-system namespace, ele deve ter sido executado com êxito. 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
    
    • Exiba os logs de trabalho.
    kubectl logs job/sc-job -n sc-system
    

Erros comuns e atenuações

Conflito

Mensagem de erro:Operation returned an invalid status code: Conflict.

Motivo: esse erro geralmente ocorre ao tentar criar uma conexão de serviço enquanto o cluster AKS (Serviço Kubernetes do Azure) está em um estado de atualização. A atualização da conexão de serviço entra em conflito com a atualização em andamento. Também pode acontecer quando a sua subscrição não está registada para o fornecedor de Microsoft.KubernetesConfiguration recursos.

Mitigação:

  • Execute o seguinte comando para se certificar de que a sua subscrição está registada para Microsoft.KubernetesConfiguration o fornecedor de recursos.

    az provider register -n Microsoft.KubernetesConfiguration
    
  • Verifique se o cluster está em um estado "Bem-sucedido" e tente novamente a criação.

Limite de tempo excedido

Mensagem de erro:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Motivo: esse erro geralmente acontece quando o trabalho do Kubernetes usado para criar ou atualizar a extensão de cluster do Service Connector não consegue ser agendado devido a limitações de recursos ou outros problemas.

Mitigação: Consulte Verificar logs de cluster do Kubernetes para identificar e resolver os motivos detalhados. Um problema comum é que nenhum nó está disponível devido à preempção. Nesse caso, considere adicionar mais nós ou habilitar o dimensionamento automático para seus nós.

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 aos quais você deseja se conectar para executar operações de conexão em seu nome. Este erro indica uma falta de permissões necessárias em alguns recursos do Azure.

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

Registo de subscrição em falta

Mensagem de erroThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration':

Motivo: o Service Connector exige que a assinatura seja registrada para o , que é o provedor de recursos para extensões de cluster do Kubernetes habilitadas para Microsoft.KubernetesConfigurationAzure Arc.

Mitigação: registre o Microsoft.KubernetesConfiguration provedor de recursos executando o seguinte comando. Para obter mais informações sobre erros de registro do provedor de recursos, consulte este tutorial.

az provider register -n Microsoft.KubernetesConfiguration

Outros problemas

Se as atenuações acima não resolverem o problema, tente redefinir a extensão de cluster do conector de serviço removendo-a e tentando novamente a criação. Espera-se que esse método resolva a maioria dos problemas relacionados à extensão de cluster do Service Connector.

Use os seguintes comandos da CLI para redefinir a extensão:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

Próximos passos

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