Guia abrangente de comandos e fluxos de trabalho do HashiCorp Consul para descoberta de serviços, gerenciamento de configuração e malha de serviços.
Instalação e Configuração
| Comando | Descrição |
|---|
consul version | Mostrar versão do Consul |
consul agent -dev | Iniciar agente de desenvolvimento |
consul agent -config-dir=/etc/consul.d | Comece com a configuração |
consul members | Listar membros do cluster |
consul info | Mostrar informações do agente |
Gerenciamento de Agente
Operações Básicas de Agente
| Comando | Descrição |
|---|
consul agent -server -bootstrap-expect=3 | Iniciar agente do servidor |
consul agent -client=0.0.0.0 | Iniciar agente cliente |
consul join 192.168.1.100 | Juntar cluster |
consul leave | Saia do cluster graciosamente |
consul reload | Recarregar configuração |
Configuração de Agente
| Comando | Descrição |
|---|
consul validate /etc/consul.d | Validar configuração |
consul configtest | Configuração de teste |
Descoberta de Serviços
Registro de Serviços
| Comando | Descrição |
|---|
consul services register service.json | Registrar serviço a partir de arquivo |
consul services deregister service-id | Desregistrar serviço |
consul catalog services | Listar todos os serviços |
consul catalog nodes | Listar todos os nós |
Consultas de Serviços
| Comando | Descrição |
|---|
consul catalog service web | Listar instâncias de serviço |
consul catalog service web -tag production | Filtrar por tag |
consul health service web | Estado de verificação de saúde |
consul health node node1 | Estado de saúde do Node |
Interface DNS
| Comando | Descrição |
|---|
dig @127.0.0.1 -p 8600 web.service.consul | Serviço de consulta via DNS |
dig @127.0.0.1 -p 8600 web.service.dc1.consul | Consultar datacenter específico |
dig @127.0.0.1 -p 8600 node1.node.consul | Consultar nó via DNS |
Armazenamento de Chave-Valor
Operações de KV
| Comando | Descrição |
|---|
consul kv put config/database/url "postgresql://..." | Armazenar chave-valor |
consul kv get config/database/url | Recuperar valor |
consul kv get -recurse config/ | Obter todas as chaves sob o prefixo |
consul kv delete config/database/url | Tecla Delete |
consul kv delete -recurse config/ | Excluir todas as chaves sob o prefixo |
Operações Avançadas de KV
| Comando | Descrição |
|---|
consul kv put -cas -modify-index=123 config/app/version "2.0" | Atualização condicional |
consul kv get -detailed config/app/version | Obtenha com metadados |
consul kv export config/ | Exportar chaves |
consul kv import @backup.json | Importar chaves |
Verificações de Saúde
Gerenciamento de Verificações de Saúde
| Comando | Descrição |
|---|
consul health checks | Listar todos os health checks |
consul health checks web | Lista de verificações para serviço |
consul health state critical | Lista de verificações críticas |
consul health state passing | Listar verificações aprovadas |
Listas de Controle de Acesso (ACLs)
Gerenciamento de ACL
| Comando | Descrição |
|---|
consul acl bootstrap | Sistema ACL do Bootstrap |
consul acl token create -description="Web service token" | Criar token |
consul acl token list | Listar tokens |
consul acl token delete TOKEN_ID | Excluir token |
Políticas de ACL
| Comando | Descrição |
|---|
consul acl policy create -name web-policy -rules @policy.hcl | Criar política |
consul acl policy list | Listar políticas |
consul acl policy read web-policy | Ler política |
consul acl policy update -id POLICY_ID -rules @new-policy.hcl | Atualizar política |
Connect (Malha de Serviços)
Configuração de Connect
| Comando | Descrição |
|---|
consul connect ca get-config | Obter configuração de CA |
consul connect ca set-config -config-file ca.json | Configurar configuração de CA |
consul connect proxy -service web | Iniciar proxy Connect |
Intenções
| Comando | Descrição |
|---|
consul intention create web db | Permitir web para conectar ao db |
consul intention create -deny web cache | Negar cache na web |
consul intention list | Listar todas as intenções |
consul intention delete web db | Excluir intenção |
Entradas de Configuração
Configuração de Serviço
| Comando | Descrição |
|---|
consul config write service-defaults.hcl | Escrever padrões de serviço |
consul config write proxy-defaults.hcl | Escrever padrões de proxy |
consul config list -kind service-defaults | Listar configurações |
consul config read -kind service-defaults -name web | Ler configuração |
consul config delete -kind service-defaults -name web | Excluir configuração |
Snapshots e Backups
Operações de Snapshot
| Comando | Descrição |
|---|
consul snapshot save backup.snap | Criar snapshot |
consul snapshot restore backup.snap | Restaurar snapshot |
consul snapshot inspect backup.snap | Inspecionar snapshot |
Monitoramento e Depuração
Comandos de Monitoramento
| Comando | Descrição |
|---|
consul monitor | Registros de stream |
consul monitor -log-level=DEBUG | Logs de nível de depuração |
consul debug | Coletar informações de depuração |
consul operator raft list-peers | Listar pares Raft |
Desempenho
| Comando | Descrição |
|---|
consul operator autopilot get-config | Obter configuração do autopilot |
consul operator autopilot set-config -cleanup-dead-servers=true | Definir configuração do autopilot |
Exemplos de Configuração
Configuração 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
\\\\}
Configuração de Cliente
Would you like me to continue with the remaining sections? I noticed that some sections (3-20) are currently empty. If you have specific content for those sections, please provide them and I’ll translate accordingly.```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”
\\}
\\}
### Definição de Serviço
```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"
\\\\}
Configuração de Service Mesh
Padrões de Proxy
Kind = "proxy-defaults"
Name = "global"
Config \\\\{
protocol = "http"
\\\\}
MeshGateway \\\\{
Mode = "local"
\\\\}
Padrões de Serviço
Kind = "service-defaults"
Name = "web"
Protocol = "http"
MeshGateway \\\\{
Mode = "local"
\\\\}
Expose \\\\{
Checks = true
Paths = [
\\\\{
Path = "/health"
LocalPathPort = 8080
ListenerPort = 21500
\\\\}
]
\\\\}
Configuração Multi-Datacenter
Federação WAN
| Comando | Descrição |
|---|
consul join -wan 192.168.2.10 | Junte-se à WAN |
consul members -wan | Listar membros WAN |
consul catalog datacenters | Listar datacenters |
Consultas Entre Data Centers
| Comando | Descrição |
|---|
consul catalog service web -datacenter dc2 | Serviço de consulta no DC2 |
dig @127.0.0.1 -p 8600 web.service.dc2.consul | Consulta DNS para DC2 |
Resolução de Problemas
Problemas Comuns
| Comando | Descrição |
|---|
consul operator raft list-peers | Verificar estado do cluster Raft |
consul debug -duration=30s | Coletar informações de depuração |
consul validate /etc/consul.d | Validar configuração |
consul members -detailed | Informações detalhadas de membro |
Análise de Logs
| Comando | Descrição |
|---|
consul monitor -log-level=TRACE | Registro de nível de rastreamento |
journalctl -u consul -f | Seguir logs do systemd |
Melhores Práticas
Segurança