Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
- En esta guía se da por supuesto que ya conoce los conceptos básicos del conector de servicio.
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 eldefault
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 ofrecenSystem Managed Identity
yUser 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 admitirPrivate Link
yVirtual 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.
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.
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 .
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.
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.
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.
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.
Instale la extensión CLI de Azure
k8s-extension
.az extension add --name k8s-extension
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.
Conéctese al clúster AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
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
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. Sisc-job
no existe en el espacio de nombressc-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:
Asegúrese de que el clúster está en un estado "Correcto" y vuelva a intentar la creación.
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.