Aller au contenu

Consul

Copier toutes les commandes Générer PDF

HashiCorp complet Commandes et workflows Consul pour la découverte de service, la gestion de configuration et le maillage de service.

Installation et configuration

Command Description
consul version Show Consul version
consul agent -dev Start development agent
consul agent -config-dir=/etc/consul.d Start with configuration
consul members List cluster members
consul info Show agent information

Gestion des agents

Opérations des agents de base

Command Description
consul agent -server -bootstrap-expect=3 Start server agent
consul agent -client=0.0.0.0 Start client agent
consul join 192.168.1.100 Join cluster
consul leave Gracefully leave cluster
consul reload Reload configuration

Configuration de l'agent

Command Description
consul validate /etc/consul.d Validate configuration
consul configtest Test configuration

Découverte des services

Enregistrement des services

Command Description
consul services register service.json Register service from file
consul services deregister service-id Deregister service
consul catalog services List all services
consul catalog nodes List all nodes

Demandes de service

Command Description
consul catalog service web List instances of service
consul catalog service web -tag production Filter by tag
consul health service web Health check status
consul health node node1 Node health status

DNS Interface

Command Description
dig @127.0.0.1 -p 8600 web.service.consul Query service via DNS
dig @127.0.0.1 -p 8600 web.service.dc1.consul Query specific datacenter
dig @127.0.0.1 -p 8600 node1.node.consul Query node via DNS

Magasin de valeurs clés

Opérations KV

Command Description
consul kv put config/database/url "postgresql://..." Store key-value
consul kv get config/database/url Retrieve value
consul kv get -recurse config/ Get all keys under prefix
consul kv delete config/database/url Delete key
consul kv delete -recurse config/ Delete all keys under prefix

Opérations avancées de KV

Command Description
consul kv put -cas -modify-index=123 config/app/version "2.0" Conditional update
consul kv get -detailed config/app/version Get with metadata
consul kv export config/ Export keys
consul kv import @backup.json Import keys

Contrôles de santé

Gestion des contrôles de santé

Command Description
consul health checks List all health checks
consul health checks web List checks for service
consul health state critical List critical checks
consul health state passing List passing checks

Listes de contrôle d'accès (LAC)

ACL Gestion

Command Description
consul acl bootstrap Bootstrap ACL system
consul acl token create -description="Web service token" Create token
consul acl token list List tokens
consul acl token delete TOKEN_ID Delete token

Politiques ACL

Command Description
consul acl policy create -name web-policy -rules @policy.hcl Create policy
consul acl policy list List policies
consul acl policy read web-policy Read policy
consul acl policy update -id POLICY_ID -rules @new-policy.hcl Update policy

Connexion (Mesh service)

Connecter la configuration

Command Description
consul connect ca get-config Get CA configuration
consul connect ca set-config -config-file ca.json Set CA configuration
consul connect proxy -service web Start Connect proxy

Intentions

Command Description
consul intention create web db Allow web to connect to db
consul intention create -deny web cache Deny web to cache
consul intention list List all intentions
consul intention delete web db Delete intention

Entrées de configuration

Configuration du service

Command Description
consul config write service-defaults.hcl Write service defaults
consul config write proxy-defaults.hcl Write proxy defaults
consul config list -kind service-defaults List configurations
consul config read -kind service-defaults -name web Read configuration
consul config delete -kind service-defaults -name web Delete configuration

Snapshots et sauvegardes

Opérations instantanées

Command Description
consul snapshot save backup.snap Create snapshot
consul snapshot restore backup.snap Restore snapshot
consul snapshot inspect backup.snap Inspect snapshot

Surveillance et débogage

Contrôle des commandes

Command Description
consul monitor Stream logs
consul monitor -log-level=DEBUG Debug level logs
consul debug Collect debug information
consul operator raft list-peers List Raft peers

Rendement

Command Description
consul operator autopilot get-config Get autopilot config
consul operator autopilot set-config -cleanup-dead-servers=true Set autopilot config

Exemples de configuration

Configuration du serveur

datacenter = "dc1"
data_dir = "/opt/consul"
log_level = "INFO"
node_name = "consul-server-1"
server = true
bootstrap_expect = 3
retry_join = ["10.0.1.10", "10.0.1.11"]

bind_addr = "10.0.1.10"
client_addr = "0.0.0.0"

ui_config \\\\{
  enabled = true
\\\\}

connect \\\\{
  enabled = true
\\\\}

acl = \\\\{
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
\\\\}

Configuration du client

datacenter = "dc1"
data_dir = "/opt/consul"
log_level = "INFO"
node_name = "consul-client-1"
retry_join = ["10.0.1.10", "10.0.1.11", "10.0.1.12"]

bind_addr = "10.0.1.20"
client_addr = "127.0.0.1"

services \\\\{
  name = "web"
  port = 80
  tags = ["production", "v1.0"]

  check \\\\{
    http = "http://localhost:80/health"
    interval = "10s"
  \\\\}
\\\\}
```_

### Définition du service
```json
\\\\{
  "service": \\\\{
    "name": "web",
    "port": 80,
    "tags": ["production"],
    "check": \\\\{
      "http": "http://localhost:80/health",
      "interval": "10s"
    \\\\},
    "connect": \\\\{
      "sidecar_service": \\\\{\\\\}
    \\\\}
  \\\\}
\\\\}
```_

### Politique ACL
```hcl
node_prefix "" \\\\{
  policy = "read"
\\\\}

service_prefix "" \\\\{
  policy = "read"
\\\\}

service "web" \\\\{
  policy = "write"
\\\\}

key_prefix "config/web/" \\\\{
  policy = "write"
\\\\}

session_prefix "" \\\\{
  policy = "read"
\\\\}

Configuration du mesh de service

Par défaut de mandataire

Kind = "proxy-defaults"
Name = "global"

Config \\\\{
  protocol = "http"
\\\\}

MeshGateway \\\\{
  Mode = "local"
\\\\}

Par défaut de service

Kind = "service-defaults"
Name = "web"

Protocol = "http"

MeshGateway \\\\{
  Mode = "local"
\\\\}

Expose \\\\{
  Checks = true
  Paths = [
    \\\\{
      Path = "/health"
      LocalPathPort = 8080
      ListenerPort = 21500
    \\\\}
  ]
\\\\}

Multi-Datacenter Configuration

Fédération WAN

Command Description
consul join -wan 192.168.2.10 Join WAN
consul members -wan List WAN members
consul catalog datacenters List datacenters

Enquêtes transversales

Command Description
consul catalog service web -datacenter dc2 Query service in DC2
dig @127.0.0.1 -p 8600 web.service.dc2.consul DNS query to DC2

Dépannage

Questions communes

Command Description
consul operator raft list-peers Check Raft cluster state
consul debug -duration=30s Collect debug info
consul validate /etc/consul.d Validate configuration
consul members -detailed Detailed member information

Analyse du journal

Command Description
consul monitor -log-level=TRACE Trace level logging
journalctl -u consul -f Follow systemd logs

Meilleures pratiques

Sécurité

  1. Activer les ACL: toujours utiliser les ACL en production
  2. Encryptage TLS: Activer TLS pour toute communication
  3. Encryptage des avis: Utiliser le chiffrement des commérages
  4. ** Segmentation du réseau**: sécurité du réseau
  5. Gestion des jetons: Rotation régulière des jetons

Rendement

  1. ** Affectation des ressources**: CPU et mémoire adéquats
  2. Latence réseau: Minimiser la latence réseau
  3. Disk I/O: Utiliser un stockage rapide pour le répertoire de données
  4. ** Taille du groupe**: Taille optimale du groupe
  5. Surveillance : configuration complète de la surveillance

Opérations

  1. Stratégie de sauvegarde: Photographies régulières
  2. Planification de la mise à niveau : procédures de mise à niveau prudentes
  3. Surveillance de la santé Surveiller la santé des services
  4. Planification des capacités : Plan de croissance
  5. Documentation: Topologie du service des documents

Développement

  1. ** Inscription au service**: définitions appropriées du service
  2. ** Contrôles de santé** : contrôles de santé complets
  3. Gestion de la configuration : Utiliser efficacement KV store
  4. Découverte des services: Mettre en œuvre des modèles de découverte appropriés
  5. Essais: Configurations des mailles de service d'essai