Envoy Proxy :: Criando um reverse proxy HTTP simples

Share:



Ultimamente tenho estudado bastante as funcionalidades do Envoy Proxy.
Eu sou um grande fã do Nginx por vários motivos, e eu realmente duvidei por algum tempo de que algum reverse proxy poderia fazer um papel tão bom ou melhor que ele.

Por alguns projetos e estudos de Kubernetes, Istio, Appmesh da AWS eu me deparei com a utilização do Envoy de uma forma bem abstraida e genérica. Até que um um dia eu decidi aleatóriamente "dane-se as abstrações do Istio e do Appmesh, vamos ver o que esse carinha faz de legal sozinho˜.

Comecei pegando alguns exemplos simples em cima de reverse proxy HTTP tentando fazer um de-para com o Nginx e fiquei bem surpreso.

Ainda estou debruçado em cima do potencial do Envoy então comecei a escrever uma série de exemplos no meu Github e ainda estou engatinhando. Nada melhor do que repassar alguns exemplos que estou gerando por lá pra cá pra compartilhar com vocês, afinal nem todo mundo tem o habito de estudar pelo Github.


Nesse exemplo vamos criar uma imagem docker repassando o tráfego HTTP pro Google. Esse é o exemplo mais Hello World que iremos encontrar do Envoy, nada melhor do que começar por ele.

Confira esse exemplo no Github

O Envoy trabalha com configuração estática baseada num arquivo Yaml de configuração.

Esse é o exemplo:


A Dockerfile do proxy é bem simples, vamos usar diretamente a imagem oficial do envoyproxy, usando a versao 1.12.2


docker run -it -p 8080:8080 envoy-simple-router

Após criarmos a imagem do proxy, vamos criar um container a partir dela expondo a porta 8080, que definimos no yaml como o listener do reverse proxy

docker run -it --rm -p 8080:8080 envoy-simple-router

Agora acessando a URL http://localhost:8080 a partir do navegador:



Espero ter ajudado :)

Nenhum comentário