Service Directory for GKE overview

Service Directory for Google Kubernetes Engine (GKE) provides a single view of all services across all of your GKE deployments and beyond. You can add various types of GKE services, annotate them, and then see those services in Service Directory.

Service Directory for GKE offers the following features:

  • It lets you discover services through gRPC and HTTP, and resolve services over DNS using Service Directory DNS zones. The Service Directory and Cloud DNS integration lets you configure a Service Directory DNS zone .
  • Service Directory registers services outside of GKE, allowing GKE and non-GKE services to easily discover each other.
  • Service Directory enforces IAM permission and VPC Service Controls checks to ensure proper security and privacy of customer data.
  • You can configure Service Directory for GKE with Autopilot GKE clusters or Standard GKE clusters. For information about the two modes, see Choose a GKE mode of operation .

To learn about how to configure Service Directory to automatically register your GKE services with Service Directory, see Configuring Service Directory for GKE .

Service mapping

When you register a service with Service Directory, a service is created in the Google Cloud fleet project using the name of the Kubernetes namespace and region of the GKE cluster. The following table describes how the properties on the GKE service are mapped to the properties on the created service in Service Directory for all GKE service types.

Top level properties

Service Directory property GKE property
Project Fleet project
Region Region of the cluster
Namespace Kubernetes namespace

LoadBalancer service type

The following example shows how a GKE LoadBalancer service is mapped to Service Directory. The Service Directory service exists in a namespace with the same name as the Kubernetes namespace in the fleet project and region of the GKE cluster.

Service Directory property GKE property
Service name Service name
Endpoint name Auto-generated by Service Directory Controller
Endpoint IP address LoadBalancer ingress
Endpoint port LoadBalancer service port
Endpoint network VPC network of the cluster

The following is an example of a GKE LoadBalancer service:

 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 

The following is an example of a Service Directory service:

 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 service type

The following example shows how a GKE NodePort Service is mapped to Service Directory. The Service Directory service exists in a namespace with the same name as the Kubernetes namespace in the project of the hub and region of the GKE cluster.

Service Directory property GKE property
Service name Service name
Endpoint name Auto-generated by Service Directory Controller
Endpoint IP address Node internal IP address for each node that runs a pod for the service
Endpoint port Static node port
Endpoint network VPC network of the cluster

The following is an example of a GKE NodePort service:

 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 
  

The following is an example of GKE nodes:

 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 
  

The following is an example of a Service Directory service:

 service 
 : 
  
 endpoints 
 : 
  
 - 
  
 address 
 : 
  
 10.142 
 . 
 0.27 
  
 metadata 
 : 
  
 key1 
 : 
  
 value1 
  
 name 
 : 
  
 projects 
 /my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/g 
 ke 
 - 
 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/g 
 ke 
 - 
 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/g 
 ke 
 - 
 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 
  

ClusterIP service

The following example shows how a GKE ClusterIP service is mapped to Service Directory. The Service Directory service exists in a namespace with the same name as the Kubernetes namespace in the fleet project and region of the GKE cluster.

Service Directory property GKE property
Service name Service name
Endpoint name Auto-generated by Service Directory Controller
Endpoint IP address ClusterIP
Endpoint port Service port
Endpoint network VPC network of the cluster

The following is an example of a GKE ClusterIP service:

 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 
  

The following is an example of a Service Directory service:

 service 
 : 
  
 endpoints 
 : 
  
 - 
  
 address 
 : 
  
 10.15 
 . 
 254.17 
  
 metadata 
 : 
  
 key1 
 : 
  
 value1 
  
 name 
 : 
  
 projects 
 /my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/g 
 ke 
 - 
 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 
  

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: