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
- En esta guía se da por supuesto que ya conoce los conceptos básicos de Service Connector.
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.
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.
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.
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.
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.
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 propiedad statuses
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 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
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
.
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:
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 sobre cómo integrar diferentes servicios de destino y lea sobre sus opciones de configuración y métodos de autenticación.