Tutorial: Usar o provedor do Azure Key Vault para o driver CSI do Armazenamento de Segredos em um cluster do Serviço de Kubernetes do Azure (AKS)
Saiba como se conectar ao Azure Key Vault usando o driver CSI em um cluster do Serviço de Kubernetes do Azure (AKS) com a ajuda do Conector de Serviço. Neste tutorial, você completa as seguintes tarefas:
- Crie um cluster do AKS e um Azure Key Vault.
- Crie uma conexão entre o cluster do AKS e o Azure Key Vault com o Conector de Serviço.
- Crie um CRD
SecretProviderClass
e umpod
que consome o provedor CSI para testar a conexão. - Limpe os recursos.
Importante
O Service Connect no AKS está atualmente em versão prévia. Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.
Aviso
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Instale a CLI do Azure e entre na CLI do Azure usando o comando az login.
- Instale o Dockere kubectl para gerenciar a imagem do contêiner e os recursos do Kubernetes.
- Conhecimento básico de contêineres e AKS. Comece a partir da preparação de um aplicativo para o AKS.
Criar recursos do Azure
Crie um grupo de recursos para este tutorial.
az group create \ --name MyResourceGroup \ --location eastus
Crie um cluster do AKS com o seguinte comando ou consulte o tutorial. Esse é o cluster no qual criamos a conexão de serviço, a definição de pod e implantamos o aplicativo de amostra.
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1
Conecte-se ao cluster com o seguinte comando.
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
Crie um Azure Key Vault com o seguinte comando, ou consulte o tutorial. Esse é o serviço de destino que está conectado ao cluster do AKS e o driver CSI sincroniza segredos a partir dele.
az keyvault create \ --resource-group MyResourceGroup \ --name MyKeyVault \ --location EastUS
Crie um segredo no Key Vault com o seguinte comando.
az keyvault secret set \ --vault-name MyKeyVault \ --name ExampleSecret \ --value MyAKSExampleSecret
Criar uma conexão de serviço no AKS com o Service Connector (versão prévia)
Crie uma conexão de serviço entre um cluster do AKS e um Azure Key Vault usando o portal do Microsoft Azure ou a CLI do Azure.
Abra o Serviço do Kubernetes no portal do Microsoft Azure e selecione Conector de Serviço no menu à esquerda.
Selecione Criar e preencha as configurações conforme mostrado abaixo. Deixe as outras configurações com seus valores padrão.
Configuração Opção Descrição Namespace do Kubernetes padrão O namespace em que você precisa da conexão no cluster. Tipo de serviço Key Vault (habilitar CSI) Escolha o Key Vault como o tipo de serviço de destino e marque a opção para habilitar o CSI. Nome da conexão keyvault_conn Use o nome da conexão fornecido pelo Conector de Serviço ou escolha um nome de conexão próprio. Assinatura <MySubscription>
A assinatura do serviço de destino do Azure Key Vault. Key vault <MyKeyVault>
O cofre de chaves de destino ao qual você deseja se conectar. Tipo de cliente Python A linguagem de código ou a estrutura que você usa para se conectar ao serviço de destino. Depois que a conexão for criada, a página do conector de serviço exibirá informações sobre a nova conexão.
Testar a conexão
Clone o repositório de exemplo:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Vá para a pasta de amostra do repositório do Azure Key Vault:
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
Substitua os espaços reservados no arquivo
secret_provider_class.yaml
na pastaazure-keyvault-csi-provider
.- Substitua
<AZURE_KEYVAULT_NAME>
pelo nome do cofre de chaves que criamos e conectamos. Você pode obter o valor no portal do Conector de Serviço do Azure. - Substitua
<AZURE_KEYVAULT_TENANTID>
pela ID do locatário do cofre de chaves. Você pode obter o valor no portal do Conector de Serviço do Azure. - Substitua
<AZURE_KEYVAULT_CLIENTID>
pela ID do cliente de identidade do complementoazureKeyvaultSecretsProvider
. Você pode obter o valor no portal do Conector de Serviço do Azure. - Substitua
<KEYVAULT_SECRET_NAME>
pelo nome secreto do cofre de chaves que criamos, por exemplo,ExampleSecret
- Substitua
Implante os recursos do Kubernetes em seu cluster com o comando
kubectl apply
. Instalekubectl
localmente usando o comando az aks install-cli se ele não estiver instalado.- Implante o CRD
SecretProviderClass
.
kubectl apply -f secret_provider_class.yaml
- Implante o
pod
. O comando cria um pod chamadosc-demo-keyvault-csi
no namespace padrão do seu cluster do AKS.
kubectl apply -f pod.yaml
- Implante o CRD
Verifique se a implantação foi bem-sucedida visualizando o pod com
kubectl
.kubectl get pod/sc-demo-keyvault-csi
Depois que o pod é iniciado, o conteúdo montado no caminho do volume especificado no YAML de implantação fica disponível. Use os comandos a seguir para validar seus segredos e imprimir um segredo de teste.
- Mostre os segredos mantidos no repositório de segredos usando o comando a seguir.
kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
- Exiba um segredo no repositório usando o comando a seguir. Este comando de exemplo mostra o segredo de teste
ExampleSecret
.
kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
Limpar os recursos
Se você não precisar reutilizar os recursos que criou neste tutorial, exclua todos os recursos que criou excluindo seu grupo de recursos.
az group delete \
--resource-group MyResourceGroup
Próximas etapas
Leia os artigos a seguir para saber mais sobre os conceitos do Conector de Serviço e como ele ajuda o AKS a se conectar aos serviços.