Información sobre el estado del cliente de Cloud Service Mesh
Cuando uses Cloud Service Mesh para controlar las redes de tu aplicación, considera los siguientes dos componentes principales:
- La capa de la infraestructura. La capa de infraestructura, como proxies de sidecar de Envoy o bibliotecas de gRPC sin proxy, está configurada para manejar las redes en nombre de tus aplicaciones.
- El plano de control, Cloud Service Mesh. El plano de control genera una configuración para la capa de infraestructura y la distribuye a ella.
Cuando se inicializa un proxy de Envoy o la biblioteca gRPC, usan las APIs de xDS para conectarte a Cloud Service Mesh. El proxy o la biblioteca actúan como cliente para la malla de servicios de Cloud. Después de que se establece una conexión entre el cliente y Cloud Service Mesh envía la información de configuración al y actualiza la configuración según sea necesario.
A veces, es útil comprender con qué clientes están conectados en Cloud Service Mesh o para inspeccionar la configuración que usa Cloud Service Mesh genera para sus clientes. Por ejemplo, es posible que desees depurar un problema o comprender cómo las acciones que realizaste cuando configuraste Cloud Service Mesh afectan la configuración que ven tus clientes.
Cloud Service Mesh admite Servicio de descubrimiento del estado del cliente (CSDS). Debes usar un cliente CSDS para consultar esta API. Esta te permite ver qué clientes están conectados a Cloud Service Mesh inspeccionar la configuración que Cloud Service Mesh genera para sus clientes
El cliente de CSDS es una herramienta de código abierto que puedes obtener en el repositorio de Envoy. En el siguiente diagrama, se ilustra cómo el cliente de CSDS consulta la malla de servicios de Cloud para obtener información sobre la API de CSDS de Cloud Service Mesh.
El cliente de CSDS se conecta a Cloud Service Mesh y presenta un número de proyecto y el nombre de la red y un conjunto de credenciales. Luego, Cloud Service Mesh puede responder con información sobre los diversos clientes de la malla de servicios de Cloud a los que está conectado.
Para obtener más información sobre el cliente CSDS, consulta el archivo README.
Requisitos previos
Para conectarte a la API de CSDS, necesitas un cliente de CSDS. Puedes obtener el cliente de dos maneras:
- Puedes compilar el cliente mediante Cloud Shell.
- Puedes compilar el cliente en una máquina de desarrollo local.
Compila el cliente CSDS con Cloud Shell
Para usar Cloud Shell a fin de compilar el cliente de CSDS, haz lo siguiente:
- Restablece Cloud Shell mediante las instrucciones que aparecen en Inhabilita o restablece Cloud Shell. Esto garantiza que la configuración existente no interfiera en tu compilación.
- En la consola de Google Cloud, abre una sesión de Cloud Shell nueva.
Ejecuta el siguiente comando a fin de obtener el código fuente que usas para compilar el cliente de CSDS:
git clone https://github.com/envoyproxy/envoy-tools.git
Navega al directorio del cliente de CSDS y ejecuta los siguientes comandos:
cd envoy-tools/csds-client/ make init make build
Una vez que se complete la compilación, pruébala con el siguiente comando:
csds-client -help
Si la compilación tiene éxito, verás el texto de ayuda para el cliente.
Compila el cliente de CSDS en una máquina de desarrollo local
Puedes descargar y compilar un cliente de CSDS en una máquina local; para ello, sigue las instrucciones del archivo README en el repositorio de código abierto. Para hacerlo, también debes tener Go y la herramienta de make
configurados en tu entorno. Si prefieres no hacer esto, usa las instrucciones anteriores para Cloud Shell, en las que se te proporcionan Go y la herramienta de make
.
Requisitos previos adicionales
Asegúrate de que el ID de nodo de cada cliente sea único dentro de la malla de servicios. Si varios clientes comparten el mismo ID de nodo, solo se aplica una configuración mostrada: la configuración del cliente que más recientemente conectadas a la malla de servicios de Cloud.
Si usas los paquetes de referencia de Google, no necesitas configurar manualmente el ID del nodo en tus archivos de arranque; se genera un ID de nodo para ti. Si no usas los paquetes de referencia, debes configurar manualmente el ID del nodo en cada uno de tus archivos de arranque.
Asegúrate de tener acceso a una cuenta de usuario que tenga las Permisos de Identity and Access Management (IAM) necesarios para la configuración Malla de servicios de Cloud. En las siguientes instrucciones, se usa Google Cloud CLI para generar y proporcionar de forma automática las credenciales que necesita el cliente de CSDS. Como alternativa, puedes usar el cliente de CSDS y proporcionar las credenciales directamente.
Determina qué clientes están conectados actualmente a Cloud Service Mesh
Puedes usar el cliente CSDS para determinar qué clientes están conectados a tu Configuración de la malla de servicios de Cloud.
Para obtener esta información, necesitas los siguientes detalles:
El ID del proyecto desde el que se generaron las credenciales.
Si usas las APIs de enrutamiento de servicios, una de las siguientes opciones, según en qué recurso recupera el cliente xDS:
Si utilizas APIs más antiguas, el nombre de la red de VPC que especificaste cuando configuraste la malla de servicios en la nube. Esta red es la que especifica la regla de reenvío del mapa de reglas de enrutamiento.
APIs de enrutamiento de servicios
Desde una cuenta que tenga los permisos correctos, ejecuta el siguiente comando:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Crea un archivo nuevo en formato YAML con el siguiente contenido.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE"
Reemplaza los siguientes valores:
PROJECT_NUMBER
: El ID del proyectoMESH_OR_SCOPE
: Si el cliente de xDS recupera un recurso de malla, usa un prefijo demesh:
seguido del nombre real de la malla. Si el cliente de xDS recupera un recurso de puerta de enlace, usa un prefijo descope:
seguido del nombre del parámetro de alcance.
Ejecuta el cliente de CSDS, que usa las credenciales que genera la CLI de gcloud. Reemplaza
PATH_TO_CSDS_REQUEST_YAML_FILE
por la ruta de acceso al archivo YAML que creaste en el paso anterior.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Debería ver un resultado similar al siguiente:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
En la columna
Client ID
, se muestran los IDs de cliente de los clientes que están conectados a Cloud Service Mesh. Estos IDs de cliente se proporcionan mediante el camponode_id
en el archivo de arranque que usa Envoy o gRPC sin proxy cuando se conectan a la malla de servicios en la nube.
APIs anteriores
Desde una cuenta que tiene la permisos correctos Ejecuta el siguiente comando:
gcloud auth application-default login \ --billing-project=BILLING_PROJECT_ID
Crea un archivo nuevo en formato YAML con el siguiente contenido.
node_matchers: - node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Reemplaza los siguientes valores:
PROJECT_NUMBER
: El ID único de la Proyecto de Google CloudNETWORK_NAME
: Es la red de VPC que especifica la regla de reenvío del mapa de reglas de enrutamiento.
Ejecuta el cliente de CSDS, que usa las credenciales que genera la CLI de gcloud. Reemplaza
PATH_TO_CSDS_REQUEST_YAML_FILE
por la ruta de acceso al archivo YAML que creaste en el paso anterior.csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE
Debería ver un resultado similar al siguiente:
Client ID xDS stream type Config status 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 ADS N/A 603e3524-d1d6-4a9e-9b26-39bcd633a7cb~10.128.0.5 LRS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS N/A 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 LRS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 ADS N/A d9577b61-fa3a-41d6-90bd-11c4fdd2f8c0~10.128.0.4 LRS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 ADS N/A f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6 LRS N/A
La columna
Client ID
muestra los IDs de cliente de los clientes que están conectados en Cloud Service Mesh. Estos IDs de cliente se proporcionan mediante el camponode_id
en el archivo de arranque que usa Envoy o gRPC sin proxy cuando se conectan a la malla de servicios de Cloud.
Inspecciona la configuración de un cliente específico de Cloud Service Mesh
Puedes inspeccionar la configuración que envía Cloud Service Mesh a un con el ID de cliente que obtuviste en la sección anterior.
Puedes examinar la configuración detallada del proto de recursos para determinar qué versión de la API de xDS usa un cliente específico. Por ejemplo, si ves envoy.api.v2.Cluster
en la configuración, significa que el cliente está usando la API de v2.
Si ves envoy.api.v3.Cluster
en la configuración, significa que el cliente está
con la API v3. Solo se admite xDS v3. Para obtener información sobre cómo migrar de v2 a v3, consulta Cómo migrar de xDS v2 a xDS v3.
APIs de Service Enrutamiento
Actualiza el archivo YAML que creaste en Determina qué clientes están conectados actualmente a Cloud Service Mesh. Agrega un campo
node-id
que use el ID de cliente como valor.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_MESH_SCOPE_NAME value: string_match: exact: "MESH_OR_SCOPE_NAME"
Reemplaza los siguientes valores:
CLIENT_ID
: El ID del cliente cuya configuración que estás inspeccionando, por ejemplo,projects/000000/networks/mesh:mesh1/nodes/00000000-0000-0000-0000-00000000~127.0.0.1
PROJECT_NUMBER
: El ID único del proyecto de Google CloudMESH_OR_SCOPE
: Si el cliente de xDS recupera una malla recurso, usa un prefijo demesh:
seguido del nombre real de la malla. si el cliente xDS recupera un recurso de puerta de enlace, usa un prefijo descope:
seguido del nombre del parámetro de permiso
Ejecuta el cliente CSDS. Cuando se ejecuta el cliente, se genera un archivo JSON. Este archivo contiene la configuración que se envía al cliente de la malla de servicios de Cloud.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Reemplaza los siguientes valores:
PATH_TO_CSDS_REQUEST_YAML_FILE
: Es la ruta de acceso a tu Archivo YAMLFILENAME.JSON
: Es un nombre para el archivo que contiene el resultado del cliente de CSDS.
Debería ver un resultado similar al siguiente:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Puedes inspeccionar una configuración xDS detallada si consultas el archivo JSON. Este resultado contiene el estado de las configuraciones de xDS individuales que Cloud Service Mesh envía al cliente mediante una transmisión de gRPC agregada (ADS).
APIs más antiguas
Actualiza el archivo YAML que creaste en Determina qué clientes están conectados actualmente a Cloud Service Mesh. Agrega un campo
node-id
que use el ID de cliente como su valor.node_matchers: - node_id: exact: "CLIENT_ID" node_metadatas: - path: - key: TRAFFICDIRECTOR_GCP_PROJECT_NUMBER value: string_match: exact: "PROJECT_NUMBER" - path: - key: TRAFFICDIRECTOR_NETWORK_NAME value: string_match: exact: "NETWORK_NAME"
Reemplaza los siguientes valores:
CLIENT_ID
: El ID del cliente cuya configuración que estás inspeccionando, por ejemplo,f38a59c1-4428-42f1-be81-e02eb994f9dd~10.128.0.6
PROJECT_NUMBER
: El ID único del proyecto de Google CloudNETWORK_NAME
: La VPC especificada por el regla de reenvío del mapa de reglas de enrutamiento
Ejecuta el cliente CSDS. Cuando ejecutas el cliente, se genera un archivo JSON. Este archivo contiene la configuración que se envía al cliente de la malla de servicios de Cloud.
csds-client \ -service_uri trafficdirector.googleapis.com:443 \ -platform gcp \ -authn_mode auto \ -api_version v3 \ -request_file PATH_TO_CSDS_REQUEST_YAML_FILE \ -output_file FILENAME.JSON
Reemplaza los siguientes valores:
PATH_TO_CSDS_REQUEST_YAML_FILE
: Es la ruta de acceso a tu Archivo YAMLFILENAME.JSON
: Es un nombre para el archivo que contiene el resultado del cliente de CSDS.
Debería ver un resultado similar al siguiente:
Client ID xDS stream type Config status 8576d4bf-8f10-40b2-920b-bb6a7cf9f34a~10.168.0.3 ADS LDS SYNCED RDS SYNCED CDS STALE Config has been saved to FILENAME.JSON
Puedes inspeccionar una configuración xDS detallada si consultas el archivo JSON. Este resultado contiene el estado de las configuraciones de xDS individuales que Cloud Service Mesh envía al cliente mediante una transmisión de gRPC agregada (ADS).
Valores de estados
En la siguiente tabla, se enumeran los valores de estado de configuración xDS que puedes ver.
Valor | Descripción |
---|---|
UNKNOWN |
(Predeterminado) La información del estado no está disponible o se desconoce. |
SYNCED |
Cloud Service Mesh envió la configuración al cliente y recibió un ACK del cliente. |
ERROR |
Cloud Service Mesh envió la configuración al cliente y recibió un
NACK del cliente. |
STALE |
Cloud Service Mesh envió la configuración al cliente, pero no
recibir un ACK o un NACK del cliente |
NOT_SENT |
No se envió la configuración. |
N/A |
El cliente de CSDS no incluía el ID del nodo. Se muestran todas las transmisiones conectadas, pero el estado de la configuración no está disponible. |
Visualización y supervisión
La herramienta de código abierto del cliente de CSDS tiene características adicionales que recomendamos usar, como la visualización y la supervisión continua. Para obtener más información sobre estas funciones, consulta el archivo README en el repositorio de código abierto.
Mensaje de error
Es posible que veas el siguiente mensaje de error del cliente de CSDS cuando habilites la API de Cloud Service Mesh solo en tu proyecto:
rpc error: code = NotFound desc = Requested entity was not found.
Se prevé que esto suceda. La configuración de la malla de servicios de Cloud se define por en cada red. Si aún no creaste una red y ejecutas el cliente de CSDS, verás este mensaje de error.
Limitaciones
- La información del extremo no se incluye en la respuesta de CSDS porque esta información no está disponible en la API de CSDS v3.
- El ID de nodo de cada cliente debe ser único dentro de la malla de servicios. Si hay varios clientes comparten el mismo ID de nodo, solo se devuelve una configuración, el actual del cliente al que se conectó más recientemente la malla de servicios en la nube.
- Es posible que, a veces, veas una barra inversa (\) en el campo de ID de nodo del archivo yaml. Si esto sucede, escapa la barra inversa con una barra invertida adicional cuando consultas la API de CSDS para obtener información sobre la configuración. Este es un problema conocido.
¿Qué sigue?
- Para obtener información general sobre la solución de problemas de Cloud Service Mesh, consulta Soluciona problemas de implementaciones que usan Envoy
- Para resolver problemas de configuración cuando implementas servicios de gRPC sin proxy, consulta Soluciona problemas de implementaciones que usan gRPC sin proxy.