Guía completa de comandos y flujos de trabajo de HashiCorp Consul para descubrimiento de servicios, gestión de configuración y malla de servicios.
Instalación y Configuración
| Comando | Descripción |
|---|
consul version | Mostrar versión de Consul |
consul agent -dev | Iniciar agente de desarrollo |
consul agent -config-dir=/etc/consul.d | Comenzar con la configuración |
consul members | Listar miembros del clúster |
consul info | Mostrar información del agente |
Gestión de Agentes
Operaciones Básicas de Agentes
| Comando | Descripción |
|---|
consul agent -server -bootstrap-expect=3 | Iniciar agente de servidor |
consul agent -client=0.0.0.0 | Iniciar agente cliente |
consul join 192.168.1.100 | Unirse al cluster |
consul leave | Salir del clúster de manera elegante |
consul reload | Recargar configuración |
Configuración de Agentes
| Comando | Descripción |
|---|
consul validate /etc/consul.d | Validar configuración |
consul configtest | Configuración de prueba |
Descubrimiento de Servicios
Registro de Servicios
| Comando | Descripción |
|---|
consul services register service.json | Registrar servicio desde archivo |
consul services deregister service-id | Dar de baja servicio |
consul catalog services | Listar todos los servicios |
consul catalog nodes | Listar todos los nodos |
Consultas de Servicios
| Comando | Descripción |
|---|
consul catalog service web | Listar instancias de servicio |
consul catalog service web -tag production | Filtrar por etiqueta |
consul health service web | Estado de verificación de salud |
consul health node node1 | Estado de salud de Node |
Interfaz DNS
| Comando | Descripción |
|---|
dig @127.0.0.1 -p 8600 web.service.consul | Servicio de consulta a través de DNS |
dig @127.0.0.1 -p 8600 web.service.dc1.consul | Consultar centro de datos específico |
dig @127.0.0.1 -p 8600 node1.node.consul | Consultar nodo a través de DNS |
Almacén de Clave-Valor
Operaciones de KV
| Comando | Descripción |
|---|
consul kv put config/database/url "postgresql://..." | Almacenar clave-valor |
consul kv get config/database/url | Obtener valor |
consul kv get -recurse config/ | Obtener todas las claves bajo el prefijo |
consul kv delete config/database/url | Tecla Supr |
consul kv delete -recurse config/ | Eliminar todas las claves bajo el prefijo |
Operaciones Avanzadas de KV
| Comando | Descripción |
|---|
consul kv put -cas -modify-index=123 config/app/version "2.0" | Actualización condicional |
consul kv get -detailed config/app/version | Obtener con metadata |
consul kv export config/ | Exportar claves |
consul kv import @backup.json | Importar claves |
Verificaciones de Salud
Gestión de Verificaciones de Salud
| Comando | Descripción |
|---|
consul health checks | Enumerar todas las comprobaciones de salud |
consul health checks web | Lista de comprobaciones para el servicio |
consul health state critical | Lista de verificaciones críticas |
consul health state passing | Lista de checks aprobados |
Listas de Control de Acceso (ACLs)
Gestión de ACLs
| Comando | Descripción |
|---|
consul acl bootstrap | Sistema ACL de Bootstrap |
consul acl token create -description="Web service token" | Crear token |
consul acl token list | Listar tokens |
consul acl token delete TOKEN_ID | Eliminar token |
Políticas de ACL
| Comando | Descripción |
|---|
consul acl policy create -name web-policy -rules @policy.hcl | Crear política |
consul acl policy list | Listar políticas |
consul acl policy read web-policy | Leer política |
consul acl policy update -id POLICY_ID -rules @new-policy.hcl | Actualizar política |
Connect (Malla de Servicios)
Configuración de Connect
| Comando | Descripción |
|---|
consul connect ca get-config | Obtener configuración de CA |
consul connect ca set-config -config-file ca.json | Configuración de CA |
consul connect proxy -service web | Iniciar proxy de Connect |
Intenciones
| Comando | Descripción |
|---|
consul intention create web db | Permitir web para conectar a db |
consul intention create -deny web cache | Denegar caché web |
consul intention list | Listar todas las intenciones |
consul intention delete web db | Eliminar intención |
Entradas de Configuración
Configuración de Servicios
| Comando | Descripción |
|---|
consul config write service-defaults.hcl | Escribir valores predeterminados de servicio |
consul config write proxy-defaults.hcl | Escribir valores predeterminados de proxy |
consul config list -kind service-defaults | Configuraciones de lista |
consul config read -kind service-defaults -name web | Leer configuración |
consul config delete -kind service-defaults -name web | Eliminar configuración |
Instantáneas y Copias de Seguridad
Operaciones de Instantáneas
| Comando | Descripción |
|---|
consul snapshot save backup.snap | Crear snapshot |
consul snapshot restore backup.snap | Restaurar snapshot |
consul snapshot inspect backup.snap | Inspeccionar snapshot |
Monitoreo y Depuración
Comandos de Monitoreo
| Comando | Descripción |
|---|
consul monitor | Registros de stream |
consul monitor -log-level=DEBUG | Registros de nivel de depuración |
consul debug | Recopilar información de depuración |
consul operator raft list-peers | Listar pares Raft |
Rendimiento
| Comando | Descripción |
|---|
consul operator autopilot get-config | Obtener configuración de autopilot |
consul operator autopilot set-config -cleanup-dead-servers=true | Configurar configuración de autopiloto |
Ejemplos de Configuración
Configuración de Servidor
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
\\\\}
Configuración de Cliente
Would you like me to continue with the remaining sections?```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”
\\}
\\}
### Definición de Servicio
```json
\\\\{
"service": \\\\{
"name": "web",
"port": 80,
"tags": ["production"],
"check": \\\\{
"http": "http://localhost:80/health",
"interval": "10s"
\\\\},
"connect": \\\\{
"sidecar_service": \\\\{\\\\}
\\\\}
\\\\}
\\\\}
Política de ACL
node_prefix "" \\\\{
policy = "read"
\\\\}
service_prefix "" \\\\{
policy = "read"
\\\\}
service "web" \\\\{
policy = "write"
\\\\}
key_prefix "config/web/" \\\\{
policy = "write"
\\\\}
session_prefix "" \\\\{
policy = "read"
\\\\}
Configuración de Service Mesh
Valores Predeterminados de Proxy
Kind = "proxy-defaults"
Name = "global"
Config \\\\{
protocol = "http"
\\\\}
MeshGateway \\\\{
Mode = "local"
\\\\}
Valores Predeterminados de Servicio
Kind = "service-defaults"
Name = "web"
Protocol = "http"
MeshGateway \\\\{
Mode = "local"
\\\\}
Expose \\\\{
Checks = true
Paths = [
\\\\{
Path = "/health"
LocalPathPort = 8080
ListenerPort = 21500
\\\\}
]
\\\\}
Configuración Multi-Datacenter
Federación WAN
| Comando | Descripción |
|---|
consul join -wan 192.168.2.10 | Únete a WAN |
consul members -wan | Listar miembros de WAN |
consul catalog datacenters | Lista de datacenters |
Consultas Entre Datacenters
| Comando | Descripción |
|---|
consul catalog service web -datacenter dc2 | Servicio de consulta en DC2 |
dig @127.0.0.1 -p 8600 web.service.dc2.consul | Consulta DNS a DC2 |
Resolución de Problemas
Problemas Comunes
| Comando | Descripción |
|---|
consul operator raft list-peers | Verificar estado del clúster Raft |
consul debug -duration=30s | Recopilar información de depuración |
consul validate /etc/consul.d | Validar configuración |
consul members -detailed | Información detallada de miembro |
Análisis de Logs
| Comando | Descripción |
|---|
consul monitor -log-level=TRACE | Registro de nivel de traza |
journalctl -u consul -f | Seguir registros de systemd |
Mejores Prácticas
Seguridad