Table of contents
No EKS do ambiente de homologação, utilizamos o Traefik como nosso Ingress Controller. Surgiu o desafio de subir aplicações atrás de uma VPN também utilizando o Traefik, mas as regras de segurança eram aplicadas diretamente no ALB. E agora? Voltar a utilizar um ALB para cada aplicação? Subir um Ingress Controller diferente? Foi aí que lendo a documentação encontrei um argumento para informar ao Traefik qual o valor da annotation kubernetes.io/ingress.class
que ele escutará.
O tal argumento é --providers.kubernetesingress.ingressclass=<class-name>
.
Passo a passo
Vou exemplificar instalando o Traefik utilizando Helm.
Adicione o repositório de chart do Traefik e atualize o cache local
helm repo add traefik https://helm.traefik.io/traefik helm repo update
Crie um arquivo YAML com o seguinte conteúdo. Aqui chamei o arquivo de
values.yaml
additionalArguments: - "--providers.kubernetesingress.ingressclass=traefik-internal"
Com
traefik-internal
sendo o valor da annotationkubernetes.io/ingress.class
que o Traefik irá escutar, podendo ser qualquer valor definido por você.Faça o deploy utilizando o arquivo
helm install traefik --values ./values.yaml traefik/traefik
Em seguida o novo traefik irá subir com o argumento especificado, como na imagem com a saída do comando kubectl describe pod nome-do-pod-traefik
:
Pronto, agora todo Ingress com annotation kubernetes.io/ingress.class: traefik-internal
será reconhecido por esse Traefik que acabamos de subir. Isso permite que vários Traefik Ingress Controller instalados no mesmo cluster possam coexistir, cada um gerenciando regras de Ingress anotados com a classe que ele está responsável.