Définir un service canonique

Remarque : Les services canoniques sont automatiquement pris en charge dans les versions 1.6.8 et ultérieures d'Anthos Service Mesh.

Les services canoniques sont un groupe de charges de travail qui mettent en œuvre les mêmes services et API. Pour les types de charges de travail compatibles, Anthos Service Mesh crée automatiquement des ressources de service canonique basées sur les informations existantes en provenance du serveur d'API Kubernetes. Cette page explique quels libellés définissent automatiquement les services canoniques et comment ajuster manuellement les limites de vos services.

Les types d'instances de charge de travail actuellement compatibles sont les suivants :

  • Pods Kubernetes (y compris via des déploiements Kubernetes, des services d'exécution Kube, etc.)
  • Instances de machine virtuelle

Qu'est-ce qui définit les services canoniques ?

Anthos Service Mesh détermine l'appartenance à un service canonique en lisant le libellé service.istio.io/canonical-name sur la ressource de configuration Kubernetes associée à chaque instance de charge de travail :

  • Pour les pods, le libellé se trouve dans la ressource de pod Kubernetes.
  • Pour les VM, le libellé figure dans la ressource Istio WorkloadEntry.

Les services canoniques ont le même espace de noms Kubernetes que les instances de charge de travail associées et ne peuvent pas appartenir à plusieurs espaces de noms.

Règles d'ajout automatique de libellés

Anthos Service Mesh regroupe automatiquement vos charges de travail au sein des services canoniques sans aucune action de votre part.

Vous n'avez à intervenir que dans les cas suivants :

  • pour ajuster les libellés afin d'améliorer leur lisibilité pour les utilisateurs ;
  • pour ignorer le comportement par défaut.

Ajout automatique de libellés dans les pods Kubernetes

Les services canoniques se concentrent sur les libellés Kubernetes app.kubernetes.io/name et app. Notez que le premier de ces libellés est prioritaire.

Si vous utilisez l'un de ces deux libellés sur vos charges de travail, aucune action supplémentaire n'est nécessaire.

Ajout automatique de libellés dans les machines virtuelles

Pour créer des services canoniques sur vos VM, vous devez ajouter celles-ci à un maillage de services en configurant une ressource WorkloadEntry sur votre serveur d'API Kubernetes.

Ajout manuel de libellés

Pour appliquer ou remplacer manuellement un libellé de service canonique, appliquez le libellé service.istio.io/canonical-name à vos configurations de Pod ou WorkloadEntry.

Ajout manuel de libellés dans les pods Kubernetes

Pour déployer plusieurs pods à la fois à l'aide d'un déploiement, définissez le libellé service.istio.io/canonical-name dans 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:
        ...

Pour appliquer un libellé au service canonique d'un pod unique, ajoutez le libellé service.istio.io/canonical-name à la section labels de la configuration de pod :

apiVersion: v1
kind: Pod
metadata:
  name: my-test-pod
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

Ajout manuel de libellés dans les machines virtuelles

Pour appliquer un libellé au service canonique d'une seule VM/WorkloadEntry, ajoutez le libellé service.istio.io/canonical-name à la section "labels" de votre configuration WorkloadEntry :

apiVersion: networking.istio.io/v1alpha3
kind: WorkloadEntry
metadata:
  name: my-vm-123
  namespace: my-namespace
  labels:
    service.istio.io/canonical-name: my-service
spec:
  ...

Étapes suivantes