O Diretório de serviços para o Google Kubernetes Engine (GKE) oferece uma visão única de todos os serviços em todas as implantações do GKE e muito mais. É possível adicionar vários tipos de serviços do GKE, fazer anotações neles e depois conferir esses serviços no Diretório de Serviços.
Diretório de serviços para GKE oferece os seguintes recursos:
- Ele permite descobrir serviços por gRPC e HTTP e resolver serviços por DNS usando zonas de DNS do Diretório de serviços. Com a integração do Diretório de serviços e do Cloud DNS, é possível configurar uma zona DNS do Diretório de serviços.
- O Diretório de serviços registra serviços fora do GKE, permitindo que serviços do GKE e de terceiros se descubram facilmente.
- O Diretório de serviços aplica permissões do IAM e verificações do VPC Service Controls para garantir a segurança e a privacidade adequadas dos dados dos clientes.
- É possível configurar o Diretório de serviços para GKE com clusters do GKE Autopilot ou Standard. Para informações sobre os dois modos, consulte Escolher um modo de operação do GKE.
Para saber como configurar o Diretório de serviços para registrar automaticamente seus serviços do GKE com o Diretório de serviços, consulte Como configurar o Service Directory para o GKE.
Mapeamento de serviços
Ao registrar um serviço no Diretório de serviços, um serviço é criado no projeto da Google Cloud frota usando o nome do namespace do Kubernetes e a região do cluster do GKE. A tabela a seguir descreve como as propriedades do serviço do GKE são mapeadas para as propriedades do serviço criado no Diretório de serviços para todos os tipos de serviço do GKE.
Propriedades de nível superior
| Propriedade do Service Directory | Propriedade do GKE |
| Projeto | Projeto da frota |
| Região | Região do cluster |
| Namespace | Namespace do Kubernetes |
LoadBalancer tipo de serviço
O exemplo a seguir mostra como um serviço LoadBalancer do GKE é mapeado para o Diretório de serviços. O serviço do Service Directory existe em um namespace com o mesmo nome do namespace do Kubernetes no projeto da frota e na região do cluster do GKE.
| Propriedade do Service Directory | Propriedade do GKE |
| Nome do serviço | Nome do serviço |
| Nome do endpoint | Gerado automaticamente pelo controlador do Diretório de serviços |
| Endereço IP do endpoint | Entrada LoadBalancer |
| Porta do endpoint | Porta do serviço LoadBalancer |
| Rede de endpoints | Rede VPC do cluster |
Confira abaixo um exemplo de serviço LoadBalancer do GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: cloud.google.com/load-balancer-type: "Internal" labels: app: hello-app sd-import: "true" spec: ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: LoadBalancer status: loadBalancer: ingress: - ip: 10.140.0.5
Confira um exemplo de serviço do Diretório de serviços:
service: endpoints: - address: 10.140.0.5 metadata: cloud.google.com/load-balancer-type: "Internal" name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
NodePort tipo de serviço
O exemplo a seguir mostra como um serviço NodePort do GKE é mapeado para o Diretório de serviços. O serviço do Service Directory existe em um namespace com o mesmo nome do namespace do Kubernetes no projeto do hub e da região do cluster do GKE.
| Propriedade do Service Directory | Propriedade do GKE |
| Nome do serviço | Nome do serviço |
| Nome do endpoint | Gerado automaticamente pelo controlador do Diretório de serviços |
| Endereço IP do endpoint | Endereço IP interno do nó para cada nó que executa um pod para o serviço |
| Porta do endpoint | Porta do nó estático |
| Rede de endpoints | Rede VPC do cluster |
Confira abaixo um exemplo de serviço NodePort do GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" spec: ports: - nodePort: 30007 port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: NodePort
Confira abaixo um exemplo de nós do GKE:
apiVersion: v1 items: - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-d2rr status: addresses: - address: 10.142.0.27 type: InternalIP - address: 34.73.248.170 - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-kb38 status: addresses: - address: 10.142.0.29 type: InternalIP - address: 35.196.219.215 type: ExternalIP - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-x34q status: addresses: - address: 10.142.0.28 type: InternalIP - address: 34.75.202.26 type: ExternalIP
Confira um exemplo de serviço do Diretório de serviços:
service: endpoints: - address: 10.142.0.27 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.28 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-23456 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.29 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-34567 port: 30007 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
Serviço ClusterIP
O exemplo a seguir mostra como um serviço ClusterIP do GKE é mapeado para o Diretório de serviços. O serviço do Service Directory existe em um namespace com o mesmo nome do namespace do Kubernetes no projeto e na região da frota do cluster do GKE.
| Propriedade do Service Directory | Propriedade do GKE |
| Nome do serviço | Nome do serviço |
| Nome do endpoint | Gerado automaticamente pelo controlador do Diretório de serviços |
| Endereço IP do endpoint | ClusterIP |
| Porta do endpoint | Porta de serviço |
| Rede de endpoints | Rede VPC do cluster |
Confira um exemplo de serviço ClusterIP do GKE:
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" labels: app: hello-app sd-import: "true" spec: clusterIP: 10.15.254.17 ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: ClusterIP
Confira um exemplo de serviço do Diretório de serviços:
service: endpoints: - address: 10.15.254.17 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
A seguir
- Para uma visão geral do Diretório de serviços, consulte a Visão geral do Service Directory.
- Para encontrar soluções de problemas comuns que podem ser encontrados ao usar Diretório de serviços, consulte Solução de problemas.