Definir un servicio canónico
Nota: Los servicios canónicos son compatibles de forma automática en Cloud Service Mesh versión 1.6.8 y versiones posteriores.
Los servicios canónicos son un grupo de cargas de trabajo que implementan los mismos servicios y las mismas API. En los tipos de carga de trabajo compatibles, Cloud Service Mesh crea recursos de servicio canónico automáticamente en función de la información existente del servidor de la API de Kubernetes. En esta página, se explica qué etiquetas definen de forma automática los servicios canónicos y cómo puedes ajustar los límites de tus servicios de forma manual.
Los tipos de instancias de carga de trabajo compatibles son los siguientes:
- Pods de Kubernetes (incluidas las implementaciones de Kubernetes, KubeRun, etcétera)
- Servicios externos a la malla (específicamente, recursos ServiceEntry con una ubicación de
MESH_EXTERNAL)
Qué define a los servicios canónicos
Cloud Service Mesh determina la membresía del servicio canónico mediante la lectura de la
service.istio.io/canonical-name
etiqueta
en el recurso de configuración de Kubernetes asociado a cada instancia de carga de trabajo:
- Para los pods, la etiqueta está en el recurso de pod de Kubernetes.
- Para los servicios externos, la etiqueta está en el recurso ServiceEntry de Istio.
Los servicios canónicos tienen el mismo espacio de nombres de Kubernetes que sus instancias de carga de trabajo asociadas y no pueden abarcar espacios de nombres.
Reglas de etiquetado automático
Cloud Service Mesh agrupa automáticamente tus cargas de trabajo en servicios canónicos sin que tengas que realizar ninguna acción. Solo tienes que hacer lo siguiente:
- Ajustar las etiquetas para la claridad del usuario o del lector
- Anular el comportamiento predeterminado
Etiquetado automático en pods de Kubernetes
Los servicios canónicos se enfocan en las etiquetas app.kubernetes.io/name y app de Kubernetes. Ten en cuenta que la etiqueta anterior tiene prioridad.
Si usas alguna de estas dos etiquetas en tus cargas de trabajo, no se requiere trabajo adicional.
Etiquetado manual
Para aplicar o anular de forma manual una etiqueta de servicio canónico, aplica la etiqueta service.istio.io/canonical-name a las configuraciones de recursos de carga de trabajo compatibles.
Para que un servicio externo se reconozca como un servicio canónico, debes etiquetar manualmente el ServiceEntry aplicable.
Etiquetado manual en los pods de Kubernetes
Para implementar muchos pods a la vez con una
implementación,
configura la etiqueta service.istio.io/canonical-name en el PodTemplateSpec:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
replicas: 3
template:
metadata:
labels:
service.istio.io/canonical-name: my-service
spec:
containers:
...
Para etiquetar el servicio canónico de un solo pod, agrega la etiqueta service.istio.io/canonical-name a la sección labels de tu configuración de pod:
apiVersion: v1
kind: Pod
metadata:
name: my-test-pod
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
Etiqueta servicios externos de forma manual
Para etiquetar el servicio canónico de un solo servicio externo o ServiceEntry, agrega la etiqueta service.istio.io/canonical-name a la sección "labels" de tu configuración de ServiceEntry:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: example-com
namespace: my-namespace
labels:
service.istio.io/canonical-name: an-external-service
spec:
location: MESH_EXTERNAL
...
¿Qué sigue?
- Más información sobre los servicios canónicos
- Más información sobre las prácticas recomendadas para los servicios canónicos