Vue imprimable multi-pages de cette section. .
Guide du développeur
1 - Protocole du service de découverte
Le protocole de service de découverte aide un nouveau membre etcd à découvrir tous les autres membres du cluster pendant la phase d’initialisation, en utilisant une URL de découverte partagée.
Le protocole de service de découverte n’est utilisé que pendant la phase d’amorçage du cluster, et ne peut pas être utilisé pour la reconfiguration en temps réel ou la surveillance du cluster.
Le protocole utilise un nouveau jeton de découverte pour initialiser un unique cluster etcd. Souvenez-vous qu’un jeton de découverte ne peut représenter qu’un seul cluster etcd. Dès que le protocole de découverte associé à ce jeton est lancé, même s’il échoue en cours de route, il ne doit pas être utilisé pour initialiser un autre cluster etcd.
Le reste de cet article détaille le processus de découverte à l’aide d’exemples correspondant à un cluster de découverte auto-hébergé. Le service public de découverte, discovery.etcd.io, fonctionne de la même manière, mais avec une couche d’interface améliorée qui masque les URL complexes, génère automatiquement des UUID et met en place certaines protections contre les requêtes excessives. Au cœur de ce service public, un cluster etcd est toujours utilisé comme magasin de données, comme décrit dans ce document.
Flot de protocole
L’idée du protocole de découverte consiste à utiliser un cluster etcd interne pour coordonner le démarrage d’un nouveau cluster. Tout d’abord, tous les nouveaux membres interagissent avec le service de découverte et contribuent à générer la liste de membres attendue. Ensuite, chaque nouveau membre démarre son serveur en utilisant cette liste, ce qui permet d’obtenir la même fonctionnalité que l’option -initial-cluster.
Dans l’exemple de workflow suivant, nous allons présenter chaque étape du protocole au format curl afin de faciliter la compréhension.
Par convention, le protocole de découverte etcd utilise le préfixe de clé _etcd/registry. Si http://example.com héberge un cluster etcd pour le service de découverte, l’URL complète de l’espace de clés de découverte sera http://example.com/v2/keys/_etcd/registry. Nous utiliserons cette URL comme préfixe dans l’exemple.
Création d’un nouveau jeton de découverte
Générez un jeton unique qui identifiera le nouveau cluster. Ce jeton sera utilisé comme préfixe unique dans l’espace de clés de découverte aux étapes suivantes. Une méthode simple consiste à utiliser uuidgen :
Spécification de la taille attendue du cluster
Le jeton de découverte attend une taille de cluster qui doit être précisée. Cette taille est utilisée par le service de découverte pour savoir quand il a trouvé tous les membres qui formeront initialement le cluster.
En général, la taille du cluster est de 3, 5 ou 7. Consultez taille optimale du cluster pour plus de détails.
Mise en marche des processus etcd
Étant donné l’URL de découverte, utilisez-la comme indicateur -discovery et lancez les processus etcd. Chaque processus etcd suivra automatiquement les étapes suivantes en interne s’il reçoit l’indicateur -discovery.
S’enregistrer lui-même
La première étape pour le processus etcd consiste à s’inscrire dans l’URL de découverte en tant que membre. Cela se fait en créant l’ID de membre comme clé dans l’URL de découverte.
Vérification du statut
Il vérifie la taille attendue du cluster et l’état d’inscription à l’URL de découverte, puis détermine l’action suivante.
Si le nombre de membres enregistrés reste insuffisant, l’attente sera poursuivie jusqu’à la réapparition de membres sortis.
Si le nombre de membres enregistrés est supérieur à la taille attendue N, le système considère les N premiers membres enregistrés comme la liste des membres du cluster. Si le membre lui-même figure dans cette liste, la procédure de découverte réussit et il récupère tous les pairs à partir de la liste des membres. Sinon, la procédure de découverte échoue, car le cluster est plein.
Dans l’implémentation etcd, le membre peut vérifier l’état du cluster même avant de s’enregistrer. Il peut donc échouer rapidement si le cluster est plein.
En attente de tous les membres
Le processus d’attente est décrit en détail dans la documentation de l’API etcd .
Il continue d’attendre jusqu’à la découverte de tous les membres.
Service de découverte publique
CoreOS Inc. héberge un service de découverte public à https://discovery.etcd.io/ , qui offre plusieurs fonctionnalités pratiques pour faciliter l’utilisation.
Préfixe de masquage de clé
Le service de découverte publique redirigera https://discovery.etcd.io/${UUID} vers le cluster etcd derrière pour la clé située à /v2/keys/_etcd/registry. Il masque le préfixe de clé d’enregistrement afin d’obtenir une URL de découverte plus courte et plus lisible.
Obtenir un nouveau jeton
Le processus de génération dans le service suit les étapes allant de Création d’un jeton de découverte à Spécification de la taille attendue du cluster .
Vérifier l’état de découverte
L’état de ce jeton de découverte, y compris les machines qui ont été enregistrées, peut être vérifié en demandant la valeur de l’UUID.
Dépôt open source
Le dépôt est situé à https://github.com/coreos/discovery.etcd.io .. Il peut être utilisé pour créer un service de découverte personnalisé.
2 - Mettre en place un cluster local
Pour les déploiements de test et de développement, la méthode la plus rapide et la plus simple consiste à configurer un cluster local. Pour un déploiement en production, reportez-vous à la section clustering .
Cluster autonome local
Démarrage d’un cluster
Exécutez la commande suivante pour déployer un cluster etcd en tant que cluster autonome :
Si le binaire etcd n’est pas présent dans le répertoire de travail courant, il se peut qu’il se trouve soit à $GOPATH/bin/etcd, soit à /usr/local/bin/etcd. Exécutez la commande en conséquence.
Le membre etcd en cours d’exécution écoute sur localhost:2379 pour les requêtes clientes.
Interaction avec le cluster
Utilisez etcdctl pour interagir avec le cluster en cours d’exécution :
Stockez une paire clé-valeur exemple dans le cluster :
Si OK est affiché, la sauvegarde de la paire clé-valeur a réussi.
Récupérer la valeur de
foo:Si
barest retourné, l’interaction avec le cluster etcd fonctionne comme prévu.
Cluster local à plusieurs membres
Démarrage d’un cluster
Un Procfile situé à la racine du dépôt git d’etcd est fourni pour configurer facilement un cluster local à plusieurs membres. Pour démarrer un cluster à plusieurs membres, accédez à la racine de l’arborescence source d’etcd et exécutez les étapes suivantes :
Installer
goremanpour contrôler les applications basées sur Procfile :Démarrez un cluster avec
goremanen utilisant le Procfile par défaut d’etcd :Les membres démarrent. Ils écoutent respectivement sur
localhost:2379,localhost:22379etlocalhost:32379les requêtes clientes.
Interaction avec le cluster
Utilisez etcdctl pour interagir avec le cluster en cours d’exécution :
Affichez la liste des membres :
La liste des membres etcd s’affiche comme suit :
Stockez une paire clé-valeur exemple dans le cluster :
Si OK est affiché, la sauvegarde de la paire clé-valeur a réussi.
Test de tolérance aux pannes
Pour tester la tolérance aux pannes d’etcd, arrêtez un membre et tentez de récupérer la clé.
Identifiez le nom du processus du membre à arrêter.
Le
Procfileliste les propriétés du cluster à plusieurs membres. Par exemple, considérez le membre dont le nom de processus estetcd2.Arrêtez le membre :
Stockez une clé :
Récupérez la clé stockée à l’étape précédente :
Récupérer une clé depuis un membre arrêté :
La commande doit afficher une erreur due à un échec de connexion :
Redémarrez le membre arrêté :
Obtenez la clé depuis le membre redémarré :
Redémarrer le membre rétablit la connexion.
etcdctlpourra désormais récupérer la clé avec succès. Pour en savoir plus sur l’interaction avec etcd, consultez la section interaction avec etcd .
3 - Interaction avec etcd
Les utilisateurs interagissent généralement avec etcd en définissant ou en récupérant la valeur d’une clé. Cette section décrit comment effectuer ces opérations à l’aide d’etcdctl, un outil en ligne de commande pour interagir avec le serveur etcd. Les concepts décrits ici s’appliquent également aux API gRPC ou aux API des bibliothèques clientes.
La version de l’API utilisée par etcdctl pour communiquer avec etcd peut être définie à 2 ou 3 via la variable d’environnement ETCDCTL_API. Par défaut, etcdctl sur la branche master (3.4) utilise l’API v3, tandis que les versions antérieures (3.3 et antérieures) utilisent par défaut l’API v2.
Notez qu’une clé créée à l’aide de l’API v2 ne pourra pas être interrogée via l’API v3. Une requête v3 etcdctl get d’une clé v2 se terminera avec le code 0 et sans données de clé ; il s’agit du comportement attendu.
Rechercher les versions
La version d’etcdctl et la version de l’API serveur peuvent être utiles pour identifier les commandes appropriées à utiliser pour effectuer diverses opérations sur etcd.
Voici la commande permettant de trouver les versions :
Écrire une clé
Les applications stockent des clés dans le cluster etcd en écrivant sur des clés. Chaque clé stockée est répliquée sur tous les membres du cluster etcd via le protocole Raft afin d’assurer la cohérence et la fiabilité.
Voici la commande permettant de définir la valeur de la clé foo à bar :
Un clé peut également être définie pour une durée déterminée en lui associant un bail.
Voici la commande permettant de définir la valeur de la clé foo1 à bar1 pendant 10 s.
L’identifiant de bail 1234abcd dans la commande ci-dessus fait référence à l’identifiant retourné lors de la création du bail de 10 s. Cet identifiant peut ensuite être associé à une clé.
Lire les clés
Les applications peuvent lire les valeurs des clés d’un cluster etcd. Les requêtes peuvent lire une seule clé ou une plage de clés.
Supposons que le cluster etcd ait stocké les clés suivantes :
Voici la commande pour lire la valeur de la clé foo :
Voici la commande pour lire la valeur de la clé foo au format hexadécimal :
Voici la commande pour lire uniquement la valeur de la clé foo :
Voici la commande pour parcourir les clés allant de foo à foo3 :
foo3 est exclu car la plage se situe dans l’intervalle demi-ouvert [foo, foo3), en excluant foo3.
Voici la commande permettant de parcourir toutes les clés ayant pour préfixe foo :
Voici la commande pour parcourir toutes les clés ayant pour préfixe foo, en limitant le nombre de résultats à 2 :
Voici la commande permettant de parcourir toutes les clés préfixées par foo en utilisant l’API RPC RangeStream
. Le résultat est identique à un appel unaire Range :
--stream ne prend pas en charge --order, --sort-by ni les filtres de révision.
Lire les versions antérieures des clés
Les applications peuvent souhaiter lire des versions obsolètes d’une clé. Par exemple, une application peut souhaiter revenir à une configuration ancienne en accédant à une version antérieure d’une clé. En outre, une application peut souhaiter obtenir une vue cohérente sur plusieurs clés au fil de plusieurs requêtes en accédant à l’historique des clés.
Étant donné qu’une modification apportée au magasin clé-valeur d’un cluster etcd incrémente la révision globale du cluster etcd, une application peut lire des clés obsolètes en fournissant une révision etcd antérieure.
Supposons qu’un cluster etcd dispose déjà des clés suivantes :
Voici un exemple pour accéder aux versions antérieures des clés :
Lire les clés dont la valeur en octets est supérieure ou égale à celle de la clé spécifiée
Les applications peuvent souhaiter lire des clés dont la valeur en octets est supérieure ou égale à celle de la clé spécifiée.
Supposons qu’un cluster etcd dispose déjà des clés suivantes :
Voici la commande permettant de lire les clés dont la valeur d’octet est supérieure ou égale à celle de la clé b :
Supprimer des clés
Les applications peuvent supprimer une clé ou une plage de clés d’un cluster etcd.
Supposons qu’un cluster etcd dispose déjà des clés suivantes :
Voici la commande pour supprimer la clé foo :
Voici la commande permettant de supprimer les clés comprises entre foo et foo9 :
Voici la commande permettant de supprimer la clé zoo avec la paire clé-valeur supprimée renvoyée :
Voici la commande permettant de supprimer les clés dont le préfixe est zoo :
Voici la commande permettant de supprimer les clés dont la valeur d’octet est supérieure ou égale à celle de la clé b :
Surveillance des modifications de clé
Les applications peuvent surveiller une clé ou une plage de clés afin de détecter toute mise à jour.
Voici la commande pour surveiller la clé foo :
Voici la commande pour surveiller la clé foo au format hexadécimal :
Voici la commande pour effectuer une surveillance sur une plage de clés de foo à foo9 :
Voici la commande pour surveiller les clés ayant le préfixe foo :
Voici la commande pour effectuer une surveillance sur plusieurs clés foo et zoo :
Surveillance des modifications historiques des clés
Les applications peuvent souhaiter surveiller les modifications historiques de clés dans etcd. Par exemple, une application peut souhaiter recevoir toutes les modifications d’une clé ; si l’application reste connectée à etcd, alors watch est suffisant. Toutefois, si l’application ou etcd échoue, une modification peut survenir pendant l’indisponibilité, et l’application ne recevra pas la mise à jour en temps réel. Pour garantir que la mise à jour soit livrée, l’application doit pouvoir surveiller les modifications historiques des clés. Pour cela, une application peut spécifier une révision historique lors d’une surveillance, tout comme lors de la lecture d’une version antérieure de clés.
Supposons que nous ayons terminé la séquence d’opérations suivante :
Voici un exemple de surveillance des modifications historiques :
Voici un exemple de surveillance uniquement à partir du dernier changement historique :
Progression de la surveillance
Les applications peuvent souhaiter vérifier l’avancement d’une surveillance afin de déterminer à quel point le flux de surveillance est à jour. Par exemple, si une surveillance est utilisée pour mettre à jour un cache, il peut être utile de savoir si le cache est périmé par rapport à la révision obtenue à partir d’une lecture en quorum.
Les requêtes de progression peuvent être émises à l’aide de la commande « progress » dans une session de surveillance interactive afin de demander au serveur etcd d’envoyer une mise à jour de notification de progression dans le flux de surveillance :
Le numéro de révision dans la réponse de notification de progression est la révision du nœud local du serveur etcd auquel le flux de surveillance est connecté. Si ce nœud est isolé et n’appartient pas au quorum, cette révision de notification de progression peut être inférieure à la révision retournée par une lecture effectuée en quorum contre un nœud serveur etcd non isolé.
Révisions compactées
Comme nous l’avons mentionné, etcd conserve des révisions afin que les applications puissent lire des versions antérieures des clés. Toutefois, afin d’éviter de accumuler une quantité illimitée d’historique, il est important de compacter les révisions passées. Une fois la compaction effectuée, etcd supprime les révisions historiques, libérant ainsi des ressources pour une utilisation future. Toutes les données obsolètes dont la révision est antérieure à la révision compactée deviendront indisponibles.
Voici la commande pour compacter les révisions :
La révision actuelle du serveur etcd peut être obtenue en utilisant la commande get sur une clé quelconque (existante ou non) au format JSON. L’exemple ci-dessous montre la requête pour mykey, qui n’existe pas sur le serveur etcd :
Accorder des bails
Les applications peuvent accorder des bails pour des clés depuis un cluster etcd. Lorsqu’une clé est associée à un bail, sa durée de vie est liée à celle du bail, qui à son tour est régulée par une durée de vie (TTL). Chaque bail a une valeur minimale de durée de vie (TTL) spécifiée par l’application au moment de l’accord. La valeur réelle de TTL du bail est au moins égale à la durée minimale et est choisie par le cluster etcd. Dès qu’une durée de vie (TTL) d’un bail a expiré, le bail expire et toutes les clés associées sont supprimées.
Voici la commande pour accorder un bail :
Révoquer les bails
Les applications révoquent les bails par identifiant de bail. La révocation d’un bail supprime toutes les clés associées.
Supposons que nous ayons terminé la séquence d’opérations suivante :
Voici la commande pour révoquer le même bail :
Maintenir les bails actifs
Les applications peuvent maintenir un bail actif en actualisant périodiquement son TTL afin qu’il ne expire pas.
Supposons que nous ayons terminé la séquence d’opérations suivante :
Voici la commande permettant de maintenir le bail actif :
Obtenir les informations sur le bail
Les applications peuvent souhaiter connaître les informations relatives aux bails, afin de les renouveler ou de vérifier s’ils existent encore ou ont expiré. Les applications peuvent également souhaiter connaître les clés auxquelles un bail particulier est associé.
Supposons que nous ayons terminé la séquence d’opérations suivante :
Voici la commande permettant d’obtenir des informations sur le bail :
Voici la commande permettant d’obtenir des informations sur le bail ainsi que les clés associées au bail :
4 - Pourquoi utiliser une passerelle gRPC
etcd v3 utilise gRPC comme protocole de messagerie. Le projet etcd inclut un client Go basé sur gRPC ainsi qu’une utilitaire en ligne de commande, etcdctl , pour communiquer avec un cluster etcd via gRPC. Pour les langages ne disposant pas de prise en charge gRPC, etcd fournit une passerelle gRPC en JSON. Cette passerelle fournit un proxy RESTful qui traduit les requêtes HTTP/JSON en messages gRPC.
Utilisation de la passerelle gRPC
La passerelle accepte une correspondance JSON
pour les définitions de messages du protocole buffer de etcd
. Notez que les champs key et value sont définis comme des tableaux d’octets et doivent donc être encodés en base64 dans le JSON. Les exemples suivants utilisent curl, mais tout client HTTP/JSON devrait fonctionner de la même manière.
Notes
Point de terminaison de passerelle gRPC a changé depuis etcd v3.3 :
- etcd v3.2 ou antérieure utilise uniquement
[CLIENT-URL]/v3alpha/*. - etcd v3.3 utilise
[CLIENT-URL]/v3beta/*tout en conservant[CLIENT-URL]/v3alpha/*. - etcd v3.4 utilise
[CLIENT-URL]/v3/*tout en conservant[CLIENT-URL]/v3beta/*.[CLIENT-URL]/v3alpha/*est obsolète.
- etcd v3.5 ou ultérieure utilise uniquement
[CLIENT-URL]/v3/*.[CLIENT-URL]/v3beta/*est obsolète.
Le passerelle gRPC ne prend pas en charge l’authentification par le nom commun TLS.
Mettre et obtenir des clés
Utilisez les services /v3/kv/range et /v3/kv/put pour lire et écrire des clés :
Surveillance des clés
Utilisez le service /v3/watch pour surveiller les clés :
Transactions
Émettre une transaction avec /v3/kv/txn :
Authentification
Mettez en place une authentification avec le service /v3/auth :
Authentifiez-vous auprès d’etcd pour obtenir un jeton d’authentification en utilisant /v3/auth/authenticate :
Définissez l’en-tête Authorization sur le jeton d’authentification pour récupérer une clé à l’aide des identifiants d’authentification :
Réponses d’erreur
La passerelle gRPC traduit les états gRPC en codes d’état HTTP et un corps d’erreur au format JSON. À compter d’etcd v3.6, la mise à jour vers grpc-gateway v2 a modifié la gestion des erreurs (voir la note gestion des erreurs
dans le guide de migration v2), et le comportement de la passerelle est désormais conforme à google.rpc.Status (code, message, détails) tel que décrit dans modèle d’erreur d’API de Google
. Historiquement, les versions antérieures de grpc-gateway incluaient également un champ de niveau supérieur error, mais ce champ n’est plus pris en charge à partir d’etcd v3.6 et des versions ultérieures.
Les clients doivent considérer le code d’état HTTP comme l’indicateur principal de succès ou d’échec. Si une requête échoue, les clients doivent s’appuyer sur le champ message comme source principale d’information d’erreur et utiliser tout détail supplémentaire pour obtenir un contexte plus précis.
Swagger
Les définitions d’API Swagger générées peuvent être trouvées dans rpc.swagger.json .
5 - Découverte et nommage gRPC
etcd fournit un résolveur gRPC afin de prendre en charge un système de noms alternatif qui récupère les points d’accès depuis etcd pour la découverte de services gRPC. Le mécanisme sous-jacent repose sur la surveillance des mises à jour des clés préfixées par le nom du service.
Notez que cette fonctionnalité est expérimentale car elle dépend du paquet google.golang.org/grpc/resolver , qui reste expérimental dans grpc-go.
Utilisation de la découverte etcd avec go-grpc
Le client etcd fournit un résolveur gRPC permettant de résoudre les points d’accès gRPC à l’aide d’un backend etcd. Le résolveur est initialisé avec un client etcd :
Gestion des points de terminaison de service
Le résolveur etcd traite toutes les clés situées sous le préfixe de la cible de résolution suivant un “/” (par exemple, “foo/bar/my-service/”)
dont les valeurs sont encodées au format JSON (historiquement go-grpc naming.Update) comme des points de terminaison de service potentiels.
Les points de terminaison sont ajoutés au service en créant de nouvelles clés et supprimés du service en supprimant des clés.
Ajout d’un point de terminaison
De nouveaux points de terminaison peuvent être ajoutés au service via etcdctl :
La méthode endpoints.Manager du client etcd peut également enregistrer de nouveaux points d’accès avec une clé correspondant à Addr :
Pour activer l’équilibrage de charge en boucle (round-robin) lors de la connexion à un service disposant de plusieurs points d’accès, vous pouvez configurer votre connexion avec le chargeur de charge interne gRPC en boucle :
Suppression d’un point de terminaison
Les hôtes peuvent être supprimés du service via etcdctl :
La méthode endpoints.Manager du client etcd prend également en charge la suppression des points de terminaison :
Inscrire un point de terminaison avec un bail
Inscrire un point de terminaison avec un bail garantit que, si l’hôte ne peut pas maintenir un signal de cœur (par exemple, en cas de panne matérielle), il sera retiré du service :
En Go :
Mise à jour atomique des points de terminaison
Si l’on souhaite modifier plusieurs points de terminaison dans une seule transaction, endpoints.Manager peut être utilisé directement :
6 - Intégration d'etcd dans une application Go
embed pour exécuter un serveur etcd dans votre applicationLe paquet go etcd embed fournit un moyen simple d’intégrer un serveur etcd directement dans votre application.
Pour plus de détails, consultez la documentation du paquet embed .
7 - Limites système
Limite de taille de requête
etcd est conçu pour gérer des paires clé-valeur de petite taille, typiques des métadonnées. Les requêtes plus grandes fonctionnent, mais peuvent augmenter la latence des autres requêtes. Par défaut, la taille maximale de toute requête est de 1,5 MiB. Cette limite est configurable via le drapeau --max-request-bytes du serveur etcd.
Limite de taille du stockage
La limite par défaut de taille de stockage est de 2 GiB, configurable à l’aide du drapeau --quota-backend-bytes. Une taille maximale de 8 GiB est recommandée pour les environnements normaux, et etcd émet un avertissement au démarrage si la valeur configurée la dépasse.
8 - etcd features
Ce document présente un aperçu des fonctionnalités d’etcd afin d’aider les utilisateurs à mieux comprendre ces fonctionnalités et le processus de mise hors service associé. Si vous souhaitez en savoir plus sur la manière dont les fonctionnalités sont développées dans etcd, veuillez consulter ces guides de développement .
Les fonctionnalités d’etcd sont classées en trois états : expérimentales, stables et non sécurisées. Vous pouvez obtenir la liste des fonctionnalités en exécutant etcd --help.
Expérimental
Afin d’obtenir un retour rapide, toute nouvelle fonctionnalité est généralement ajoutée en tant que fonctionnalité expérimentale. Une fonctionnalité expérimentale peut être identifiée en examinant le nom du drapeau, qui doit comporter le préfixe --experimental. Veuillez prendre en compte les points suivants lors de l’utilisation d’une fonctionnalité expérimentale :
- Elle peut contenir des bogues en raison d’un manque de tests utilisateurs. Son activation peut ne pas fonctionner comme prévu.
- Elle est désactivée par défaut.
- Le support de cette fonctionnalité peut être supprimé à tout moment sans préavis.
- Elle peut être supprimée dans la prochaine version mineure ou majeure sans respecter la politique de dépréciation des fonctionnalités , sauf si elle devient stable.
- L’équipe du projet apprécierait que les utilisateurs signalent tout problème lié aux fonctionnalités expérimentales. Toutefois, ces problèmes peuvent être priorisés plus bassement que ceux liés aux fonctionnalités stables.
- Un indicateur de fonctionnalité expérimentale est déprécié lorsqu’il atteint l’état stable. Les utilisateurs doivent adopter l’indicateur stable dès que possible.
Stable
Ce stade est le plus courant pour les fonctionnalités dans etcd. Une fonctionnalité stable est caractérisée comme suit :
- Prise en charge dans le cadre des versions prises en charge d’etcd.
- Peut être activée par défaut.
- La suppression du support doit respecter la politique de dépréciation de fonctionnalité .
Non sécurisé
Les fonctionnalités non sécurisées sont rares et listées dans la section Unsafe feature: de la documentation d’utilisation d’etcd. Par défaut, elles sont désactivées. Elles doivent être utilisées avec précaution, conformément à la documentation. Une fonctionnalité non sécurisée peut être supprimée dans la prochaine version mineure ou majeure sans respecter la politique de dépréciation des fonctionnalités.
Dépréciation de fonctionnalité
Expérimental
Une fonctionnalité expérimentale est dépréciée lorsqu’elle atteint l’étape stable.
- La documentation de la fonctionnalité expérimentale affichera un message de dépréciation accompagné d’une recommandation visant à utiliser un indicateur de fonctionnalité stable associé. Par exemple,
DEPRECATED. Use <feature-name> instead. - Une fonctionnalité dépréciée sera supprimée dans la version suivante.
Stable
Lorsque le projet évolue, une fonctionnalité stable peut parfois devoir être dépréciée et supprimée. Lorsque cela se produit,
- la documentation de la fonctionnalité affichera un message d’avertissement avant la version planifiée de dépréciation. Par exemple,
To be deprecated in <release>.. Si une nouvelle fonctionnalité est déjà prévue pour remplacer la fonctionnalitéTo be deprecated, la documentation indiquera également ce fait. Par exemple,Use <feature-name> instead.. - La fonctionnalité sera dépréciée lors de la version planifiée. À ce moment-là, la documentation de la fonctionnalité affichera un message de dépréciation accompagné d’une recommandation d’utilisation d’une fonctionnalité stable associée. Par exemple,
DEPRECATED. Use <feature-name> instead.. - Une fonctionnalité dépréciée sera supprimée lors de la version suivante.
9 - Référence de l'API
Cette référence d’API est générée automatiquement à partir des fichiers nommés .proto.
service Auth (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| AuthEnable | AuthEnableRequest | AuthEnableResponse | AuthEnable active l’authentification. |
| AuthDisable | AuthDisableRequest | AuthDisableResponse | AuthDisable désactive l’authentification. |
| AuthStatus | AuthStatusRequest | AuthStatusResponse | AuthStatus affiche l’état de l’authentification. |
| Authenticate | AuthenticateRequest | AuthenticateResponse | Authenticate traite une requête d’authentification. |
| UserAdd | AuthUserAddRequest | AuthUserAddResponse | UserAdd ajoute un nouvel utilisateur. Le nom d’utilisateur ne peut pas être vide. |
| UserGet | AuthUserGetRequest | AuthUserGetResponse | UserGet obtient les informations détaillées d’un utilisateur. |
| UserList | AuthUserListRequest | AuthUserListResponse | UserList obtient la liste de tous les utilisateurs. |
| UserDelete | AuthUserDeleteRequest | AuthUserDeleteResponse | UserDelete supprime un utilisateur spécifié. |
| UserChangePassword | AuthUserChangePasswordRequest | AuthUserChangePasswordResponse | UserChangePassword modifie le mot de passe d’un utilisateur spécifié. |
| UserGrantRole | AuthUserGrantRoleRequest | AuthUserGrantRoleResponse | UserGrant accorde un rôle à un utilisateur spécifié. |
| UserRevokeRole | AuthUserRevokeRoleRequest | AuthUserRevokeRoleResponse | UserRevokeRole retire un rôle à un utilisateur spécifié. |
| RoleAdd | AuthRoleAddRequest | AuthRoleAddResponse | RoleAdd ajoute un nouveau rôle. Le nom de rôle ne peut pas être vide. |
| RoleGet | AuthRoleGetRequest | AuthRoleGetResponse | RoleGet obtient les informations détaillées sur un rôle. |
| RoleList | AuthRoleListRequest | AuthRoleListResponse | RoleList obtient la liste de tous les rôles. |
| RoleDelete | AuthRoleDeleteRequest | AuthRoleDeleteResponse | RoleDelete supprime un rôle spécifié. |
| RoleGrantPermission | AuthRoleGrantPermissionRequest | AuthRoleGrantPermissionResponse | RoleGrantPermission accorde une permission sur une clé ou une plage spécifique à un rôle spécifié. |
| RoleRevokePermission | AuthRoleRevokePermissionRequest | AuthRoleRevokePermissionResponse | RoleRevokePermission retire une permission sur une clé ou une plage spécifique à un rôle spécifié. |
service Cluster (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| MemberAdd | MemberAddRequest | MemberAddResponse | MemberAdd ajoute un membre au cluster. |
| MemberRemove | MemberRemoveRequest | MemberRemoveResponse | MemberRemove supprime un membre existant du cluster. |
| MemberUpdate | MemberUpdateRequest | MemberUpdateResponse | MemberUpdate met à jour la configuration du membre. |
| MemberList | MemberListRequest | MemberListResponse | MemberList liste tous les membres du cluster. |
| MemberPromote | MemberPromoteRequest | MemberPromoteResponse | MemberPromote promeut un membre de type apprenant Raft (non votant) en membre votant Raft. |
service KV (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| Range | RangeRequest | RangeResponse | Range récupère les clés dans la plage depuis le magasin clé-valeur. |
| Put | PutRequest | PutResponse | Put insère la clé donnée dans le magasin clé-valeur. Une requête Put incrémente la révision du magasin clé-valeur et génère un événement dans l’historique des événements. |
| DeleteRange | DeleteRangeRequest | DeleteRangeResponse | DeleteRange supprime la plage donnée depuis le magasin clé-valeur. Une requête de suppression incrémente la révision du magasin clé-valeur et génère un événement de suppression dans l’historique des événements pour chaque clé supprimée. |
| Txn | TxnRequest | TxnResponse | Txn traite plusieurs requêtes dans une seule transaction. Une requête Txn incrémente la révision du magasin clé-valeur et génère des événements avec la même révision pour chaque requête terminée. Il est interdit de modifier la même clé plusieurs fois au sein d’une même transaction. |
| Compact | CompactionRequest | CompactionResponse | Compact compresse l’historique des événements dans le magasin clé-valeur etcd. Le magasin clé-valeur doit être régulièrement compacté, sinon l’historique des événements continuera de croître indéfiniment. |
service Lease (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| LeaseGrant | LeaseGrantRequest | LeaseGrantResponse | LeaseGrant crée un bail qui expire si le serveur ne reçoit pas de demande de maintien de vie dans un délai défini. Toutes les clés associées au bail expireront et seront supprimées si le bail expire. Chaque clé expirée génère un événement de suppression dans l’historique des événements. |
| LeaseRevoke | LeaseRevokeRequest | LeaseRevokeResponse | LeaseRevoke révoque un bail. Toutes les clés associées au bail expireront et seront supprimées. |
| LeaseKeepAlive | LeaseKeepAliveRequest | LeaseKeepAliveResponse | LeaseKeepAlive maintient le bail actif en transmettant en continu des demandes de maintien de vie du client vers le serveur et des réponses de maintien de vie du serveur vers le client. |
| LeaseTimeToLive | LeaseTimeToLiveRequest | LeaseTimeToLiveResponse | LeaseTimeToLive récupère les informations relatives au bail. |
| LeaseLeases | LeaseLeasesRequest | LeaseLeasesResponse | LeaseLeases liste tous les bails existants. |
service Maintenance (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| Alarme | AlarmRequest | AlarmResponse | Alarme active, désactive et interroge les alarmes relatives à l’intégrité du cluster. |
| Statut | StatusRequest | StatusResponse | Statut obtient l’état du membre. |
| Défragmentation | DefragmentRequest | DefragmentResponse | Défragmentation défragmente la base de données du membre backend afin de récupérer de l’espace de stockage. |
| Hachage | HashRequest | HashResponse | Hachage calcule le hachage de l’espace de clés backend entier, y compris les clés, les bails et les autres compartiments dans le stockage. Conçu uniquement à des fins de test ! Ne pas compter sur cette fonctionnalité en production avec des transactions en cours, car l’opération Hachage ne détient pas de verrous MVCC. Utilisez plutôt l’API “HashKV” pour vérifier la cohérence du compartiment “key”. |
| HachageKV | HashKVRequest | HashKVResponse | HachageKV calcule le hachage de toutes les clés MVCC jusqu’à une révision donnée. Il ne parcourt que le compartiment “key” dans le stockage backend. |
| Instantané | SnapshotRequest | SnapshotResponse | Instantané envoie un instantané de l’ensemble du backend depuis un membre vers un client via un flux. |
| Transfert du leader | MoveLeaderRequest | MoveLeaderResponse | Transfert du leader demande au nœud leader actuel de transférer son leadership au destinataire. |
| Mise à jour vers une version inférieure | DowngradeRequest | DowngradeResponse | Mise à jour vers une version inférieure demande une mise à jour vers une version inférieure, vérifie la faisabilité ou annule la mise à jour vers une version inférieure sur la version du cluster. Prise en charge depuis etcd 3.5. |
service Watch (api/etcdserverpb/rpc.proto)
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| Surveillance | WatchRequest | WatchResponse | La surveillance observe les événements survenus ou survenant. Les entrées et sorties sont des flux ; le flux d’entrée sert à créer et annuler des observateurs, tandis que le flux de sortie envoie les événements. Une seule requête RPC de surveillance peut surveiller plusieurs plages de clés, en diffusant les événements de plusieurs surveillance simultanément. L’historique complet des événements peut être surveillé à partir de la dernière révision de compactage. |
message AlarmMember (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| memberID | memberID est l’identifiant du membre associé à l’alarme déclenchée. | uint64 |
| alarm | alarm est le type d’alarme qui a été déclenchée. | AlarmType |
message AlarmRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action est le type de requête d’alarme à émettre. L’action peut être GET pour obtenir les états d’alarme, ACTIVATE pour activer une alarme, ou DEACTIVATE pour désactiver une alarme activée. | AlarmAction |
| memberID | memberID est l’identifiant du membre associé à l’alarme. Si memberID est 0, la requête d’alarme concerne tous les membres. | uint64 |
| alarm | alarm est le type d’alarme à prendre en compte pour cette requête. | AlarmType |
message AlarmResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| alarms | alarms est une liste d’alertes associées à la requête d’alerte. | (slice de) AlarmMember |
message AuthDisableRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message AuthDisableResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthEnableRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message AuthEnableResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthRoleAddRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name est le nom du rôle à ajouter au système d’authentification. | string |
message AuthRoleAddResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthRoleDeleteRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | chaîne de caractères |
message AuthRoleDeleteResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthRoleGetRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | chaîne de caractères |
message AuthRoleGetResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| header | ResponseHeader | |
| perm | (tranche de) authpb.Permission |
message AuthRoleGrantPermissionRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name est le nom du rôle auquel la permission sera accordée. | string |
| perm | perm est la permission à accorder au rôle. | authpb.Permission |
message AuthRoleGrantPermissionResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthRoleListRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message AuthRoleListResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (tranche de) string |
message AuthRoleRevokePermissionRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string | |
| key | bytes | |
| range_end | bytes |
message AuthRoleRevokePermissionResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthStatusRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message AuthStatusResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| enabled | bool | |
| authRevision | authRevision est la révision actuelle du magasin d’authentification | uint64 |
message AuthUserAddRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string | |
| options | authpb.UserAddOptions | |
| hashedPassword | string |
message AuthUserAddResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthUserChangePasswordRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name est le nom de l’utilisateur dont le mot de passe est modifié. | string |
| password | password est le nouveau mot de passe de l’utilisateur. Notez que ce champ sera supprimé au niveau de l’API. | string |
| hashedPassword | hashedPassword est le nouveau mot de passe de l’utilisateur. Notez que ce champ sera initialisé au niveau de l’API. | string |
message AuthUserChangePasswordResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthUserDeleteRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name est le nom de l’utilisateur à supprimer. | string |
message AuthUserDeleteResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthUserGetRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string |
message AuthUserGetResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (tranche de) string |
message AuthUserGrantRoleRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| user | user est le nom de l’utilisateur auquel il faut attribuer un rôle donné. | string |
| role | role est le nom du rôle à attribuer à l’utilisateur. | string |
message AuthUserGrantRoleResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthUserListRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message AuthUserListResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| users | (tranche de) string |
message AuthUserRevokeRoleRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| role | string |
message AuthUserRevokeRoleResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message AuthenticateRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string |
message AuthenticateResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| token | le jeton est un jeton autorisé pouvant être utilisé dans les RPC suivants | string |
message CompactionRequest (api/etcdserverpb/rpc.proto)
CompactionRequest compacte le magasin clé-valeur jusqu’à une révision donnée. Toutes les clés obsolètes dont la révision est inférieure à la révision de compactage seront supprimées.
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| révision | révision est la révision du magasin clé-valeur pour l’opération de compactage. | int64 |
| physique | physique est défini afin que l’appel RPC attende que le compactage soit physiquement appliqué à la base de données locale, de sorte que les entrées compactées soient totalement supprimées de la base de données arrière. | bool |
message CompactionResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message Compare (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| result | result est l’opération de comparaison logique pour cette comparaison. | CompareResult |
| target | target est le champ clé-valeur à inspecter pour la comparaison. | CompareTarget |
| key | key est la clé concernée par l’opération de comparaison. | bytes |
| target_union | oneof | |
| version | version est la version de la clé donnée. | int64 |
| create_revision | create_revision est la révision de création de la clé donnée. | int64 |
| mod_revision | mod_revision est la dernière révision de modification de la clé donnée. | int64 |
| value | value est la valeur de la clé donnée, en bytes. | bytes |
| lease | lease est l’identifiant du bail associé à la clé donnée. | int64 |
| range_end | range_end compare la cible donnée à toutes les clés de la plage [key, range_end). Voir RangeRequest pour plus de détails sur les plages de clés. | bytes |
message DefragmentRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message DefragmentResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message DeleteRangeRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key est la première clé à supprimer dans la plage. | bytes |
| range_end | range_end est la clé suivant la dernière clé à supprimer dans la plage [key, range_end). Si range_end n’est pas fourni, la plage est définie comme ne contenant que la clé fournie. Si range_end est supérieure d’un bit à la clé fournie, la plage correspond à toutes les clés ayant le préfixe (la clé fournie). Si range_end est ‘\0’, la plage correspond à toutes les clés supérieures ou égales à la clé fournie. | bytes |
| prev_kv | Si prev_kv est défini, etcd récupère les paires clé-valeur précédentes avant leur suppression. Les paires clé-valeur précédentes seront renvoyées dans la réponse de suppression. | bool |
message DeleteRangeResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| deleted | deleted est le nombre de clés supprimées par la requête de suppression par plage. | int64 |
| prev_kvs | si prev_kv est défini dans la requête, les paires clé-valeur précédentes seront renvoyées. | (slice de) mvccpb.KeyValue |
message DowngradeInfo (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| enabled | enabled indique si le cluster est activé pour une mise à jour inverse. | bool |
| targetVersion | targetVersion est la version cible de la mise à jour inverse. | string |
message DowngradeRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action est le type de demande de rétrogradation à émettre. L’action peut VALIDER la version cible, DOWNGRADE le cluster vers une version antérieure, ou CANCELLER le travail de rétrogradation en cours. | DowngradeAction |
| version | version est la version cible de la rétrogradation. | string |
message DowngradeResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version est la version actuelle du cluster. | string |
message DowngradeVersionTestRequest (api/etcdserverpb/rpc.proto)
DowngradeVersionTestRequest n’est utilisé que à des fins de test. La version indiquée dans cette requête sera lue comme la version des enregistrements WAL. Si la version cible du downgrade est inférieure à cette version, alors le downgrade (en ligne) ou la migration (hors ligne) n’est pas sécurisé, et ne doit donc pas être autorisé.
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ver | string |
message HashKVRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| révision | révision est la révision du magasin clé-valeur pour l’opération de hachage. | int64 |
message HashKVResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash est la valeur de hachage calculée à partir des clés MVCC du membre répondant jusqu’à une révision donnée. | uint32 |
| compact_revision | compact_revision est la révision compactée du magasin clé-valeur au moment où le hachage commence. | int64 |
| hash_revision | hash_revision est la révision jusqu’à laquelle le hachage est calculé. | int64 |
message HashRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message HashResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash est la valeur de hachage calculée à partir du backend des données clé-valeur du membre répondant. | uint32 |
message LeaseCheckpoint (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du bail à sauvegarder. | int64 |
| remaining_TTL | remaining_TTL est le temps restant avant l’expiration du bail. | int64 |
message LeaseCheckpointRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| checkpoints | (slice de) LeaseCheckpoint |
message LeaseCheckpointResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message LeaseGrantRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| TTL | TTL est le délai d’expiration conseillé en secondes. Un bail expiré retourne -1. | int64 |
| ID | ID est l’identifiant demandé pour le bail. Si ID est défini à 0, le concessionnaire choisit un identifiant. | int64 |
message LeaseGrantResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID est l’identifiant de bail pour le bail accordé. | int64 |
| TTL | TTL est le délai de vie (time-to-live) choisi par le serveur, en secondes. | int64 |
| error | string |
message LeaseKeepAliveRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du bail à maintenir actif. | int64 |
message LeaseKeepAliveResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID est l’identifiant du bail issu de la requête de maintien. | int64 |
| TTL | TTL est le nouveau délai de validité du bail. | int64 |
message LeaseLeasesRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message LeaseLeasesResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| leases | (tranche de) LeaseStatus |
message LeaseRevokeRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du bail à révoquer. Lorsque l’identifiant est révoqué, toutes les clés associées seront supprimées. | int64 |
message LeaseRevokeResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message LeaseStatus (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | int64 |
message LeaseTimeToLiveRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du bail. | int64 |
| keys | keys vaut true pour interroger toutes les clés associées à ce bail. | bool |
message LeaseTimeToLiveResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID est l’identifiant du bail issu de la requête de renouvellement. | int64 |
| TTL | TTL est le temps restant en secondes pour le bail ; le bail expirera en moins de TTL+1 secondes. | int64 |
| grantedTTL | GrantedTTL est le délai initial accordé en secondes lors de la création ou du renouvellement du bail. | int64 |
| keys | keys est la liste des clés associées à ce bail. | (slice de) bytes |
message Member (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du membre pour ce membre. | uint64 |
| name | name est le nom lisible par l’humain du membre. Si le membre n’est pas démarré, le nom sera une chaîne vide. | string |
| peerURLs | peerURLs est la liste des URL que le membre expose au cluster pour la communication. | (slice de) string |
| clientURLs | clientURLs est la liste des URL que le membre expose aux clients pour la communication. Si le membre n’est pas démarré, clientURLs sera vide. | (slice de) string |
| isLearner | isLearner indique si le membre est un membre apprenant Raft. | bool |
message MemberAddRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| peerURLs | peerURLs est la liste des URL que le membre ajouté utilisera pour communiquer avec le cluster. | (slice de) chaîne |
| isLearner | isLearner indique si le membre ajouté est un membre apprenant Raft. | bool |
message MemberAddResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| member | member contient les informations du membre ajouté. | Member |
| members | members est la liste de tous les membres après l’ajout du nouveau membre. | (slice de) Member |
message MemberListRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| linearizable | bool |
message MemberListResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| membres | membres est une liste de tous les membres associés au cluster. | (liste de) Membre |
message MemberPromoteRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du membre à promouvoir. | uint64 |
message MemberPromoteResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| membres | membres est une liste de tous les membres après la promotion du membre. | (liste de) Member |
message MemberRemoveRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du membre à supprimer. | uint64 |
message MemberRemoveResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| membres | membres est une liste de tous les membres après suppression du membre. | (liste de) Member |
message MemberUpdateRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID est l’identifiant du membre à mettre à jour. | uint64 |
| peerURLs | peerURLs est la nouvelle liste d’URLs que le membre utilisera pour communiquer avec le cluster. | (slice de) string |
message MemberUpdateResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| membres | membres est une liste de tous les membres après mise à jour du membre. | (liste de) Member |
message MoveLeaderRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| targetID | targetID est l’identifiant du nœud du nouveau leader. | uint64 |
message MoveLeaderResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
message PutRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key est la clé, sous forme d’octets, à insérer dans le magasin clé-valeur. | bytes |
| value | value est la valeur, sous forme d’octets, à associer à la clé dans le magasin clé-valeur. | bytes |
| lease | lease est l’identifiant de bail à associer à la clé dans le magasin clé-valeur. Une valeur de bail égale à 0 indique l’absence de bail. | int64 |
| prev_kv | Si prev_kv est défini, etcd récupère la paire clé-valeur précédente avant de la modifier. La paire clé-valeur précédente est renvoyée dans la réponse de mise à jour. | bool |
| ignore_value | Si ignore_value est défini, etcd met à jour la clé en utilisant sa valeur actuelle. Retourne une erreur si la clé n’existe pas. | bool |
| ignore_lease | Si ignore_lease est défini, etcd met à jour la clé en utilisant son bail actuel. Retourne une erreur si la clé n’existe pas. | bool |
message PutResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| prev_kv | Si prev_kv est défini dans la requête, la paire clé-valeur précédente sera renvoyée. | mvccpb.KeyValue |
message RangeRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key est la première clé de la plage. Si range_end n’est pas fourni, la requête ne recherche que key. | bytes |
| range_end | range_end est la borne supérieure de la plage demandée [key, range_end). Si range_end est ‘\0’, la plage comprend toutes les clés >= key. Si range_end est key plus un (par exemple, “aa”+1 == “ab”, “a\xff”+1 == “b”), la requête retourne toutes les clés ayant key comme préfixe. Si key et range_end sont tous deux ‘\0’, la requête retourne toutes les clés. | bytes |
| limit | limit est une limite sur le nombre de clés retournées par la requête. Si limit est défini à 0, il n’y a pas de limite. | int64 |
| revision | revision est le point dans le temps du magasin clé-valeur à utiliser pour la plage. Si revision est inférieur ou égal à zéro, la plage porte sur le magasin clé-valeur le plus récent. Si la révision a été compactée, la réponse renvoie ErrCompacted. | int64 |
| sort_order | sort_order est l’ordre des résultats triés retournés. | SortOrder |
| sort_target | sort_target est le champ clé-valeur à utiliser pour le tri. | SortTarget |
| serializable | serializable définit la requête de plage pour utiliser des lectures locales sérialisables. Les requêtes de plage sont linéarisables par défaut ; les requêtes linéarisables ont une latence plus élevée et un débit plus faible que les requêtes sérialisables, mais reflètent le consensus actuel du cluster. Pour de meilleures performances, au prix de lectures potentiellement obsolètes, une requête de plage sérialisable est servie localement sans nécessiter de consensus avec les autres nœuds du cluster. | bool |
| keys_only | keys_only, lorsqu’il est défini, retourne uniquement les clés et non les valeurs. | bool |
| count_only | count_only, lorsqu’il est défini, retourne uniquement le nombre de clés dans la plage. | bool |
| min_mod_revision | min_mod_revision est la borne inférieure des révisions de modification des clés retournées ; toutes les clés ayant une révision de modification inférieure sont filtrées. | int64 |
| max_mod_revision | max_mod_revision est la borne supérieure des révisions de modification des clés retournées ; toutes les clés ayant une révision de modification supérieure sont filtrées. | int64 |
| min_create_revision | min_create_revision est la borne inférieure des révisions de création des clés retournées ; toutes les clés ayant une révision de création inférieure sont filtrées. | int64 |
| max_create_revision | max_create_revision est la borne supérieure des révisions de création des clés retournées ; toutes les clés ayant une révision de création supérieure sont filtrées. | int64 |
message RangeResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| kvs | kvs est la liste des paires clé-valeur correspondant à la requête de plage. kvs est vide lorsque le comptage est demandé. | (slice de) mvccpb.KeyValue |
| more | more indique s’il reste d’autres clés à renvoyer dans la plage demandée. | bool |
| count | count est défini sur le nombre réel de clés présentes dans la plage lorsqu’une requête de comptage est effectuée. Contrairement à Kvs, il n’est pas affecté par les limites ni les filtres (par exemple, Min/Max, Création/Modification, Révisions) et reflète le comptage complet dans la plage spécifiée. | int64 |
message RequestOp (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request | request est une union de types de requête acceptés par une transaction. | oneof |
| request_range | RangeRequest | |
| request_put | PutRequest | |
| request_delete_range | DeleteRangeRequest | |
| request_txn | TxnRequest |
message ResponseHeader (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| cluster_id | cluster_id est l’identifiant du cluster qui a envoyé la réponse. | uint64 |
| member_id | member_id est l’identifiant du membre qui a envoyé la réponse. | uint64 |
| revision | revision est la révision du magasin clé-valeur au moment où la requête a été appliquée, et elle est non définie (donc 0) en cas d’appels n’interagissant pas avec le magasin clé-valeur. Pour les réponses de progression de surveillance, le champ header.revision indique la progression. Tous les événements futurs reçus sur ce flux sont garantis d’avoir un numéro de révision strictement supérieur au numéro de révision header.revision. | int64 |
| raft_term | raft_term est le terme Raft au moment où la requête a été appliquée. | uint64 |
message ResponseOp (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| response | response est une union de types de réponse retournés par une transaction. | oneof |
| response_range | RangeResponse | |
| response_put | PutResponse | |
| response_delete_range | DeleteRangeResponse | |
| response_txn | TxnResponse |
message SnapshotRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message SnapshotResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | header contient les informations actuelles du magasin clé-valeur. Le premier header dans le flux d’instantané indique le moment précis de l’instantané. | ResponseHeader |
| remaining_bytes | remaining_bytes est le nombre d’octets de données binaires à envoyer après ce message | uint64 |
| blob | blob contient le morceau suivant de l’instantané dans le flux d’instantané. | bytes |
| version | version locale du serveur qui a créé l’instantané. Dans un cluster avec des binaires de versions différentes, chaque cluster peut renvoyer un résultat différent. Indique quelle version du serveur etcd doit être utilisée pour restaurer l’instantané. | string |
message StatusRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message StatusResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version est la version du protocole du cluster utilisée par le membre répondant. | string |
| dbSize | dbSize est la taille de la base de données du backend physiquement allouée, en octets, du membre répondant. | int64 |
| leader | leader est l’identifiant du membre que le membre répondant considère comme leader actuel. | uint64 |
| raftIndex | raftIndex est l’index de validation Raft actuel du membre répondant. | uint64 |
| raftTerm | raftTerm est le terme Raft actuel du membre répondant. | uint64 |
| raftAppliedIndex | raftAppliedIndex est l’index appliqué Raft actuel du membre répondant. | uint64 |
| errors | errors contient les informations et l’état d’alarme/santé. | (slice de) string |
| dbSizeInUse | dbSizeInUse est la taille de la base de données du backend logiquement utilisée, en octets, du membre répondant. | int64 |
| isLearner | isLearner indique si le membre est un membre apprenant Raft. | bool |
| storageVersion | storageVersion est la version du fichier de base de données. Elle peut être mise à jour avec un délai par rapport à la version cible du cluster. | string |
| dbSizeQuota | dbSizeQuota est la limite de stockage etcd configurée en octets (valeur passée à l’instance etcd par le drapeau –quota-backend-bytes) | int64 |
| downgradeInfo | downgradeInfo indique s’il existe un processus de rétrogradation. | DowngradeInfo |
message TxnRequest (api/etcdserverpb/rpc.proto)
Du papier Google PaxosDB : Notre implémentation repose sur une primitive puissante que nous appelons MultiOp. Toutes les autres opérations sur la base de données, à l’exception de l’itération, sont implémentées comme un appel unique à MultiOp. Un MultiOp est appliqué de manière atomique et se compose de trois composants : 1. Une liste de tests appelée garde. Chaque test dans la garde vérifie une entrée unique dans la base de données. Il peut vérifier l’absence ou la présence d’une valeur, ou comparer avec une valeur donnée. Deux tests différents dans la garde peuvent s’appliquer à la même ou à des entrées différentes dans la base de données. Tous les tests de la garde sont appliqués, et MultiOp retourne les résultats. Si tous les tests sont vrais, MultiOp exécute l’opération t op (voir l’élément 2 ci-dessous), sinon il exécute l’opération f op (voir l’élément 3 ci-dessous). 2. Une liste d’opérations sur la base de données appelée t op. Chaque opération de la liste est soit une opération d’insertion, de suppression ou de recherche, et s’applique à une seule entrée de la base de données. Deux opérations différentes de la liste peuvent s’appliquer à la même ou à des entrées différentes dans la base de données. Ces opérations sont exécutées si la garde évalue à vrai. 3. Une liste d’opérations sur la base de données appelée f op. Comme t op, mais exécutée si la garde évalue à faux.
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| compare | compare est une liste de prédicats représentant une conjonction de termes. Si les comparaisons réussissent, les requêtes réussies seront traitées dans l’ordre, et la réponse contiendra leurs réponses respectives dans l’ordre. Si les comparaisons échouent, les requêtes échouées seront traitées dans l’ordre, et la réponse contiendra leurs réponses respectives dans l’ordre. | (liste de) Compare |
| success | success est une liste de requêtes qui seront appliquées lorsque compare évalue à true. | (liste de) RequestOp |
| failure | failure est une liste de requêtes qui seront appliquées lorsque compare évalue à false. | (liste de) RequestOp |
message TxnResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| succeeded | succeeded est défini à true si la comparaison a été évaluée à true, ou à false sinon. | bool |
| responses | responses est une liste de réponses correspondant aux résultats de l’application de succès si succeeded est true, ou d’échec si succeeded est false. | (slice de) ResponseOp |
message WatchCancelRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| watch_id | watch_id est l’identifiant de l’observateur à annuler afin qu’aucun événement supplémentaire ne soit transmis. | int64 |
message WatchCreateRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key est la clé à enregistrer pour la surveillance. | bytes |
| range_end | range_end est la fin de la plage [key, range_end) à surveiller. Si range_end n’est pas fourni, seule la clé spécifiée est surveillée. Si range_end est égal à ‘\0’, toutes les clés supérieures ou égales à la clé spécifiée sont surveillées. Si range_end est supérieure d’un bit à la clé donnée, toutes les clés ayant le préfixe (la clé donnée) sont surveillées. | bytes |
| start_revision | start_revision est une révision facultative à partir de laquelle commencer la surveillance (inclusivement). Aucune valeur de start_revision signifie « maintenant ». | int64 |
| progress_notify | progress_notify est défini afin que le serveur etcd envoie périodiquement une réponse de surveillance sans événements à l’observateur si aucun événement récent n’a eu lieu. Cela est utile lorsque les clients souhaitent récupérer un observateur déconnecté à partir d’une révision connue récente. Le serveur etcd peut décider de la fréquence à laquelle il envoie les notifications en fonction de la charge actuelle. | bool |
| filters | filters filtre les événements côté serveur avant leur envoi à l’observateur. | (slice de) FilterType |
| prev_kv | Si prev_kv est défini, l’observateur créé reçoit la paire clé-valeur précédente avant l’événement. Si la paire clé-valeur précédente a déjà été compactée, rien n’est retourné. | bool |
| watch_id | Si watch_id est fourni et non nul, il sera attribué à cet observateur. Étant donné que la création d’un observateur dans etcd n’est pas une opération synchrone, cela permet d’assurer un ordre correct lors de la création de plusieurs observateurs sur le même flux. La création d’un observateur avec un ID déjà utilisé sur le flux provoque une erreur. | int64 |
| fragment | fragment permet de diviser de grandes révisions en plusieurs réponses de surveillance. | bool |
message WatchProgressRequest (api/etcdserverpb/rpc.proto)
Demande que le statut d’avancement du flux de surveillance soit envoyé dans le flux de réponse de surveillance dès que possible.
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
message WatchRequest (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request_union | request_union est une requête visant à créer un nouvel observateur ou à annuler un observateur existant. | oneof |
| create_request | WatchCreateRequest | |
| cancel_request | WatchCancelRequest | |
| progress_request | WatchProgressRequest |
message WatchResponse (api/etcdserverpb/rpc.proto)
| Champ | Description | Type |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| watch_id | watch_id est l’identifiant de l’observateur correspondant à la réponse. | int64 |
| created | created est défini à true si la réponse correspond à une requête de création d’observateur. Le client doit enregistrer l’identifiant d’observateur et s’attendre à recevoir des événements pour l’observateur créé depuis le même flux. Tous les événements envoyés à l’observateur créé seront associés au même watch_id. | bool |
| canceled | canceled est défini à true si la réponse correspond à une requête d’annulation d’observateur ou si la révision de départ a déjà été compactée. Aucun événement supplémentaire ne sera envoyé à l’observateur annulé. | bool |
| compact_revision | compact_revision est défini à l’index minimum si un observateur tente de surveiller à une révision compactée. Cela se produit lorsqu’un observateur est créé à une révision compactée ou lorsque l’observateur ne parvient pas à suivre l’évolution du magasin clé-valeur. Le client doit traiter l’observateur comme annulé et ne pas tenter de créer un nouvel observateur avec la même révision de départ. | int64 |
| cancel_reason | cancel_reason indique la raison de l’annulation de l’observateur. | string |
| fragment | fragment est défini à true si une réponse de surveillance importante a été divisée en plusieurs réponses. | bool |
| events | (slice de) mvccpb.Event |
message Event (api/mvccpb/kv.proto)
| Champ | Description | Type |
|---|---|---|
| type | type est le type d’événement. Si type est un PUT, cela indique que de nouvelles données ont été stockées pour la clé. Si type est un DELETE, cela indique que la clé a été supprimée. | EventType |
| kv | kv contient le KeyValue associé à l’événement. Un événement PUT contient la paire clé-valeur actuelle. Un événement PUT avec kv.Version=1 indique la création d’une clé. Un événement DELETE/EXPIRE contient la clé supprimée, avec sa révision de modification définie à la révision de la suppression. | KeyValue |
| prev_kv | prev_kv contient la paire clé-valeur avant l’événement. | KeyValue |
message KeyValue (api/mvccpb/kv.proto)
| Champ | Description | Type |
|---|---|---|
| key | key est la clé sous forme d’octets. Une clé vide n’est pas autorisée. | octets |
| create_revision | create_revision est la révision de la dernière création sur cette clé. | int64 |
| mod_revision | mod_revision est la révision de la dernière modification sur cette clé. | int64 |
| version | version est la version de la clé. Une suppression réinitialise la version à zéro, et toute modification de la clé augmente sa version. | int64 |
| value | value est la valeur stockée par la clé, sous forme d’octets. | octets |
| lease | lease est l’ID du bail associé à la clé. Lorsque le bail associé expire, la clé sera supprimée. Si lease vaut 0, aucun bail n’est associé à la clé. | int64 |
message Lease (server/lease/leasepb/lease.proto)
| Champ | Description | Type |
|---|---|---|
| ID | int64 | |
| TTL | int64 | |
| RemainingTTL | int64 |
message LeaseInternalRequest (server/lease/leasepb/lease.proto)
| Champ | Description | Type |
|---|---|---|
| LeaseTimeToLiveRequest | etcdserverpb.LeaseTimeToLiveRequest |
message LeaseInternalResponse (server/lease/leasepb/lease.proto)
| Champ | Description | Type |
|---|---|---|
| LeaseTimeToLiveResponse | etcdserverpb.LeaseTimeToLiveResponse |
message Permission (api/authpb/auth.proto)
Les autorisations constituent une entité unique
| Champ | Description | Type |
|---|---|---|
| permType | Type | |
| key | bytes | |
| range_end | bytes |
message Role (api/authpb/auth.proto)
Le rôle est une entrée unique dans le bac authRoles
| Champ | Description | Type |
|---|---|---|
| name | bytes | |
| keyPermission | (tranche de) Permission |
message User (api/authpb/auth.proto)
Utilisateur est une entrée unique dans le bucket authUsers
| Champ | Description | Type |
|---|---|---|
| name | bytes | |
| password | bytes | |
| roles | (tranche de) string | |
| options | UserAddOptions |
message UserAddOptions (api/authpb/auth.proto)
| Champ | Description | Type |
|---|---|---|
| no_password | bool |
10 - Référence API : concurrence
Cette référence d’API est générée automatiquement à partir des fichiers nommés .proto.
service Lock (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
Le service de verrouillage expose des fonctionnalités de verrouillage côté client sous forme d’une interface gRPC.
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| Lock | LockRequest | LockResponse | Lock acquiert un verrou partagé distribué sur un verrou nommé donné. En cas de succès, elle retourne une clé unique qui reste existante tant que le verrou est détenu par l’appelant. Cette clé peut être utilisée conjointement avec des transactions afin de garantir en toute sécurité que les mises à jour sur etcd ne s’effectuent qu’en tenant le verrou. Le verrou est détenu jusqu’à ce que Unlock soit appelé sur la clé ou que le bail associé au propriétaire expire. |
| Unlock | UnlockRequest | UnlockResponse | Unlock prend une clé retournée par Lock et libère la possession du verrou. Le prochain appelant de Lock en attente du verrou est alors réveillé et obtient la possession du verrou. |
message LockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Champ | Description | Type |
|---|---|---|
| name | name est l’identifiant de la verrouille partagée distribuée à acquérir. | bytes |
| lease | lease est l’ID du bail qui sera attaché à la possession du verrou. Si le bail expire ou est révoqué et qu’il détient actuellement le verrou, celui-ci est automatiquement libéré. Les appels à Lock avec le même bail seront traités comme une seule acquisition ; verrouiller deux fois avec le même bail est sans effet. | int64 |
message LockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| key | key est une clé qui existera dans etcd pendant toute la durée où l’appelant du verrou détient le verrou. Les utilisateurs ne doivent pas modifier cette clé, sinon le verrou peut présenter un comportement indéfini. | bytes |
message UnlockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Champ | Description | Type |
|---|---|---|
| key | key est la clé d’acquisition du verrou octroyée par Lock. | bytes |
message UnlockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
service Election (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
Le service d’élection expose des fonctionnalités d’élection côté client sous forme d’une interface gRPC.
| Méthode | Type de requête | Type de réponse | Description |
|---|---|---|---|
| Campaign | CampaignRequest | CampaignResponse | Campaign attend d’acquérir le leadership lors d’une élection, en retournant une clé de leader représentant le leadership si l’opération réussit. Cette clé de leader peut ensuite être utilisée pour publier de nouvelles valeurs dans l’élection, protéger transactionnellement les requêtes d’API en fonction du maintien du leadership, ou se retirer de l’élection. |
| Proclaim | ProclaimRequest | ProclaimResponse | Proclaim met à jour la valeur publiée par le leader avec une nouvelle valeur. |
| Leader | LeaderRequest | LeaderResponse | Leader retourne la proclamation actuelle de l’élection, le cas échéant. |
| Observe | LeaderRequest | LeaderResponse | Observe diffuse les proclamations d’élection dans l’ordre, telles qu’elles sont émises par les leaders élus. |
| Resign | ResignRequest | ResignResponse | Resign libère le leadership de l’élection afin que d’autres candidats puissent acquérir le leadership. |
message CampaignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| name | name est l’identifiant de l’élection pour la campagne. | bytes |
| lease | lease est l’ID du bail associé à la direction de l’élection. Si le bail expire ou est révoqué avant la démission de la direction, la direction est transférée au prochain candidat, le cas échéant. | int64 |
| value | value est la valeur déclarée initiale définie lorsque le candidat remporte l’élection. | bytes |
message CampaignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| leader | leader décrit les ressources utilisées pour la détention du rôle de leader lors de l’élection. | LeaderKey |
message LeaderKey (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| name | name est l’identifiant d’élection correspondant à la clé de leadership. | bytes |
| key | key est une clé opaque représentant la possession de l’élection. Si la clé est supprimée, le leadership est perdu. | bytes |
| rev | rev est la révision de création de la clé. Elle peut être utilisée pour vérifier la possession d’une élection au cours de transactions en testant que la révision de création de la clé correspond à rev. | int64 |
| lease | lease est l’ID du bail du leader de l’élection. | int64 |
message LeaderRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| name | name est l’identifiant d’élection pour les informations de leadership. | bytes |
message LeaderResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| kv | kv est la paire clé-valeur représentant la mise à jour récente du leader. | mvccpb.KeyValue |
message ProclaimRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| leader | leader est la détenue du leadership lors de l’élection. | LeaderKey |
| value | value est une mise à jour destinée à remplacer la valeur actuelle du leader. | bytes |
message ProclaimResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
message ResignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| leader | leader est la prise de leadership à abandonner par démission. | LeaderKey |
message ResignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Champ | Description | Type |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
message Event (api/mvccpb/kv.proto)
| Champ | Description | Type |
|---|---|---|
| type | type est le type d’événement. Si type est un PUT, cela indique que de nouvelles données ont été stockées pour la clé. Si type est un DELETE, cela indique que la clé a été supprimée. | EventType |
| kv | kv contient la paire clé-valeur pour l’événement. Un événement PUT contient la paire clé-valeur actuelle. Un événement PUT avec kv.Version=1 indique la création d’une clé. Un événement DELETE/EXPIRE contient la clé supprimée, avec sa révision de modification définie à la révision de la suppression. | KeyValue |
| prev_kv | prev_kv contient la paire clé-valeur avant l’événement. | KeyValue |
message KeyValue (api/mvccpb/kv.proto)
| Champ | Description | Type |
|---|---|---|
| key | key est la clé sous forme d’octets. Une clé vide n’est pas autorisée. | octets |
| create_revision | create_revision est la révision de la dernière création sur cette clé. | int64 |
| mod_revision | mod_revision est la révision de la dernière modification sur cette clé. | int64 |
| version | version est la version de la clé. Une suppression réinitialise la version à zéro, et toute modification de la clé augmente sa version. | int64 |
| value | value est la valeur stockée par la clé, sous forme d’octets. | octets |
| bail | bail est l’ID du bail associé à la clé. Lorsque le bail associé expire, la clé sera supprimée. Si bail est 0, aucun bail n’est associé à la clé. | int64 |