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 Service Connector. Este artículo tiene como objetivo ayudarle a comprender lo siguiente:

  • Qué operaciones se realizan en el clúster al crear una conexión de servicio.
  • Uso de los recursos de Kubernetes creados por Service Connector.
  • Solución de problemas y visualización de los registros de Conector de servicio en un clúster de AKS.

Requisitos previos

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

En función de los distintos servicios de destino y tipos de autenticación seleccionados al crear una conexión de servicio, Service Connector realiza diferentes operaciones en el clúster de AKS. A continuación se enumeran las posibles operaciones realizadas por Service Connector.

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

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 conector de servicio. Puede encontrar la extensión en el clúster de AKS en Azure Portal, en el menú Extensiones y aplicaciones.

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

La extensión también es donde se almacenan los metadatos de las conexiones de clúster. La desinstalación de la extensión hace que todas las conexiones del clúster no estén disponibles. El operador de extensión se hospeda en el espacio de nombres sc-system del clúster.

Creación de los recursos de Kubernetes

Conector de servicio crea algunos recursos de Kubernetes en el espacio de nombres que especificó el usuario al crear una 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 la aplicación para comunicarse con los servicios de destino. En función de los distintos tipos 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.

Captura 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 el azureKeyvaultSecretsProvider complemento

Si el servicio de destino es Azure Key Vault y el controlador CSI del almacén secreto está habilitado al crear una conexión de servicio, Service Connector habilita el complemento azureKeyvaultSecretsProvider para el clúster.

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

Siga el tutorial de 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 al crear una conexión de servicio, Service Connector habilita la identidad de carga de trabajo y el emisor de OIDC para el clúster.

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

Cuando 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 qué son las identidades de carga de trabajo o siga el tutorial para configurar una conexión a Azure Storage mediante la identidad de carga de trabajo.

Uso de los recursos de Kubernetes creados por conector de servicio

Conector de servicio crea varios recursos de Kubernetes en función del tipo de servicio de destino y del tipo de autenticación. 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 comandos siguientes para comprobar si hay errores que se produjeron 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 propiedad statuses 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 conector de servicio se instala en el sc-system espacio de nombres 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.

Mitigación:

Referirse a errores de creación de extensiones

Errores de Helm

Mensaje de error:

  • Timed out waiting for resource readiness
  • Unable to download the Helm chart from the repo URL
  • 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 sobre cómo integrar diferentes servicios de destino y lea sobre sus opciones de configuración y métodos de autenticación.