Consul¶
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 \\} ] \\} ```Gestione Token: Ruota i token regolarmente
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 |
| 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 |
| 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 |
| Comando | Descrizione |
| --------- | ------------- |
consul monitor -log-level=TRACE |
Trace level logging |
journalctl -u consul -f |
Segui i log di systemd |