Configurer Service Directory pour GKE

Cette page explique comment configurer Annuaire des services avec Google Kubernetes Engine (GKE) et enregistrer automatiquement vos clusters GKE auprès de l'Annuaire des services. Vous pouvez configurer l'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 en savoir plus sur l'Annuaire des services pour GKE, consultez la présentation de l'Annuaire des services pour GKE.

Limites

L'annuaire des services pour GKE présente les limites suivantes :

  • Vous ne pouvez enregistrer des services qu'à l'aide de l'intégration Annuaire des services-GKE. Vous devez enregistrer manuellement les entrées, les passerelles et les autres ressources à l'aide de l'API Annuaire des services.
  • Vous devez enregistrer vos clusters GKE à l'aide de Parcs avant de pouvoir synchroniser les services de ces clusters avec l'Annuaire des services. Pour savoir comment enregistrer vos clusters GKE, consultez Enregistrer un cluster.
  • Toutes les ressources Service Directory sont enregistrées dans le projet de parc, et non dans le projet du cluster.
  • Vous ne pouvez pas modifier les entités de l'annuaire des services enregistrées à l'aide de cette intégration. Vous devez apporter toutes les modifications aux ressources de service GKE elles-mêmes pour qu'elles soient propagées à l'Annuaire des services.

Avant de commencer

  • Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Verify that billing is enabled for your Google Cloud project.

  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Verify that billing is enabled for your Google Cloud project.

  • Vous devez enregistrer votre cluster GKE dans un parc. Pour enregistrer votre cluster GKE, suivez les instructions de la section Enregistrer un cluster.

Configurer le cluster GKE

Pour configurer le cluster GKE, procédez comme suit.

  • Activez la fonctionnalité de parc Service Directory GKE.
  • Configurez la règle d'enregistrement de l'annuaire des services.
  • Déployez le service GKE.

Activer la fonctionnalité de parc Service Directory GKE

Pour activer la fonctionnalité de parc GKE Service Directory, exécutez la commande gcloud container hub.

gcloud

gcloud alpha container hub service-directory enable

Configurer la règle d'enregistrement de l'annuaire des services pour le service

La règle d'enregistrement définit les types de services dans GKE qui sont automatiquement importés par l'annuaire des services. La liste suivante présente les options configurables pour cette règle :

  • resources : type de ressources GKE importées. Vous pouvez spécifier plusieurs types de ressources. Les ressources sont identifiées par Group et Kind. Par défaut, la valeur Group est définie sur core. Seul Kind: service est disponible.
  • selector : sélecteur d'étiquettes GKE qui correspond aux étiquettes clé/valeur appliquées à la ressource GKE. Par défaut, aucune ressource n'est sélectionnée.
  • annotationsToSync : clés d'annotation de la ressource synchronisées avec Annuaire des services. Si cette liste est vide, les ressources sont synchronisées avec Annuaire des services sans annotations.

Chaque espace de noms doit définir une seule règle. Cette règle doit comporter name: "default". Le contrôleur n'autorise ni ne réconcilie d'autres noms.

Configurer une ServiceDirectoryRegistrationPolicy

Le fichier manifeste suivant décrit un ServiceDirectoryRegistrationPolicy :

apiVersion: networking.gke.io/v1alpha1
kind: ServiceDirectoryRegistrationPolicy
metadata:
    # Only the name "default" is allowed.
    name: default
    # The ServiceDirectoryRegistrationPolicy is a namespaced resource
    namespace: NAMESPACE
spec:
  resources:
    # Kind specifies the types of Kubernetes resources that can be synced into Service Directory.
    - kind: Service
      # Selector is a label selector for the resource types specified in Kind.
      selector:
        matchLabels:
          LABELS
      # annotationsToSync specifies the annotations that are matched and imported.
      # Any annotations that do not match this set of keys will not be imported into Service Directory.
      annotationsToSync:
      - ANNOTATIONS
      

Remplacez les éléments suivants :

  • NAMESPACE : nom de l'espace de noms. Il ne peut y avoir qu'un seul ServiceDirectoryRegistrationPolicy dans un espace de noms. Si un même espace de noms contient plusieurs règles, GKE en choisit une comme règle active et marque les autres comme inactives.
  • LABELS : sélecteur de libellés, par exemple sd-import: "true". Cette valeur s'applique aux ressources spécifiées dans le type. Par défaut, aucune ressource n'est sélectionnée.
  • ANNOTATIONS : liste des annotations correspondantes et importées, par exemple - cloud.google.com/load-balancer-type. Si une ressource GKE sélectionnée comporte l'une des annotations de la liste, l'annotation et ses valeurs sont synchronisées avec Annuaire des services avec la ressource. Si cette liste est vide, les ressources sont synchronisées avec Annuaire des services sans annotations.

Enregistrez le fichier manifeste sous le nom registration_policy.yaml.

Appliquez le fichier manifeste à votre cluster :

Pour appliquer le fichier manifeste à votre cluster, exécutez la commande kubectl apply -f :

kubectl apply -f registration_policy.yaml

Déployer le service GKE

Déployez le service et l'application d'équilibreur de charge réseau passthrough externe GKE dans le cluster GKE de votre région. Par exemple, si votre région est us-central1, déployez-les dans un cluster GKE gke-us-central1.

Votre service GKE est alors importé dans l'Annuaire des services.

Créez un fichier YAML et appliquez-le comme n'importe quelle autre ressource GKE. Voici le fichier manifeste d'un service de type LoadBalancer :

apiVersion: v1
kind: Service
metadata:
  name: hello-app-service
  labels:
    sd-import: "true"
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - name: tcp-port
    protocol: TCP
    port: 80
    targetPort: 8080

Voici un fichier manifeste pour un objet Deployment :

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: hello
  name: hello-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - image: gcr.io/google-samples/hello-app:1.0
        name: hello
        ports:
        - containerPort: 8080
          protocol: TCP

Pour vérifier le service, exécutez la requête Annuaire des services pour votre service à l'aide de la commande gcloud service-directory services resolve :

gcloud

gcloud beta service-directory services resolve SERVICE_NAME \
  --location=LOCATION \
  --namespace=NAMESPACE

Remplacez les éléments suivants :

  • SERVICE_NAME : nom ou identifiant complet du service, par exemple hello-app-service
  • LOCATION : nom de la région pour le service, par exemple us-central1
  • NAMESPACE : nom de l'espace de noms du service, par exemple default

Le résultat affiche votre service et ressemble à ce qui suit :

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-service/endpoints/my-cluster-12345
    port: 80
    network: projects/123456789/locations/global/networks/default
  name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service

Facturation

Annuaire des services ne facture pas les ressources créées par l'intégration GKE. Toutefois, les appels d'API sont payants. Pour en savoir plus sur les tarifs, consultez la page Tarifs de l'annuaire des services.

É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.