Comandi e workflow completi di HashiCorp Consul per service discovery, gestione della configurazione e service mesh.
Installazione e Configurazione
| Comando | Descrizione |
|---|
consul version | Mostra versione Consul |
consul agent -dev | Avvia agente di sviluppo |
consul agent -config-dir=/etc/consul.d | Inizia con la configurazione |
consul members | Elenca i membri del cluster |
consul info | Mostra informazioni agente |
Gestione dell’Agente
Operazioni Base dell’Agente
| Comando | Descrizione |
|---|
consul agent -server -bootstrap-expect=3 | Avvia agent server |
consul agent -client=0.0.0.0 | Avvia agente client |
consul join 192.168.1.100 | Unisciti al cluster |
consul leave | Lasciare il cluster con eleganza |
consul reload | Ricarica configurazione |
Configurazione dell’Agente
| Comando | Descrizione |
|---|
consul validate /etc/consul.d | Convalidare la configurazione |
consul configtest | Configurazione di test |
Service Discovery
Registrazione del Servizio
| Comando | Descrizione |
|---|
consul services register service.json | Registra servizio da file |
consul services deregister service-id | Deregistra servizio |
consul catalog services | Elenca tutti i servizi |
consul catalog nodes | Elenca tutti i nodi |
Query dei Servizi
| Comando | Descrizione |
|---|
consul catalog service web | Elenca istanze di servizio |
consul catalog service web -tag production | Filtra per tag |
consul health service web | Stato del controllo sanitario |
consul health node node1 | Stato di salute del nodo |
Interfaccia DNS
| Comando | Descrizione |
|---|
dig @127.0.0.1 -p 8600 web.service.consul | Servizio di query tramite DNS |
dig @127.0.0.1 -p 8600 web.service.dc1.consul | Query datacenter specifico |
dig @127.0.0.1 -p 8600 node1.node.consul | Query node via DNS |
Key-Value Store
Operazioni KV
| Comando | Descrizione |
|---|
consul kv put config/database/url "postgresql://..." | Memorizza chiave-valore |
consul kv get config/database/url | Recupera valore |
consul kv get -recurse config/ | Ottieni tutte le chiavi sotto il prefisso |
consul kv delete config/database/url | Tasto Canc |
consul kv delete -recurse config/ | Elimina tutte le chiavi sotto il prefisso |
Operazioni KV Avanzate
| Comando | Descrizione |
|---|
consul kv put -cas -modify-index=123 config/app/version "2.0" | Aggiornamento condizionale |
consul kv get -detailed config/app/version | Ottieni con i metadati |
consul kv export config/ | Esporta chiavi |
consul kv import @backup.json | Importa chiavi |
Health Checks
Gestione degli Health Check
| Comando | Descrizione |
|---|
consul health checks | Elenca tutti i controlli sanitari |
consul health checks web | Elenco controlli per il servizio |
consul health state critical | Elencare controlli critici |
consul health state passing | Elenco dei controlli superati |
Liste di Controllo Accessi (ACL)
Gestione ACL
| Comando | Descrizione |
|---|
consul acl bootstrap | Sistema ACL di Bootstrap |
consul acl token create -description="Web service token" | Crea token |
consul acl token list | Elenca token |
consul acl token delete TOKEN_ID | Elimina token |
Policy ACL
| Comando | Descrizione |
|---|
consul acl policy create -name web-policy -rules @policy.hcl | Crea policy |
consul acl policy list | Elenca policy |
consul acl policy read web-policy | Leggi policy |
consul acl policy update -id POLICY_ID -rules @new-policy.hcl | Aggiorna policy |
Connect (Service Mesh)
Configurazione Connect
| Comando | Descrizione |
|---|
consul connect ca get-config | Ottieni configurazione CA |
consul connect ca set-config -config-file ca.json | Configurazione CA |
consul connect proxy -service web | Avvia Connect proxy |
Intenzioni
| Comando | Descrizione |
|---|
consul intention create web db | Consenti web di connettersi al db |
consul intention create -deny web cache | Negare il web alla cache |
consul intention list | Elenca tutti gli intenti |
consul intention delete web db | Elimina intenzione |
Voci di Configurazione
Configurazione del Servizio
| Comando | Descrizione |
|---|
consul config write service-defaults.hcl | Scrivi impostazioni predefinite del servizio |
consul config write proxy-defaults.hcl | Scrivi impostazioni predefinite proxy |
consul config list -kind service-defaults | Elenco configurazioni |
consul config read -kind service-defaults -name web | Leggi configurazione |
consul config delete -kind service-defaults -name web | Elimina configurazione |
Snapshot e Backup
Operazioni di Snapshot
| Comando | Descrizione |
|---|
consul snapshot save backup.snap | Crea snapshot |
consul snapshot restore backup.snap | Ripristina snapshot |
consul snapshot inspect backup.snap | Ispeziona snapshot |
Monitoraggio e Debug
Comandi di Monitoraggio
| Comando | Descrizione |
|---|
consul monitor | Log di stream |
consul monitor -log-level=DEBUG | Log di debug a livello |
consul debug | Raccogli informazioni di debug |
consul operator raft list-peers | Elenca peer Raft |
Prestazioni
| Comando | Descrizione |
|---|
consul operator autopilot get-config | Ottieni configurazione autopilot |
consul operator autopilot set-config -cleanup-dead-servers=true | Imposta configurazione autopilot |
Esempi di Configurazione
Configurazione Server
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
\\\\}
Configurazione Client
Would you like me to continue with the remaining sections or translations?```hcl
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”
\\}
\\}
**Abilita ACL**: Usa sempre ACL in produzionejson
\\{
“service”: \\{
“name”: “web”,
“port”: 80,
“tags”: [“production”],
“check”: \\{
“http”: “http://localhost:80/health”,
“interval”: ”10s”
\\},
“connect”: \\{
“sidecar_service”: \\{\\}
\\}
\\}
\\}
**Crittografia TLS**: Abilita TLS per tutte le comunicazionihcl
node_prefix "" \\{
policy = “read”
\\}
service_prefix "" \\{
policy = “read”
\\}
service “web” \\{
policy = “write”
\\}
key_prefix “config/web/” \\{
policy = “write”
\\}
session_prefix "" \\{
policy = “read”
\\}
**Crittografia Gossip**: Usa la crittografia gossiphcl
Kind = “proxy-defaults”
Name = “global”
Config \\{
protocol = “http”
\\}
MeshGateway \\{
Mode = “local”
\\}
**Segmentazione di Rete**: Sicurezza di rete appropriatahcl
Kind = “service-defaults”
Name = “web”
Protocol = “http”
MeshGateway \\{
Mode = “local”
\\}
Expose \\{
Checks = true
Paths = [
\\{
Path = “/health”
LocalPathPort = 8080
ListenerPort = 21500
\\}
]
\\}
### Performance
| Comando | Descrizione |
|---------|-------------|
| `consul join -wan 192.168.2.10` | Unisciti a WAN |
| `consul members -wan` | Elenco dei membri WAN |
| `consul catalog datacenters` | Elenca datacenter |**Allocazione Risorse**: CPU e memoria adeguate
| Comando | Descrizione |
|---------|-------------|
| `consul catalog service web -datacenter dc2` | Servizio di query in DC2 |
| `dig @127.0.0.1 -p 8600 web.service.dc2.consul` | Query DNS a DC2 |**Latenza di Rete**: Minimizza la latenza di rete
| Comando | Descrizione |
|---------|-------------|
| `consul operator raft list-peers` | Controlla lo stato del cluster Raft |
| `consul debug -duration=30s` | Raccogli informazioni di debug |
| `consul validate /etc/consul.d` | Convalidare la configurazione |
| `consul members -detailed` | Informazioni dettagliate del membro |**I/O Disco**: Usa storage veloce per la directory dei dati
| Comando | Descrizione |
|---------|-------------|
| `consul monitor -log-level=TRACE` | Trace level logging |
| `journalctl -u consul -f` | Segui i log di systemd |**Dimensione Cluster**: Dimensionamento ottimale del cluster