Versione 1.16

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Definizione di un servizio canonico

Nota: i servizi canonici sono supportati automaticamente in Anthos Service Mesh versione 1.6.8 e successive.

I servizi canonici sono un gruppo di carichi di lavoro che implementano gli stessi servizi e API. Per i tipi di carichi di lavoro supportati, Anthos Service Mesh crea automaticamente risorse di servizio canoniche in base alle informazioni esistenti del server API Kubernetes. In questa pagina vengono spiegate quali etichette definiscono automaticamente i servizi canonici e come puoi regolare manualmente i confini dei tuoi servizi.

I tipi di istanze del carico di lavoro attualmente supportati sono:

  • Pod Kubernetes (anche tramite deployment Kubernetes, servizi Kube Run e così via)
  • Istanze di macchine virtuali
  • Servizi mesh esterni (in particolare risorse ServiceEntry con una località MESH_EXTERNAL)

Cosa definisce i servizi canonici

Anthos Service Mesh determina l'appartenenza al servizio canonico leggendo l' service.istio.io/canonical-name etichetta nella risorsa di configurazione Kubernetes associata a ogni istanza del carico di lavoro:

  • Per i pod, l'etichetta si trova nella risorsa pod Kubernetes
  • Per le VM, l'etichetta nella risorsa Istio WorkloadEntry
  • Per i servizi esterni, l'etichetta si trova nella risorsa Istio ServiceEntry

I servizi canonici hanno lo stesso spazio dei nomi Kubernetes delle istanze di carichi di lavoro associate e non possono includere gli spazi dei nomi.

Regole di etichettatura automatica

Anthos Service Mesh raggruppa automaticamente i carichi di lavoro basati su pod e VM in servizi canonici senza alcun intervento da parte tua.

Devi solo intervenire:

  • Regola le etichette per la chiarezza da parte dell'utente/del lettore
  • Ignora il comportamento predefinito.

Etichettatura automatica nei pod Kubernetes

I servizi canonici sono incentrati sulle etichette app.kubernetes.io/name e app di Kubernetes. Tieni presente che la precedente etichetta ha la precedenza.

Se utilizzi una di queste due etichette sui tuoi carichi di lavoro, non sono necessari ulteriori interventi.

Etichettatura automatica nelle macchine virtuali

Per creare servizi canonici sulle VM, devi aggiungerli a un mesh di servizi configurando una risorsa WorkloadEntry nel server API Kubernetes.

Etichettatura manuale

Per applicare manualmente o sostituire un'etichetta di servizio canonico, applica l'etichetta service.istio.io/canonical-name alle configurazioni delle risorse dei carichi di lavoro supportate.

Affinché un servizio esterno venga riconosciuto come servizio canonico, devi etichettare manualmente il ServiceService applicabile.

Etichettatura manuale nei pod Kubernetes

Per eseguire il deployment di più pod contemporaneamente tramite un deployment, imposta l'etichetta service.istio.io/canonical-name su 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:
        ...

Per etichettare il servizio canonico di un singolo pod, aggiungi l'etichetta service.istio.io/canonical-name alla sezione labels della configurazione del pod:

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

Etichetta manualmente le macchine virtuali

Per etichettare il servizio canonico di una singola VM/WorkloadEntry, aggiungi l'etichetta service.istio.io/canonical-name alla sezione "labels" della configurazione di 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:
  ...

Etichettare manualmente i servizi esterni

Per etichettare il servizio canonico di un singolo servizio esterno/ServiceEntry, aggiungi l'etichetta service.istio.io/canonical-name alla sezione "labels" della configurazione di 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
  ...

Passaggi successivi