Antes de mais nada, o Consul é uma baita ferramenta que pode tornar a vida do OPS e mesmo do DEV muito melhor. Sendo assim ela ajuda a lidar com complexidades da TI moderna de um jeito mais simples do que tratando proxies reversos na mão. Além disso há várias outras ferramentas análogas no mercado e o conceito de service discovery pode ser visto em ferramentas como Docker Swarm ou Kubernetes. Leia também Porque você já deveria estar usando Hashicorp Consul.
Instalando o Consul em si
Bem como outras plataformas da Hashicorp, o Consul também é construído em Go (Go Lang) e assim há apenas um executável e nada mais. Por isso, somente com esse executável todo o trabalho necessário pode ser feito, sem precisar de instalar várias dependências.
Logo após, para instalar basta baixar o executável e colocá-lo disponível para uso em qualquer local no sistema: Realmente é muito simples. Veja o código a seguir que auxilia nesse processo.
# Pasta onde será feito o download (verifique a versão atual)
mkdir /opt/consul
cd /opt/consul
wget https://releases.hashicorp.com/consul/1.14.1/consul_1.14.1_linux_amd64.zip
# Após baixado, deve-se deszipar
unzip consul_1.14.1_linux_amd64.zip
# Para facilitar o uso, criei um link simbólico em /usr/bin
ln -s /opt/consul/consul /usr/bin/consul
# Agora, verifique se está funcionando corretamente
cd /
consul -v
Testando o site
Após essa instalação simples deve-se subir a aplicação para que possa ser consumida. Ela possui uma cli (command line interface) que dá suporte ao comando consul agent, que expõe seu serviço. Note que esse artigo não fará uma instalação complexa com vários agentes. Note também que o comando a seguir possui um client com um IP: coloque um dos IPs que sua maquina utiliza.
mkdir /etc/consul.d
consul agent -ui -dev -config-dir=/etc/consul.d -data-dir=/var/consul/ -client=172.22.222.135
Utilizando o KeyValueStore
Para exemplificar o uso do Consul considere que há uma chave chamada ‘anselme.blog.database’ configurada no Consul. É possível criar outras chaves dada a conveniência. O comando a seguir consome do kv (keyvalueStore) do Consul e obtém os dados dessa chave, com seu valor em BASE64. Considere que uma aplicação desenvolvida em qualquer linguagem poderia pegar de maneira semelhante:
$ curl https://172.22.222.135:8500/v1/kv/anselme.blog.database
[
{
"LockIndex": 0,
"Key": "anselme.blog.database",
"Flags": 0,
"Value": "IlZhbG9yIGRhIGNoYXZlIERhdGFiYXNlIg==",
"CreateIndex": 44,
"ModifyIndex": 45
}
]
$ echo "IlZhbG9yIGRhIGNoYXZlIERhdGFiYXNlIg==" | base64 -d
"Valor da chave Database"
Ele atua/atuou como Dev Full Stack C# .NET / Angular / Kubernetes e afins. Ele possui certificações Microsoft MCTS (6x), MCPD em Web, ITIL v3 e CKAD (Kubernetes) . Thiago é apaixonado por tecnologia, entusiasta de TI desde a infância bem como amante de aprendizado contínuo.