Usar o Conector de Serviço 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 criados pelo Service Connector.
- Como solucionar problemas e exibir logs do Service Connector em um cluster AKS.
Pré-requisitos
- Este guia pressupõe que você já conheça os conceitos básicos do Service Connector.
Operações executadas pelo Service Connector no cluster AKS
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.
Adicionando a extensão Kubernetes do Service Connector
Uma extensão do 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 do 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 .
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-system
do cluster .
Criando os 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 do Kubernetes é criado. Para o Workload Identity
tipo de autenticação, uma conta de serviço do Kubernetes também é criada, além de um segredo do 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.
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.
Ativando o complemento azureKeyvaultSecretsProvider
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.
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.
Habilitando 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.
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.
Usar os recursos do Kubernetes criados pelo Service Connector
Vários recursos do Kubernetes são criados pelo Service Connector dependendo do tipo de serviço de destino e do tipo de autenticação. 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 do Kubernetes é criado quando o tipo de autenticação é definido como ou Connection String
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 do aplicativo pode consumir a cadeia de conexão no segredo de uma variável de ambiente. Verifique o código de exemplo a seguir para saber mais sobre os nomes das variáveis de ambiente e como usá-los em seu código de aplicativo para autenticar em diferentes serviços de destino.
Conta de serviço do Kubernetes
Uma conta de serviço do Kubernetes e um segredo são criados quando o tipo de autenticação é definido como 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
Verifique o tutorial a seguir para saber como se conectar ao Armazenamento do Azure 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 Kubernetes do Service Connector é criada sobre as extensões de cluster do Kubernetes habilitadas para Azure Arc. Use os comandos a seguir para verificar se há erros que ocorreram durante o processo de instalação ou atualização da extensão.
Instale a extensão CLI do
k8s-extension
Azure.az extension add --name k8s-extension
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ções suficientes, você poderá investigar mais verificando os logs do Kubernetes com as etapas a seguir.
Conecte-se ao seu cluster AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
A extensão do Service Connector é instalada no
sc-system
namespace usando um gráfico Helm. Verifique o namespace e a versão Helm usando os comandos a seguir.Verifique se o namespace existe.
kubectl get ns
Verifique o status de liberação do leme.
helm list -n sc-system
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. Uma falha na execução do trabalho normalmente faz com que a extensão falhe. Verifique o status do trabalho executando os seguintes comandos. Sesc-job
não existir nosc-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
Erro de criação de extensão
Mensagem de erro:
Unable to get a response from the agent in time
.
Mitigação:
Consulte os erros de criação de extensão
Erros de leme
Mensagens de erro:
Timed out waiting for resource readiness
Unable to download the Helm chart from the repo URL
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 do leme
Conflito
Mensagem de erro:
Operation returned an invalid status code: Conflict
.
Motivo:
Esse erro normalmente ocorre ao tentar criar uma conexão de serviço enquanto o cluster do Serviço Kubernetes do Azure (AKS) 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. Este erro também ocorre quando a sua subscrição não está registada no fornecedor de Microsoft.KubernetesConfiguration
recursos.
Mitigação:
Verifique se o cluster está em um estado "Bem-sucedido" e tente novamente a criação.
Execute o seguinte comando para se certificar de que a sua subscrição está registada no fornecedor de
Microsoft.KubernetesConfiguration
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 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.
Mitigaçã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 erro:
The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'
Motivo:
O Service Connector exige que a assinatura seja registrada no Microsoft.KubernetesConfiguration
, que é o provedor de recursos para extensões de cluster do Kubernetes habilitadas para Azure 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 Resolver erros para registro do provedor 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.