
Estou tentando criar um ambiente local para fins de teste composto por:
- um cluster Vagrant CoreOS (3 nós)
- um contêiner Docker iniciado com uma imagem Nginx carregada, iniciada em um nó
Instalei com sucesso o Vagrant e o CoreOS. O Etcd está instalado e funcionando e joguei muito com o Fleet. Também lancei um contêiner Nginx para lançar serviços de frota. O que realmente não consigo descobrir é:
- Como posso rotear o tráfego em um contêiner específico? Quero que apontando meu navegador local para um endereço local (ou seja, example.dev), o cluster responda com o contêiner Nginx correto (colocado em algum lugar do cluster).
- Um proxy é uma solução apropriada? Se não, existe algo criado para esse fim?
Agradecemos antecipadamente e fique à vontade para perguntar mais detalhes que posso ter esquecido!
Responder1
A resposta simples é editar seu arquivo de hosts locais, por exemplo, /etc/hosts
no Linux ou OS X, ou C:\Windows\System32\drivers\etc\hosts
em uma caixa típica do Windows.
Se você deseja algo que esteja mais no nível de produção do que uma solução rápida para desenvolvimento, então o que você precisa é de um proxy reverso como nginx ou haproxy, e configurá-lo automaticamente pela disponibilidade de contêineres nginx de back-end.
- cada contêiner nginx de back-end precisará de um serviço 'sidekick' para anunciar sua disponibilidade para o etcd
- então corraconfdpara ouvir as alterações do etcd e atualizar a configuração do proxy reverso
Isso permite rotear uma única porta no proxy reverso para qualquer número de serviços nginx de back-end que precisam apenas escutar na rede privada.
eu escreviuma ilustração mais detalhada desta abordagem aqui.