Como definir um serviço canônico

Observação: os serviços canônicos são compatíveis com a versão 1.6.8 do Anthos Service Mesh e versões mais recentes.

Os serviços canônicos são um grupo de cargas de trabalho que implementam os mesmos serviços e APIs. Para os tipos de carga de trabalho compatíveis, o Anthos Service Mesh cria recursos de serviço canônico automaticamente com base nas informações existentes do servidor da API Kubernetes. Veja nesta página quais rótulos definem serviços canônicos automaticamente e saiba como é possível ajustar os limites dos serviços manualmente.

Os tipos de instância de carga de trabalho atualmente compatíveis são:

  • Pods do Kubernetes (inclusive via implantações do Kubernetes, serviços de execução do Kube etc.)
  • Instâncias de máquina virtual

O que define serviços canônicos

O Anthos Service Mesh determina a assinatura do serviço canônico lendo o rótulo service.istio.io/canonical-name (em inglês) no recurso de configuração do Kubernetes associado a cada instância de carga de trabalho:

  • Para pods, o rótulo está no recurso de pod do Kubernetes
  • Para VMs, o rótulo no recurso WorkloadEntry do Istio (link em inglês).

Os serviços canônicos têm o mesmo namespace do Kubernetes (em inglês) que as instâncias de carga de trabalho associadas e não podem abranger namespaces.

Regras de rotulagem automática

O Anthos Service Mesh agrupa as cargas de trabalho em serviços canônicos automaticamente sem nenhuma ação da sua parte.

Você só precisa:

  • ajustar a clareza do rótulo para o usuário/leitor;
  • substituir o comportamento padrão.

Rotulagem automática nos pods do Kubernetes

Os serviços canônicos se concentram nos rótulos app.kubernetes.io/name e app do Kubernetes. Observe que o rótulo antigo tem precedência.

Nenhuma outra ação será necessária se você usar um desses dois rótulos nas cargas de trabalho.

Rotulagem automática em máquinas virtuais

Para criar serviços canônicos nas VMs, é necessário adicionar as VMs a uma malha de serviço. Basta configurar um recurso WorkloadEntry no servidor da API Kubernetes.

Rotulagem manual

Para aplicar ou substituir um rótulo de serviço canônico manualmente, aplique o rótulo service.istio.io/canonical-name às suas configurações de Pod ou WorkloadEntry.

Rotulagem manual nos pods do Kubernetes

Para implantar muitos pods de uma só vez usando uma implantação, defina o rótulo service.istio.io/canonical-name no 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 rotular o serviço canônico de um único pod, adicione o rótulo service.istio.io/canonical-name à seção labels da configuração do pod:

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

Rotular máquinas virtuais manualmente

Para rotular o serviço canônico em uma única VM/WorkloadEntry, adicione o rótulo service.istio.io/canonical-name à seção "labels" da sua configuração de 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:
  ...

A seguir