No processo de automação da infraestrutura com Terraform, é comum precisarmos trabalhar com mais de um provedor para atender às diferentes necessidades do projeto. Um exemplo típico disso é a utilização da AWS para provisionar a infraestrutura base como VPCs, subnets, clusters EKS e, em seguida, o uso do provedor Kubernetes para configurar os recursos dentro desse cluster, como deployments, services e outros objetos do ecossistema Kubernetes.
Para isso, é necessário criar e configurar um segundo provedor no Terraform, neste caso, o kubernetes. A documentação oficial do Terraform fornece exemplos práticos de como realizar essa configuração. Em geral, isso envolve a definição de dois blocos de provider: um para a AWS e outro para o Kubernetes, sendo este último normalmente configurado com os dados de conexão do cluster criado anteriormente (como o host, cluster_ca_certificate e token).
Além disso, o Terraform permite trabalhar com múltiplos provedores de forma organizada. Ao declarar ambos no mesmo projeto, conseguimos criar uma integração fluida, onde a AWS cuida da infraestrutura e o Kubernetes assume a configuração da aplicação dentro dessa infraestrutura.
Outro recurso essencial nesse processo são os Data Sources. Eles funcionam como uma espécie de "leitura" da infraestrutura, permitindo que o Terraform busque informações de recursos já existentes, sejam eles criados fora do Terraform ou recentemente provisionados. Com os data sources, conseguimos, por exemplo, obter o endpoint de um cluster EKS, buscar o ID de uma subnet, ou até descobrir dados de configuração do Kubernetes tudo isso de forma automática e reutilizável dentro do código.
Essa abordagem torna o código mais dinâmico, limpo e alinhado com as boas práticas da infraestrutura como código, além de permitir maior flexibilidade para evoluir e escalar os ambientes