Compartir a través de


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 un pod 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

Creación de recursos de Azure

  1. Cree un grupo de recursos para este tutorial.

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. 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
    
  3. Conéctese al clúster con el siguiente comando.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. 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
    
  5. 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.

  1. Abra el servicio Kubernetes en Azure Portal y seleccioneConector de servicio en el menú de la izquierda.

  2. 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.
  3. Una vez creada la conexión, la página Conector de servicio muestra información sobre la nueva conexión.

    Captura de pantalla de Azure Portal para ver los recursos de Kubernetes creados por Conector de servicio.

Comprobación de la conexión

  1. Clone el repositorio de ejemplo:

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. Vaya a la carpeta de ejemplo del repositorio para Azure Key Vault:

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. Reemplace los marcadores de posición del archivo secret_provider_class.yaml en la carpeta azure-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 complemento azureKeyvaultSecretsProvider. 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.
  4. Implemente los recursos de Kubernetes en el clúster con el comando kubectl apply. Instale kubectl de forma local mediante el comando az aks install-cli, si no está instalado.

    1. Implemente los CRD SecretProviderClass.
    kubectl apply -f secret_provider_class.yaml
    
    1. Implemente el pod. El comando crea un pod denominado sc-demo-keyvault-csi en el espacio de nombres predeterminado del clúster de AKS.
    kubectl apply -f pod.yaml
    
  5. Visualice el pod con kubectl para comprobar que la implementación se realiza correctamente.

    kubectl get pod/sc-demo-keyvault-csi
    
  6. 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.