Definizione di un servizio canonico

Nota: i servizi canonici sono supportati automaticamente in Cloud Service Mesh 1.6.8 e versioni successive.

Canonical Services è un gruppo di carichi di lavoro che implementano gli stessi servizi e API. Per i tipi di carichi di lavoro supportati, Cloud Service Mesh crea automaticamente risorse di servizio canonico in base alle dal server API Kubernetes. In questa pagina vengono spiegate le etichette automaticamente i servizi canonici e come è possibile regolare dei tuoi servizi.

I tipi di istanza dei carichi di lavoro attualmente supportati sono:

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

Cosa definisce i servizi canonici

Cloud Service Mesh determina l'abbonamento a Canonical Service leggendo il service.istio.io/canonical-name etichetta sulla risorsa di configurazione Kubernetes associata a ogni istanza del carico di lavoro:

  • Per i pod, l'etichetta si trova nella risorsa del 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 come istanze dei carichi di lavoro associate e non possono occupare gli spazi dei nomi.

Regole di etichettatura automatica

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

Devi solo intraprendere un'azione per:

  • Modifica le etichette per migliorare la chiarezza dell'utente/lettore
  • Esegui l'override del comportamento predefinito.

Etichettatura automatica nei pod Kubernetes

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

Se utilizzi una di queste due etichette nei tuoi carichi di lavoro, non devi fare altro obbligatorio.

Etichettatura automatica nelle macchine virtuali

Per creare servizi canonici sulle tue VM, devi aggiungere le VM a un mesh di servizi configurando Risorsa WorkloadEntry nel server API Kubernetes.

Etichettatura manuale

Per applicare o sostituire manualmente un'etichetta di servizio canonico, applica il metodo service.istio.io/canonical-name etichetta alla risorsa del carico di lavoro supportata configurazioni.

Per far sì che un servizio esterno venga riconosciuto come Servizio canonico, l'utente deve etichettare manualmente la ServiceEntry applicabile.

Etichettatura manuale nei pod Kubernetes

di eseguire il deployment di più pod contemporaneamente 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 Etichetta service.istio.io/canonical-name alla sezione labels del pod configurazione:

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 il metodo Etichetta service.istio.io/canonical-name in "etichette" del tuo Configurazione 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:
  ...

Etichetta manualmente i servizi esterni

Per etichettare il servizio canonico di un singolo servizio/ServiceEntry esterno, aggiungi il metodo Etichetta service.istio.io/canonical-name in "etichette" del tuo Configurazione 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