Saltar a contenido

Consul

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