Descripción general de Directorio de servicios para GKE

El Directorio de servicios para Google Kubernetes Engine (GKE) proporciona una sola vista de todos los servicios en todas tus implementaciones de GKE y más allá. Puedes agregar varios tipos de servicios de GKE, anotarlos y, luego, verlos en el Directorio de servicios.

Directorio de servicios para GKE ofrece las siguientes funciones:

  • Te permite descubrir servicios a través de gRPC y HTTP, y resolver servicios a través de DNS con las zonas de DNS del Directorio de servicios. La integración del Directorio de servicios y Cloud DNS te permite configurar una zona DNS del Directorio de servicios.
  • El Directorio de servicios registra servicios fuera de GKE, lo que permite que los servicios de GKE y de terceros se descubran fácilmente entre sí.
  • Directorio de servicios aplica los permisos de IAM y las verificaciones de los Controles del servicio de VPC para garantizar la seguridad y la privacidad adecuadas de los datos del cliente.
  • Puedes configurar Directorio de servicios para GKE con clústeres de GKE Autopilot o clústeres de GKE Standard. Para obtener información sobre los dos modos, consulta Elige un modo de operación de GKE.

Si deseas obtener información para configurar Directorio de servicios de modo que registre automáticamente tus servicios de GKE en Directorio de servicios, consulta Configura Service Directory para GKE.

Asignación de servicios

Cuando registras un servicio en Directorio de servicios, se crea un servicio en el proyecto de la Google Cloud flota con el nombre del espacio de nombres de Kubernetes y la región del clúster de GKE. En la siguiente tabla, se describe cómo se asignan las propiedades del servicio de GKE a las propiedades del servicio creado en Directorio de servicios para todos los tipos de servicios de GKE.

Propiedades de nivel superior

Propiedad Directorio de servicios Propiedad de GKE
Proyecto Proyecto de flota
Región Región del clúster
Espacio de nombres Espacio de nombres de Kubernetes

Tipo de servicio LoadBalancer

En el siguiente ejemplo, se muestra cómo se asigna un servicio LoadBalancer de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de la flota y la región del clúster de GKE.

Propiedad Directorio de servicios Propiedad de GKE
Nombre del servicio Nombre del servicio
Nombre del extremo Generado automáticamente por el controlador de Service Directory
Dirección IP del extremo Entrada de LoadBalancer
Puerto del extremo Puerto de servicio de LoadBalancer
Red de extremos Red de VPC del clúster

A continuación, se muestra un ejemplo de un servicio LoadBalancer de 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

A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:

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

Tipo de servicio NodePort

En el siguiente ejemplo, se muestra cómo se asigna un servicio NodePort de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto del hub y la región del clúster de GKE.

Propiedad Directorio de servicios Propiedad de GKE
Nombre del servicio Nombre del servicio
Nombre del extremo Generado automáticamente por el controlador de Service Directory
Dirección IP del extremo Dirección IP interna del nodo para cada nodo que ejecuta un pod para el servicio
Puerto del extremo Puerto del nodo estático
Red de extremos Red de VPC del clúster

A continuación, se muestra un ejemplo de un servicio NodePort de 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
  

A continuación, se muestra un ejemplo de nodos de 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
    

A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:

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
  

Servicio ClusterIP

En el siguiente ejemplo, se muestra cómo se asigna un servicio ClusterIP de GKE a Directorio de servicios. El servicio de Service Directory existe en un espacio de nombres con el mismo nombre que el espacio de nombres de Kubernetes en el proyecto de la flota y la región del clúster de GKE.

Propiedad Directorio de servicios Propiedad de GKE
Nombre del servicio Nombre del servicio
Nombre del extremo Generado automáticamente por el controlador de Service Directory
Dirección IP del extremo ClusterIP
Puerto del extremo Puerto de servicio
Red de extremos Red de VPC del clúster

A continuación, se muestra un ejemplo de un servicio ClusterIP de 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
  

A continuación, se muestra un ejemplo de un servicio de Directorio de servicios:

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
  

¿Qué sigue?