Présentation de l'annuaire des services pour GKE

L'annuaire des services pour Google Kubernetes Engine (GKE) fournit une vue unique de tous les services de tous vos déploiements GKE et au-delà. Vous pouvez ajouter différents types de services GKE, les annoter, puis les afficher dans l'Annuaire des services.

L'annuaire des services pour GKE offre les fonctionnalités suivantes :

  • Il vous permet de découvrir des services via gRPC et HTTP, et de résoudre des services sur DNS à l'aide des zones DNS de l'Annuaire des services. L'intégration de l'annuaire des services et de Cloud DNS vous permet de configurer une zone DNS dans l'annuaire des services.
  • L'annuaire des services enregistre les services en dehors de GKE, ce qui permet aux services GKE et non-GKE de se découvrir facilement.
  • Annuaire des services applique les autorisations IAM et les vérifications VPC Service Controls pour assurer la sécurité et la confidentialité des données client.
  • Vous pouvez configurer Annuaire des services pour GKE avec des clusters GKE Autopilot ou GKE Standard. Pour en savoir plus sur les deux modes, consultez Choisir un mode de fonctionnement GKE.

Pour savoir comment configurer l'annuaire des services afin d'enregistrer automatiquement vos services GKE dans l'annuaire des services, consultez Configurer l'annuaire des services pour GKE.

Mappage de services

Lorsque vous enregistrez un service dans l'Annuaire des services, un service est créé dans le projet de Google Cloud flotte à l'aide du nom de l'espace de noms Kubernetes et de la région du cluster GKE. Le tableau suivant décrit comment les propriétés du service GKE sont mappées aux propriétés du service créé dans Annuaire des services pour tous les types de services GKE.

Propriétés de premier niveau

Propriété Annuaire des services Propriété GKE
Projet Projet de parc
Région Région du cluster
Espace de noms Espace de noms Kubernetes

LoadBalancer type de service

L'exemple suivant montre comment un service LoadBalancer GKE est mappé à l'Annuaire des services. Le service Annuaire des services existe dans un espace de noms portant le même nom que l'espace de noms Kubernetes dans le projet de parc et la région du cluster GKE.

Propriété Annuaire des services Propriété GKE
Nom du service Nom du service
Nom du point de terminaison Généré automatiquement par le contrôleur Service Directory
Adresse IP du point de terminaison Entrée LoadBalancer
Port du point de terminaison Port du service LoadBalancer
Réseau de points de terminaison Réseau VPC du cluster

Voici un exemple de service LoadBalancer 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

Voici un exemple de service Annuaire des services :

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

L'exemple suivant montre comment un service GKE NodePort est mappé à l'Annuaire des services. Le service Annuaire des services existe dans un espace de noms portant le même nom que l'espace de noms Kubernetes dans le projet du hub et la région du cluster GKE.

Propriété Annuaire des services Propriété GKE
Nom du service Nom du service
Nom du point de terminaison Généré automatiquement par le contrôleur Service Directory
Adresse IP du point de terminaison Adresse IP interne du nœud pour chaque nœud exécutant un pod pour le service
Port du point de terminaison Port de nœud statique
Réseau de points de terminaison Réseau VPC du cluster

Voici un exemple de service NodePort 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
  

Voici un exemple de nœuds 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
    

Voici un exemple de service Annuaire des services :

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
  

Service ClusterIP

L'exemple suivant montre comment un service ClusterIP GKE est mappé à l'Annuaire des services. Le service Annuaire des services existe dans un espace de noms portant le même nom que l'espace de noms Kubernetes dans le projet de parc et la région du cluster GKE.

Propriété Annuaire des services Propriété GKE
Nom du service Nom du service
Nom du point de terminaison Généré automatiquement par le contrôleur Service Directory
Adresse IP du point de terminaison ClusterIP
Port du point de terminaison Port de service
Réseau de points de terminaison Réseau VPC du cluster

Voici un exemple de service ClusterIP 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
  

Voici un exemple de service Annuaire des services :

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
  

Étapes suivantes

  • Pour obtenir une présentation de l'annuaire des services, consultez la présentation de l'annuaire des services.
  • Pour trouver des solutions aux problèmes courants que vous pouvez rencontrer lors de l'utilisation de l'Annuaire des services, consultez la page Dépannage.