Cette page explique comment configurer l'annuaire des services avec Google Kubernetes Engine (GKE) et enregistrer automatiquement vos clusters GKE dans 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 la section 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 d'autres ressources à l'aide de l'API Annuaire des services.
- Vous devez enregistrer vos clusters GKE à l'aide de Fleets avant de pouvoir synchroniser les services de ces clusters avec l'annuaire des services. Pour savoir comment enregistrer vos clusters GKE, consultez la section Enregistrer un cluster.
- Toutes les ressources de l'annuaire des services sont enregistrées dans le projet de la Fleet, 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 afin qu'elles soient propagées à l'annuaire des services.
Avant de commencer
- Connectez-vous à votre Google Cloud compte. Si vous n'avez jamais utilisé Google Cloud, créez un compte pour évaluer les performances de nos produits dans des scénarios réels. 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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Vous devez enregistrer votre cluster GKE dans une Fleet. 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 Fleet GKE de l'annuaire des services.
- Configurez la règle d'enregistrement de l'annuaire des services.
- Déployez le service GKE.
Activer la fonctionnalité de Fleet GKE de l'annuaire des services
Pour activer la fonctionnalité de Fleet GKE de l'annuaire des services, exécutez
la gcloud container hub commande.
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 de 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 parGroupetKind. Par défaut, la valeur deGroupestcore. Seule la valeurKind: serviceest disponible.selector: sélecteur de libellés GKE qui correspond aux libellés clé:valeur appliqués à la ressource GKE. Par défaut, aucune ressource n'est sélectionnée.annotationsToSync: clés d'annotation de la ressource synchronisées avec l'annuaire des services. Si cette liste est vide, les ressources sont synchronisées avec l'annuaire des services sans annotations.
Chaque espace de noms doit définir une seule règle. Cette règle doit avoir la valeur name:
"default". Le contrôleur n'autorise ni ne réconcilie d'autres noms.
Configurer une ServiceDirectoryRegistrationPolicy
Le fichier manifeste suivant décrit une 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 que un seulServiceDirectoryRegistrationPolicydans un espace de noms. S'il existe plusieurs règles dans un même espace de noms, GKE en choisit une comme règle active et marque les autres comme inactives.LABELS: sélecteur de libellés, par exemplesd-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 qui sont mises en correspondance 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 l'annuaire des services avec la ressource. Si cette liste est vide, les ressources sont synchronisées avec l'annuaire des services sans annotations.
Enregistrez le fichier manifeste sous le nom registration_policy.yaml.
Appliquer 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 régional GKE dans le cluster GKE de votre région. Par exemple, si votre région est us-central1, déployez-le dans un cluster GKE
gke-us-central1.
Cela importe votre service GKE 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 le fichier manifeste d'un 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, exécutez la requête de l'annuaire des services pour votre service à l'aide de la
gcloud service-directory services resolve
commande :
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 exemplehello-app-serviceLOCATION: nom de la région du service, par exempleus-central1NAMESPACE: nom de l'espace de noms du service, par exempledefault
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
L'annuaire des services ne facture pas les ressources créées par l'intégration GKE. Toutefois, les appels d'API sont facturés. Pour en savoir plus sur les tarifs, consultez la page Tarifs de l'annuaire des services.
Étape suivante
- 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.