AWS EKS - Parte III - Restringindo acesso público ao cluster
Tags: kubernetes, aws, terraform, cloud
Published: 2023-01-12 00:50:06


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dxylk7pmhw12kmxpfica.png)


**Objetivo geral:**

Setup completo de um cluster Kubernetes utilizando AWS EKS e Terraform seguindo as melhores práticas e documentações oficias. Demonstração de atualizações de aplicações e demais recursos


**Objetivo da parte III:**
Restringir acesso externo ao cluster.


**Avisos importantes**
Leitura das partes 1 e 2. 
A parte 1 é responsável pelo setup inicial do cluster, clique aqui.
A parte 2 é responsável por habilitar todos os logs do Control Plane.

A configuração do cluster é exclusiva para laboratório e testes.

**Pré requisitos**
Todos da parte 1 e da parte 2.


**Entendendo alguns acessos ao cluster**
A opção **API server endpoint access** jpa veem habilitada por padrão com a configuração **Public and private**, sendo assim O servidor de API do cluster é acessível pela internet. 
Para mais informações acesse a documentação oficial [clicando aqui](https://docs.aws.amazon.com/pt_br/eks/latest/userguide/cluster-endpoint.html).

Se esse é seu caso nós podemos restringir o acesso público as aplicações alterando a opção **Public access source allowlist**.

Essa opção restringe quais serão os blocos de IP´s públicos que terão acesso ao cluster. 


Agora que "_os trem_" estão mais claros, **Let's go to work**!


**Configurações inicias**
Vamos restringir o acesso ao cluster para IP´s públicos que estão liberados em uma Allow-List customizada. 

Para isso vamos editar o arquivo `main.tf` e adicionar no modulo do EKS a entrada abaixo:

` cluster_endpoint_public_access_cidrs    = var.cluster_endpoint_public_access_cidrs`

No arquivo `variables.tf` vamos inserir o trecho abaixo:

`variable "cluster_endpoint_public_access_cidrs" {
  description = "A list of Allow Public IP"
  type        = list(string)
  default     = ["101.65.0.0/22"]
}`

Na opção default, inserimos todos a lista de IP´s públicos que terão acesso ao cluster.

**Aplicando as atualizações**
Vamos executar o Plan e o Apply para atualizar nosso template com as alterações.

`terraform plan && terraform apply -auto-approve`

**Validações**
Através da console de gerenciamento da AWS, procure pelo serviço AWS EKS, localize o cluster e clique no menu Networking.
Localize a opção **Public access source allowlist** e verifique se todos os ip´s inseridos no código estão listados aqui.

**Próximas partes**
- AWS EKS - Parte IV - Configurando Add-ons gerenciados (_em construção_)
- AWS EKS - Parte V - Deploy e atualização de uma app (_em construção_)

**Partes Anteriores**
- [AWS EKS - Parte I - Setup inicial](https://medium.com/@rodrigofrs13/aws-eks-parte-i-setup-inicial-495e612b0c3d)
- [AWS EKS - Parte II - Habilitando logs do Control Plane](https://medium.com/@rodrigofrs13/aws-eks-parte-ii-habilitando-logs-do-control-plane-12224a4a6a1f)




**Referências**

- [Controle de acesso ao endpoint do cluster do Amazon EKS](https://docs.aws.amazon.com/pt_br/eks/latest/userguide/cluster-endpoint.html)

- [O Amazon EKS permite restrições de acesso à rede para endpoints públicos de clusters do Kubernetes](https://aws.amazon.com/pt/about-aws/whats-new/2019/12/amazon-eks-enables-network-access-restrictions-to-kubernetes-cluster-public-endpoints/)