Tutorial: Conexión a Azure Storage en AKS mediante Service Connector con la identidad de carga de trabajo

En este tutorial, aprenderá a usar Service Connector para conectar una cuenta de Azure Storage a un pod de un clúster de Azure Kubernetes Service (AKS) mediante la identidad de carga de trabajo. Debe realizar las siguientes tareas:

  • Cree un clúster de AKS y una cuenta de Azure Storage.
  • Cree una conexión entre el clúster de AKS y la cuenta de Azure Storage mediante Service Connector.
  • Clone una aplicación de ejemplo que se conecte a la cuenta de Azure Storage desde el clúster de AKS.
  • Implemente la aplicación en un pod en el clúster de AKS y pruebe la conexión.
  • Limpieza de recursos.

Requisitos previos

Creación de recursos de Azure

  1. Inicie sesión en Azure ejecutando az login y siga las indicaciones.

  2. Cree un grupo de recursos de Azure para este tutorial, reemplazando el marcador de posición <region> con un valor válido. El location debe ser una región de Azure en la que la suscripción tenga suficiente cuota de proceso para los recursos de Azure y sin restricciones en ninguno de los servicios.

    az group create \
        --name MyResourceGroup \
        --location <region>
    
  3. Cree un clúster de AKS para que contenga la conexión de servicio, la definición de pod y la aplicación de ejemplo mediante la ejecución del comando siguiente. Para obtener más información, consulte Quickstart: Implementación de un clúster de Azure Kubernetes Service (AKS) mediante CLI de Azure.

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  4. Para conectarse al clúster, ejecute el comando siguiente.

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  5. Cree una cuenta de Azure Storage para que sea el servicio de destino al que se conecta el clúster de AKS y con la que interactúa la aplicación de ejemplo. Para más información, consulte Creación de una cuenta de Azure Storage. Ejecute el comando siguiente, reemplazando <storageaccountname> por un nombre de 3-24 caracteres en minúsculas o numéricos y que sea único en Azure.

    az storage account create \
        --resource-group MyResourceGroup \
        --name <storageaccountname> \
        --sku Standard_LRS
    
  6. Cree un registro de contenedor de Azure para hospedar la imagen de contenedor de la aplicación consumida por la definición de pod de AKS. Para obtener más información, consulte Quickstart: Creación de un registro de contenedor de Azure mediante el portal de Azure. Ejecute el comando siguiente, reemplazando <registryname> por un nombre de 5-50 caracteres en minúsculas o numéricos y que sea único en Azure.

    az acr create \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --sku Standard
    
  7. Habilite la extracción anónima para que el clúster de AKS pueda consumir las imágenes del Registro. Reemplace el marcador de posición <registryname> con su nombre de registro.

    az acr update \
        --resource-group MyResourceGroup \
        --name <registryname> \
        --anonymous-pull-enabled
    
  8. Ejecute el comando siguiente para crear una identidad administrada asignada por el usuario que la creación de la conexión de servicio pueda usar para habilitar la identidad de carga de trabajo para las cargas de trabajo de AKS. Para obtener más información, consulte Administrar identidades administradas asignadas por el usuario mediante el portal de Azure.

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Creación de una conexión de servicio mediante Service Connector

Cree una conexión de servicio entre el clúster de AKS y la cuenta de Azure Storage mediante CLI de Azure o el portal de Azure.

Ejecute el siguiente comando CLI de Azure para crear una conexión de servicio a la cuenta de almacenamiento Azure. Reemplace por <storageaccountname> el nombre de la cuenta de almacenamiento y <user-identity-resource-id> por el identificador de recurso de identidad administrada asignada por el usuario.

Puede obtener el identificador de recurso de identidad administrada asignada por el usuario en la salida del comando anterior az identity create o usar el formato /subscriptions/<subscription-id>/resourceGroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyIdentity.

az aks connection create storage-blob \
  --resource-group MyResourceGroup \
  --name MyAKSCluster \
  --target-resource-group MyResourceGroup \
  --account <storageaccountname> \
  --workload-identity <user-identity-resource-id>

Una vez creada la conexión, la página Azure portal Service Connector muestra información sobre la nueva conexión. Puede usar esta información al editar el archivo pod.yaml más adelante en este tutorial.

Screenshot del portal de Azure, ver los recursos de Kubernetes creados por Service Connector.

Creación de la aplicación de ejemplo

  1. Clone el repositorio de ejemplo y cambie al directorio que contiene la aplicación de ejemplo. Ejecute los comandos restantes desde esta carpeta.

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    cd serviceconnector-aks-samples/azure-storage-workload-identity
    
  2. Compile e inserte las imágenes en el registro de contenedor mediante el az acr build comando . Reemplace el marcador de posición <registryname> con el nombre de su registro.

    az acr build --registry <registryname> --image sc-demo-storage-identity:latest ./
    
  3. Vea la imagen en el registro de contenedores mediante el comando az acr repository list. Reemplace el marcador de posición <registryname> con su nombre de registro.

    az acr repository list --name <registryname> --output table
    

Ejecución de la aplicación y prueba de la conexión

  1. Reemplace los siguientes marcadores de posición en el archivo pod.yaml en la carpeta de la aplicación local:

    • <YourContainerImage>: reemplace por el nombre de la imagen en el registro de contenedor, por ejemplo <registryname>.azurecr.io/sc-demo-storage-identity:latest.
    • <ServiceAccountCreatedByServiceConnector>: Reemplace con la cuenta de servicio "Service Connector" creada tras establecer la conexión. Puede comprobar el nombre de la cuenta de servicio en la página del conector del servicio de clúster de AKS en el portal de Azure.
    • <SecretCreatedByServiceConnector>: reemplace por el conector de servicio secreto creado después de la creación de la conexión. Puede comprobar el nombre de la cuenta de servicio en la página del conector del servicio de clúster de AKS en el portal de Azure.
  2. Implemente el pod en el clúster mediante kubectl apply. El comando crea un pod denominado sc-demo-storage-identity en el espacio de nombres predeterminado del clúster de AKS.

    kubectl apply -f pod.yaml
    
  3. Compruebe que el despliegue sea exitoso visualizando el pod usando kubectl.

    kubectl get pod/sc-demo-storage-identity
    
  4. Compruebe que la conexión se establece mediante la visualización de los registros mediante kubectl.

    kubectl logs pod/sc-demo-storage-identity
    

Limpieza de recursos

Si ya no necesita los recursos de Azure creados para este tutorial, puede eliminarlos eliminando el grupo de recursos MyResourceGroup.

az group delete \
  --resource-group MyResourceGroup