Definir um serviço canónico
Nota: os serviços canónicos são suportados automaticamente na versão 1.6.8 e superiores do Cloud Service Mesh.
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 suportados, o Cloud Service Mesh cria automaticamente recursos de serviço canónico com base nas informações existentes do servidor da API Kubernetes. Esta página explica o que são as etiquetas que definem automaticamente os serviços canónicos e como pode ajustar manualmente os limites dos seus serviços.
Os tipos de instâncias de cargas de trabalho atualmente suportados são:
- Pods do Kubernetes (inclusive através de implementações do Kubernetes, serviços do Kube Run, etc.)
- Instâncias de máquinas virtuais
- Serviços externos de malha (especificamente, recursos ServiceEntry com uma localização de
MESH_EXTERNAL
)
O que define os serviços canónicos
O Cloud Service Mesh determina a associação ao serviço canónico lendo a etiqueta no recurso de configuração do Kubernetes associado a cada instância de carga de trabalho:service.istio.io/canonical-name
- Para os pods, a etiqueta está no recurso de pod do Kubernetes
- Para VMs, a etiqueta no recurso WorkloadEntry do Istio
- Para serviços externos, a etiqueta encontra-se no recurso ServiceEntry do Istio
Os serviços canónicos têm o mesmo namespace do Kubernetes que as respetivas instâncias de carga de trabalho associadas e não podem abranger namespaces.
Regras de etiquetagem automática
A malha de serviços na nuvem agrupa automaticamente as suas cargas de trabalho baseadas em VMs e pods em serviços canónicos sem que tenha de fazer nada.
Só tem de tomar medidas para:
- Ajuste as etiquetas para maior clareza para o utilizador/leitor
- Substitua o comportamento predefinido.
Etiquetagem automática em pods do Kubernetes
Os serviços canónicos focam-se nas etiquetas app.kubernetes.io/name
e app
do Kubernetes. Tenha em atenção que a etiqueta anterior tem precedência.
Se usar qualquer uma destas duas etiquetas nas suas cargas de trabalho, não é necessário fazer mais nada.
Etiquetagem automática em máquinas virtuais
Para criar serviços canónicos nas suas VMs, tem de adicionar as VMs a uma malha de serviços configurando um recurso WorkloadEntry no servidor da API Kubernetes.
Etiquetagem manual
Para aplicar ou substituir manualmente uma etiqueta de serviço canónico, aplique a etiqueta service.istio.io/canonical-name
às configurações de recursos de carga de trabalho suportadas.
Para que um serviço externo seja reconhecido como um serviço canónico, tem de etiquetar manualmente a ServiceEntry aplicável.
Etiquetagem manual em pods do Kubernetes
Para implementar muitos pods em simultâneo através de uma
implementação,
defina a etiqueta 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 etiquetar o serviço canónico de um único pod, adicione a etiqueta service.istio.io/canonical-name
à secçã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:
...
Etiquete máquinas virtuais manualmente
Para etiquetar o serviço canónico de uma única VM/WorkloadEntry, adicione a etiqueta service.istio.io/canonical-name
à secção "labels" da configuração do 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:
...
Etiquete serviços externos manualmente
Para etiquetar o serviço canónico de um único serviço externo/ServiceEntry, adicione a etiqueta service.istio.io/canonical-name
à secção "labels" da configuração 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
...
O que se segue?
- Saiba mais sobre os serviços canónicos
- Saiba mais sobre as práticas recomendadas nos serviços canónicos