Referencia de la API de Cloud Run
En esta página, se proporciona una referencia para las APIs que se usan para configurar Cloud Service Mesh para las cargas de trabajo de Cloud Run.
API de Cloud Run
API v1
Cloud Service Mesh se habilita con una anotación a nivel de la revisión. El valor de esta anotación es el nombre de la malla de respaldo del clúster de Istio de Cloud Service Mesh.
Anotación | Valor |
---|---|
run.googleapis.com/mesh | projects/PROJECT/locations/global/meshes/MESH |
API de v2
Cloud Service Mesh se habilita con el campo serviceMesh
en el recurso Service
.
API de Istio de Cloud Service Mesh
API de VirtualService
Nombre del campo | Tipo | Descripción del campo |
---|---|---|
puertas de enlace | String [] | Si las puertas de enlace incluyen un "external-mesh", el servicio virtual se aplica solo a las cargas de trabajo que no son de GKE. Si se especifica "mesh" junto con "external-mesh", el servicio virtual se aplicará a las cargas de trabajo que no son de GKE y a las de GKE. |
exportTo | string | Dado que las cargas de trabajo que no son de GKE no tienen el concepto de espacio de nombres, los servicios virtuales "external-mesh" ignorarán el campo exportTo. Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
httpRoute.HTTPMatchRequest.SourceLabels | map<string, string=""></string,> | Se ignorará para los servicios virtuales de "external-mesh". Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
httpRoute.HTTPMatchRequest.SourceNamespace | string | Se ignorará para los servicios virtuales de "external-mesh". Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
httpRoute.HTTPMatchRequest.Gateways | string[] | Se ignorará para los servicios virtuales de "external-mesh". Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
tls | tlsRoute[] | Se ignorará para los servicios virtuales de "external-mesh". Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
tcp | tcpRoute[] | Se ignorará para el servicio virtual de malla externa. Sin embargo, seguirán funcionando para los servicios virtuales que tengan una malla o puertas de enlace, y seguirán funcionando como se espera para las cargas de trabajo de GKE. |
Istio Auto MTLS y Secure Naming
Actualmente, Cloud Service Mesh admite la autenticación mutua de Istio automática y el Secure Naming para las solicitudes entre los servicios de GKE.
En la versión preliminar, las cargas de trabajo que no son de GKE y que se comunican con cargas de trabajo o servicios de GKE no usarán ni la función de mTLS automática de Istio ni la función de nombres seguros. El tráfico será en texto sin formato. Asegúrate de que los servicios de GKE tengan una política de mTLS permisiva (que es la predeterminada de la API de Istio) que acepte el tráfico de mTLS de las cargas de trabajo de GKE y el texto sin formato de las cargas de trabajo que no son de GKE.
Usa el siguiente comando para verificar si PeerAuthentication está en modo permisivo:
# list PeerAuthentication resources in a namespace
# If no PeerAuthentication resource exists in the namespace,
# then it's PERMISSIVE mode (Istio API default)
kubectl get PeerAuthentication -n $NAMESPACE
# for each of the above run the following command
kubectl get PeerAuthentication $PEER-AUTHN -n $NAMESPACE
# Expected Output is as follows:
# MTLS Mode must be PERMISSIVE.
# If the output says STRICT, then please update the policy to PERMISSIVE.
apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
name: $PEER-AUTHN
namespace: $NAMESPACE
spec:
mtls:
mode: PERMISSIVE
Telemetría de MeshConfig
Cloud Service Mesh admite la API de telemetría de MeshConfig para habilitar y, luego, inhabilitar Cloud Logging y Cloud Monitoring para las cargas de trabajo de GKE. Esto también funcionará de manera similar para las cargas de trabajo que no sean de GKE.
Regla del destino
En la versión preliminar, se admitirá la segmentación de DestinationRule
para los servicios virtuales "external-mesh", excepto en los siguientes campos: trafficPolicy.tls
Sidecar API
La API de Sidecar no se aplicará a las cargas de trabajo que no sean de GKE. Las cargas de trabajo que no son de GKE podrán ver todos los servicios virtuales con alcance establecido en "external-mesh" sin que se filtren por ninguna regla de visibilidad de Sidecar.
API de Security: Política de autorización y política de autenticación de solicitudes
Estas no se aplicarán a las cargas de trabajo que no sean de GKE y que actúen como clientes que envían tráfico saliente. Seguirán aplicando cargas de trabajo de GKE que reciben tráfico entrante.
API de GCPBackend
Nombre del campo | Tipo | Descripción del campo |
---|---|---|
GCPBackend | struct | Esquema del recurso GCPBackend. |
TypeMeta | metav1.TypeMeta | Es una estructura integrada para almacenar información de metadatos, como el tipo y la versión de la API. |
ObjectMeta | metav1.ObjectMeta | Es una estructura integrada para almacenar información de metadatos, como el nombre, el espacio de nombres, las etiquetas, las anotaciones, etcétera. |
Spec | GCPBackendSpec | Es la especificación del recurso GCPBackend, que define su estado deseado. |
GCPBackendSpec | struct | Define el estado deseado de GRPCRoute. |
BackendService | *BackendServiceBackend | Define un servicio de backend. (Opcional). |
BackendServiceBackend | struct | Identifica un servicio de backend. |
Nombre | string | Es el nombre de BackendService. Debe tener entre 1 y 49 caracteres, seguir un patrón específico y constar solo de letras minúsculas, guiones y números. |
Ubicación | Ubicación | Ubicación del BackendService. Debe ser global para el CSM. (Regional o global para el LB administrado) De forma predeterminada, se establece en la misma ubicación que el clúster. |
Proyecto | string | Es el ID del proyecto de BackendService. La configuración predeterminada es el mismo proyecto que el clúster de GKE. Debe tener entre 6 y 30 caracteres, y seguir un patrón específico. Actualmente, BackendService y el clúster de GKE deben estar en el mismo proyecto. |
GCPBackendList | struct | Contiene una lista de GCPBackends. |
Elementos | []*GCPBackend | Es un array de punteros a GCPBackend que representa la lista de recursos de GCPBackend. |
ListMeta | metav1.ListMeta | Es una estructura integrada para almacenar información de metadatos de listas, como la versión del recurso y el token de continuación para la paginación. |