Ir al 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

ComandoDescripción
consul versionMostrar versión de Consul
consul agent -devIniciar agente de desarrollo
consul agent -config-dir=/etc/consul.dComenzar con la configuración
consul membersListar miembros del clúster
consul infoMostrar información del agente

Gestión de Agentes

Operaciones Básicas de Agentes

ComandoDescripción
consul agent -server -bootstrap-expect=3Iniciar agente de servidor
consul agent -client=0.0.0.0Iniciar agente cliente
consul join 192.168.1.100Unirse al cluster
consul leaveSalir del clúster de manera elegante
consul reloadRecargar configuración

Configuración de Agentes

ComandoDescripción
consul validate /etc/consul.dValidar configuración
consul configtestConfiguración de prueba

Descubrimiento de Servicios

Registro de Servicios

ComandoDescripción
consul services register service.jsonRegistrar servicio desde archivo
consul services deregister service-idDar de baja servicio
consul catalog servicesListar todos los servicios
consul catalog nodesListar todos los nodos

Consultas de Servicios

ComandoDescripción
consul catalog service webListar instancias de servicio
consul catalog service web -tag productionFiltrar por etiqueta
consul health service webEstado de verificación de salud
consul health node node1Estado de salud de Node

Interfaz DNS

ComandoDescripción
dig @127.0.0.1 -p 8600 web.service.consulServicio de consulta a través de DNS
dig @127.0.0.1 -p 8600 web.service.dc1.consulConsultar centro de datos específico
dig @127.0.0.1 -p 8600 node1.node.consulConsultar nodo a través de DNS

Almacén de Clave-Valor

Operaciones de KV

ComandoDescripción
consul kv put config/database/url "postgresql://..."Almacenar clave-valor
consul kv get config/database/urlObtener valor
consul kv get -recurse config/Obtener todas las claves bajo el prefijo
consul kv delete config/database/urlTecla Supr
consul kv delete -recurse config/Eliminar todas las claves bajo el prefijo

Operaciones Avanzadas de KV

ComandoDescripción
consul kv put -cas -modify-index=123 config/app/version "2.0"Actualización condicional
consul kv get -detailed config/app/versionObtener con metadata
consul kv export config/Exportar claves
consul kv import @backup.jsonImportar claves

Verificaciones de Salud

Gestión de Verificaciones de Salud

ComandoDescripción
consul health checksEnumerar todas las comprobaciones de salud
consul health checks webLista de comprobaciones para el servicio
consul health state criticalLista de verificaciones críticas
consul health state passingLista de checks aprobados

Listas de Control de Acceso (ACLs)

Gestión de ACLs

ComandoDescripción
consul acl bootstrapSistema ACL de Bootstrap
consul acl token create -description="Web service token"Crear token
consul acl token listListar tokens
consul acl token delete TOKEN_IDEliminar token

Políticas de ACL

ComandoDescripción
consul acl policy create -name web-policy -rules @policy.hclCrear política
consul acl policy listListar políticas
consul acl policy read web-policyLeer política
consul acl policy update -id POLICY_ID -rules @new-policy.hclActualizar política

Connect (Malla de Servicios)

Configuración de Connect

ComandoDescripción
consul connect ca get-configObtener configuración de CA
consul connect ca set-config -config-file ca.jsonConfiguración de CA
consul connect proxy -service webIniciar proxy de Connect

Intenciones

ComandoDescripción
consul intention create web dbPermitir web para conectar a db
consul intention create -deny web cacheDenegar caché web
consul intention listListar todas las intenciones
consul intention delete web dbEliminar intención

Entradas de Configuración

Configuración de Servicios

ComandoDescripción
consul config write service-defaults.hclEscribir valores predeterminados de servicio
consul config write proxy-defaults.hclEscribir valores predeterminados de proxy
consul config list -kind service-defaultsConfiguraciones de lista
consul config read -kind service-defaults -name webLeer configuración
consul config delete -kind service-defaults -name webEliminar configuración

Instantáneas y Copias de Seguridad

Operaciones de Instantáneas

ComandoDescripción
consul snapshot save backup.snapCrear snapshot
consul snapshot restore backup.snapRestaurar snapshot
consul snapshot inspect backup.snapInspeccionar snapshot

Monitoreo y Depuración

Comandos de Monitoreo

ComandoDescripción
consul monitorRegistros de stream
consul monitor -log-level=DEBUGRegistros de nivel de depuración
consul debugRecopilar información de depuración
consul operator raft list-peersListar pares Raft

Rendimiento

ComandoDescripción
consul operator autopilot get-configObtener configuración de autopilot
consul operator autopilot set-config -cleanup-dead-servers=trueConfigurar 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

ComandoDescripción
consul join -wan 192.168.2.10Únete a WAN
consul members -wanListar miembros de WAN
consul catalog datacentersLista de datacenters

Consultas Entre Datacenters

ComandoDescripción
consul catalog service web -datacenter dc2Servicio de consulta en DC2
dig @127.0.0.1 -p 8600 web.service.dc2.consulConsulta DNS a DC2

Resolución de Problemas

Problemas Comunes

ComandoDescripción
consul operator raft list-peersVerificar estado del clúster Raft
consul debug -duration=30sRecopilar información de depuración
consul validate /etc/consul.dValidar configuración
consul members -detailedInformación detallada de miembro

Análisis de Logs

ComandoDescripción
consul monitor -log-level=TRACERegistro de nivel de traza
journalctl -u consul -fSeguir registros de systemd

Mejores Prácticas

Seguridad