Tutorial: Uso del proveedor de Azure Key Vault para el controlador CSI del almacén de secretos en un clúster de Azure Kubernetes Service (AKS)
Aprenda a conectarse a Azure Key Vault mediante el controlador CSI en un clúster de Azure Kubernetes Service (AKS) con la ayuda de Conector de servicio. En este tutorial, va a completar las siguientes tareas:
- Creación de un clúster de AKS y una instancia de Azure Key Vault.
- Creación de una conexión entre el clúster de AKS y Azure Key Vault con Conector de servicio.
- Creación de un CRD de
SecretProviderClass
y unpod
que consuma el proveedor de CSI para probar la conexión. - Limpieza de recursos.
Importante
Service Connect en AKS se encuentra actualmente en versión preliminar. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.
Advertencia
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación que se describe en este procedimiento requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Instale la CLI de Azure e inicie sesión en esta mediante el comando az login.
- Instale Docker y kubectl para administrar la imagen de contenedor y los recursos de Kubernetes.
- Conocimientos básicos sobre el contenedor y AKS. Empiece por preparar una aplicación para AKS.
Creación de recursos de Azure
Cree un grupo de recursos para este tutorial.
az group create \ --name MyResourceGroup \ --location eastus
Cree un clúster de AKS con el comando siguiente o haga referencia al tutorial. Este es el clúster en el que creamos la conexión de servicio, la definición de pod y en el que implementamos la aplicación de ejemplo.
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1
Conéctese al clúster con el siguiente comando.
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
Cree una instancia de Azure Key Vault con el comando siguiente o haga referencia al tutorial. Este es el servicio de destino que se conecta al clúster de AKS y desde el que el controlador CSI sincroniza los secretos.
az keyvault create \ --resource-group MyResourceGroup \ --name MyKeyVault \ --location EastUS
Cree un secreto en Key Vault con el comando siguiente.
az keyvault secret set \ --vault-name MyKeyVault \ --name ExampleSecret \ --value MyAKSExampleSecret
Creación de una conexión de servicio en AKS con Service Connector (versión preliminar)
Cree una conexión de servicio entre un clúster de AKS y una instancia de Azure Key Vault en Azure Portal o la CLI de Azure.
Abra el servicio Kubernetes en Azure Portal y seleccioneConector de servicio en el menú de la izquierda.
Seleccione Crear y rellene la configuración como se muestra a continuación. Deje las otras opciones de configuración con sus valores predeterminados.
Configuración Opción Descripción Espacio de nombres de Kubernetes default Espacio de nombres donde necesita la conexión en el clúster. Tipo de servicio. Key Vault (habilitar CSI) Elija Key Vault como tipo de servicio de destino y seleccione la opción para habilitar CSI. Nombre de la conexión keyvault_conn Use el nombre de conexión proporcionado por Service Connector o elija su propio nombre de conexión. Suscripción <MySubscription>
Suscripción para el servicio de destino de Azure Key Vault. Key vault <MyKeyVault>
Almacén de claves de destino al que quiere conectarse. Tipo de cliente Python Marco o lenguaje de código que se usa para conectarse al servicio de destino. Una vez creada la conexión, la página Conector de servicio muestra información sobre la nueva conexión.
Comprobación de la conexión
Clone el repositorio de ejemplo:
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Vaya a la carpeta de ejemplo del repositorio para Azure Key Vault:
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
Reemplace los marcadores de posición del archivo
secret_provider_class.yaml
en la carpetaazure-keyvault-csi-provider
.- Reemplace
<AZURE_KEYVAULT_NAME>
por el nombre del almacén de claves que hemos creado y conectado. Puede obtener el valor en Azure Portal del Conector de servicio. - Reemplace
<AZURE_KEYVAULT_TENANTID>
por el id. de inquilino del almacén de claves. Puede obtener el valor en Azure Portal del Conector de servicio. - Reemplace
<AZURE_KEYVAULT_CLIENTID>
por el id. de cliente de identidad del complementoazureKeyvaultSecretsProvider
. Puede obtener el valor en Azure Portal del Conector de servicio. - Reemplace
<KEYVAULT_SECRET_NAME>
por el nombre del secreto del almacén de claves que hemos creado, por ejemplo,ExampleSecret
.
- Reemplace
Implemente los recursos de Kubernetes en el clúster con el comando
kubectl apply
. Instalekubectl
de forma local mediante el comando az aks install-cli, si no está instalado.- Implemente los CRD
SecretProviderClass
.
kubectl apply -f secret_provider_class.yaml
- Implemente el
pod
. El comando crea un pod denominadosc-demo-keyvault-csi
en el espacio de nombres predeterminado del clúster de AKS.
kubectl apply -f pod.yaml
- Implemente los CRD
Visualice el pod con
kubectl
para comprobar que la implementación se realiza correctamente.kubectl get pod/sc-demo-keyvault-csi
Una vez que se inicia el pod, el contenido montado en la ruta del volumen especificada en el archivo YAML de implementación estará disponible. Use los siguientes comandos para validar los secretos e imprimir un secreto de prueba.
- Muestre los secretos contenidos en el almacén de secretos mediante el comando siguiente.
kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
- Muestre un secreto en el almacén con el comando siguiente. Este comando de ejemplo muestra el secreto
ExampleSecret
de prueba.
kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
Limpieza de recursos
Si no necesita volver a usar los recursos que ha creado en este tutorial, elimínelos todos mediante la eliminación del grupo de recursos.
az group delete \
--resource-group MyResourceGroup
Pasos siguientes
Lea los artículos siguientes para obtener más información sobre los conceptos de Service Connector y cómo ayuda a AKS a conectarse a los servicios.