Compartir a través de


Uso de conector de servicio en Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) es uno de los servicios de proceso admitidos por el conector de servicio.

Este artículo trata sobre:

  • Diferencias entre Service Connector para AKS y otros servicios de computación.
  • Las operaciones ejecutadas en el clúster durante la creación de una conexión de servicio.
  • Las operaciones ejecutadas en los servicios de destino durante la creación de una conexión de servicio.
  • Uso de los recursos de Kubernetes creados por Service Connector.
  • Solución de problemas y visualización de registros de Service Connector en un clúster de AKS.

Requisitos previos

Diferencias entre Service Connector de AKS y otros servicios de cómputo

Service Connector para AKS difiere de cómo funciona con otros servicios de proceso admitidos por Service Connector de varias maneras. A continuación se describen las opciones y comportamientos específicos de AKS para cada operación de API.

Creación

A continuación se enumeran las opciones de creación específicas de AKS. Consulte las guías de inicio rápido del portal de Azure o la CLI de Azure para aprender a crear una nueva conexión en AKS.

  • Service Connector para AKS requiere el Kubernetes namespace parámetro para especificar dónde crear los recursos de Kubernetes. De forma predeterminada, usa el default espacio de nombres .
  • Service Connector para AKS admite Workload Identity como opción de autenticación de credenciales seguras, mientras que otros servicios de proceso ofrecen System Managed Identity y User Managed Identity opciones.
  • Cuando se usa Azure Key Vault como servicio de destino con el controlador CSI del almacén secreto habilitado, Service Connector usa la identidad administrada asignada por el usuario del complemento de AKS azure-keyvault-secrets-provider para la autenticación, sin necesidad de que los usuarios especifiquen el tipo de autenticación.
  • Service Connector para AKS solo admite la Firewall Rules opción de red, mientras que otros servicios de proceso también pueden admitir Private Link y Virtual Network opciones.

Enumerar configuraciones

Service Connector para AKS solo muestra configuraciones sin credenciales en las vistas de configuración de lista. Los usuarios deben comprobar manualmente las credenciales en el recurso de Kubernetes asociado si es necesario.

Con el comando de la CLI de Azure az aks connection list-configuration, el valor de una configuración de credenciales es una cadena vacía. En Azure Portal, el valor de una configuración de credenciales está oculto, como se muestra a continuación.

Captura de pantalla de la configuración de la lista de conexiones de AKS.

Validación

Service Connector para AKS no valida los cambios en los valores de configuración realizados en el clúster del usuario, ya sean configuraciones de credenciales o que no son de credenciales. Sin embargo, Service Connector realiza las siguientes validaciones, como sucede con otros servicios de proceso:

  • Comprobación de la existencia del servicio de destino
  • Comprobación de las reglas de firewall de IP para el acceso al servicio de destino
  • Garantía de la asignación de roles para la identidad de carga de trabajo para acceder al servicio de destino

La salida del comando de la CLI de Azure az aks connection validate es siempre success. Lo mismo se aplica a Azure Portal, como se muestra a continuación.

Captura de pantalla de la validación de la conexión de AKS.

Operaciones realizadas por conector de servicio en el clúster de AKS

Las operaciones realizadas por Service Connector en el clúster de AKS varían en función de los servicios de destino y los tipos de autenticación seleccionados al crear una conexión de servicio. A continuación se enumeran las posibles operaciones realizadas por Service Connector.

Adición de la extensión Service Connector Kubernetes

Se agrega una extensión de Kubernetes denominada sc-extension al clúster la primera vez que se crea una conexión de servicio. Más adelante, la extensión ayuda a crear recursos de Kubernetes en el clúster del usuario, siempre que una solicitud de conexión de servicio llegue a Service Connector. La extensión se encuentra en el clúster de AKS del usuario en Azure Portal, en el menú Extensiones y aplicaciones .

Recorte de pantalla de Azure Portal, vea la extensión AKS.

Los metadatos de la conexión del clúster también se almacenan en la extensión. Desinstalar la extensión hace que todas las conexiones del clúster sean inaccesibles. El operador de extensión se hospeda en el espacio de nombres del clúster sc-system.

Creación de los recursos de Kubernetes

Service Connector crea recursos de Kubernetes en el espacio de nombres que el usuario especifica al crear la conexión de servicio. Los recursos de Kubernetes almacenan la información de conexión que necesitan las definiciones de carga de trabajo del usuario o el código de aplicación para comunicarse con los servicios de destino. Según el tipo de autenticación, se crean distintos recursos de Kubernetes. Para los tipos de autenticación Connection String y Service Principal se crea un secreto de Kubernetes. Para el tipo de autenticación Workload Identity, también se crea una cuenta de servicio de Kubernetes además de un secreto de Kubernetes.

Puede encontrar los recursos de Kubernetes creados por Conector de servicio para cada conexión de servicio en Azure Portal en el recurso de Kubernetes, en el menú Service Connector.

Recorte de pantalla de Azure Portal, vea Los recursos de Kubernetes creados por Conector de servicio.

La eliminación de una conexión de servicio no elimina el recurso de Kubernetes asociado. Si es necesario, quite el recurso manualmente, mediante, por ejemplo, el comando kubectl delete.

Habilitación del complemento de azureKeyvaultSecretsProvider

Si el servicio de destino es Azure Key Vault y el controlador CSI del Almacén de Secretos está habilitado, el Service Connector activa la función adicional azureKeyvaultSecretsProvider para el clúster.

Recorte de pantalla de Azure Portal en la que se habilita el controlador CSI para keyvault al crear una conexión.

Siga el tutorial Conexión a Azure Key Vault mediante el controlador CSI para configurar una conexión a Azure Key Vault mediante el controlador CSI de Secret Store.

Habilitación de la identidad de carga de trabajo y el emisor de OpenID Connect (OIDC)

Si el tipo de autenticación es Workload Identity, Service Connector habilita la identidad de carga de trabajo y el emisor de OIDC para el clúster.

Recorte de pantalla de Azure Portal, mediante la identidad de carga de trabajo para crear una conexión.

Si el tipo de autenticación es Workload Identity, se necesita una identidad administrada asignada por el usuario para crear la credencial de identidad federada. Obtenga más información sobre las identidades de carga de trabajo o consulte el siguiente tutorial para configurar una conexión a Azure Storage mediante una identidad de carga de trabajo.

Operaciones realizadas por Service Connector en los servicios de destino

Service Connector para AKS realiza las mismas operaciones en los servicios de destino que otros servicios de proceso. Sin embargo, las operaciones varían en función de los tipos de servicio de destino y los métodos de autenticación. A continuación se enumeran algunas operaciones posibles.

Obtención de configuraciones de conexión

Service Connector recupera las configuraciones de conexión necesarias del servicio de destino y las establece como un secreto de Kubernetes en el clúster del usuario. Las configuraciones de conexión varían en función del tipo de servicio de destino y del método de autenticación:

  • Para el Connection String tipo de autenticación, la configuración normalmente incluye un secreto de servicio o una cadena de conexión.
  • Normalmente, para el tipo de autenticación Workload Identity, contiene el punto de conexión del servicio.
  • Para el tipo de autenticación Service Principal, contiene el id. de inquilino, el id. de cliente y el secreto de cliente de la entidad de servicio.

Para obtener información detallada sobre servicios de destino específicos, consulte la documentación correspondiente, como la guía de servicios de Azure AI .

Creación de reglas de firewall basadas en IP

Service Connector recupera la dirección IP pública saliente del clúster de AKS y crea reglas de firewall de IP en el servicio de destino para permitir el acceso de red desde el clúster.

Creación de asignaciones de roles de Microsoft Entra ID

Al usar el Workload Identity tipo de autenticación, Service Connector crea automáticamente una asignación de roles para la identidad. El rol asignado varía en función del servicio de destino para garantizar el acceso adecuado. Los usuarios también pueden personalizar las asignaciones de roles según sea necesario. Para obtener más información, consulte Personalización de roles.

Uso de los recursos de Kubernetes creados por conector de servicio

Service Connector crea varios recursos de Kubernetes en función del tipo de servicio de destino y del tipo de autenticación seleccionado. En las secciones siguientes se muestra cómo usar los recursos de Kubernetes creados por conector de servicio en la definición de cargas de trabajo del clúster y el código de la aplicación.

Secreto de Kubernetes

Se crea un secreto de Kubernetes cuando el tipo de autenticación se establece en Connection String o Service Principal. La definición de la carga de trabajo del clúster puede hacer referencia directamente al secreto. El siguiente fragmento proporciona un ejemplo.

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

El código de la aplicación puede consumir la cadena de conexión en el secreto de una variable de entorno. Consulte los siguientes código de ejemplo para obtener más información sobre los nombres de las variables de entorno y cómo usarlos en el código de la aplicación para autenticarse en diferentes servicios de destino.

Cuenta de servicio de Kubernetes

Una cuenta de servicio de Kubernetes y un secreto se crean cuando el tipo de autenticación se establece en Workload Identity. La definición de la carga de trabajo del clúster puede hacer referencia a la cuenta de servicio y al secreto para autenticarse a través de la identidad de la carga de trabajo. El siguiente fragmento proporciona un ejemplo.

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

Consulte el siguiente tutorial para obtener información sobre cómo conectarse a Azure Storage mediante la identidad de carga de trabajo.

Solución de problemas y visualización de registros

Si se produce un error y no se puede resolver reintentando al crear una conexión de servicio, los métodos siguientes ayudan a recopilar más información para solucionar problemas.

Comprobación de la extensión de Kubernetes de conector de servicio

La extensión de Kubernetes de conector de servicio se basa en Extensiones de clúster de Kubernetes habilitadas para Azure Arc. Use los siguientes comandos para comprobar si se producen errores durante el proceso de instalación o actualización de la extensión.

  1. Instale la extensión CLI de Azure k8s-extension.

    az extension add --name k8s-extension
    
  2. Recupere el estado de la extensión conector de servicio. Compruebe la propiedad statuses en la salida del comando para identificar los errores.

    az k8s-extension show \
        --resource-group MyClusterResourceGroup \
        --cluster-name MyCluster \
        --cluster-type managedClusters \
        --name sc-extension
    

Comprobación de los registros del clúster de Kubernetes

Si se produce un error durante la instalación de la extensión y el mensaje de error de la statuses propiedad no proporciona información suficiente, puede investigar aún más comprobando los registros de Kubernetes con los pasos siguientes.

  1. Conéctese al clúster AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. La extensión del conector de servicio se instala en el espacio de nombres sc-system mediante un gráfico de Helm. Compruebe el espacio de nombres y la versión de Helm mediante los siguientes comandos.

    • Asegúrese de que el espacio de nombres existe.

      kubectl get ns
      
    • Compruebe el estado de la versión de Helm.

      helm list -n sc-system
      
  3. Durante la instalación o actualización de la extensión, un trabajo de Kubernetes denominado sc-job crea los recursos de Kubernetes para la conexión de servicio. Un error de ejecución del trabajo normalmente hace que se produzca un error en la extensión. Ejecute los siguientes comandos para comprobar el estado del trabajo. Si sc-job no existe en el espacio de nombres sc-system, debería haberse ejecutado correctamente. Este trabajo está diseñado para eliminarse automáticamente después de la ejecución correcta.

    • Compruebe que el trabajo exista.

      kubectl get job -n sc-system
      
    • Obtenga el estado del trabajo.

      kubectl describe job/sc-job -n sc-system
      
    • Vea los registros del trabajo.

      kubectl logs job/sc-job -n sc-system
      

Errores comunes y mitigaciones

Error de creación de extensiones

Mensaje de error:

  • Unable to get a response from the agent in time.
  • Extension pods can't be scheduled if all the node pools in the cluster are "CriticalAddonsOnly" tainted

Mitigación:

Referirse a errores de creación de extensiones

Errores de Helm

Mensajes de error:

  • Unable to download the Helm chart from the repo URL

Este error se debe a problemas de conectividad que se producen entre el clúster y el firewall además de problemas de bloqueo de salida. Para resolver este problema, consulte Reglas de FQDN y red de salida para clústeres de Azure Kubernetes Service (AKS), y agregue el FQDN necesario para extraer el gráfico de Helm de Service Connector: scaksextension.azurecr.io

Mensajes de error:

  • Timed out waiting for resource readiness
  • Helm chart rendering failed with given values
  • Resource already exists in your cluster
  • Operation is already in progress for Helm

Mitigación:

Consulte Errores de Helm

Conflicto

Mensaje de error:

Operation returned an invalid status code: Conflict.

Motivo:

Este error suele producirse al intentar crear una conexión de servicio mientras el clúster de Azure Kubernetes Service (AKS) está en un estado de actualización. La actualización de la conexión de servicio entra en conflicto con la actualización en curso. Este error también se produce cuando la suscripción no está registrada con el proveedor de recursos Microsoft.KubernetesConfiguration.

Mitigación:

  1. Asegúrese de que el clúster está en un estado "Correcto" y vuelva a intentar la creación.

  2. Ejecute el siguiente comando para asegurarse de que la suscripción está registrada con el proveedor de recursos Microsoft.KubernetesConfiguration.

    az provider register -n Microsoft.KubernetesConfiguration
    

Acceso a recursos no autorizado

Mensaje de error:

You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Motivo:

Conector de servicio requiere permisos para operar los recursos de Azure a los que quiere conectarse, con el fin de realizar operaciones de conexión en su nombre. Este error indica la falta de permisos necesarios en algunos recursos de Azure.

Mitigación:

Compruebe los permisos de los recursos de Azure especificados en el mensaje de error. Obtenga los permisos necesarios y vuelva a intentar la creación.

Falta de registro de suscripción

Mensaje de error:

The subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration'

Motivo:

El conector de servicio requiere que la suscripción se registre con Microsoft.KubernetesConfiguration, que es el proveedor de recursos para Extensiones de clúster de Kubernetes habilitadas para Azure Arc.

Mitigación:

Para registrar el proveedor de recursos Microsoft.KubernetesConfiguration, ejecute el comando siguiente. Para obtener más información sobre los errores de registro del proveedor de recursos, consulte Resolución de errores para el registro del proveedor de recursos.

az provider register -n Microsoft.KubernetesConfiguration

Paso siguiente

Obtenga información acerca de cómo integrar diferentes servicios de destino y lea sobre sus opciones de configuración y métodos de autenticación.