Registrando cluster EKS existente no Rancher 2.6
Tags: community, aws, eks, rancher
Published: 2024-01-29 18:11:16

Complementando o post anterior sobre EKS e Istio, podemos registrar um cluster EKS existente no Rancher, e aproveitar todos os recursos que ele nos proporciona.

![](https://cdn-images-1.medium.com/max/2000/1*e4c8G_zTvN2F8FKnDF2sqg.jpeg)

Para isso, vamos utilizar o terraform para provisionar o [Rancher 2.6.8](https://docs.ranchermanager.rancher.io/) *single node* em uma instância EC2 e registrar o cluster EKS que já temos.

[Código terraform aqui.](https://github.com/paulofponciano/lab-rancher-v2.6-eks-aws.git)

### Pré-requisitos

* [Terraform](https://www.terraform.io/downloads) instalado

* [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) instalado

* Cluster EKS e VPC (Veja: [https://medium.com/@paulofponciano/cluster-eks-com-istio-ingress-e-service-mesh-lab-session-ee8204eb544](https://medium.com/@paulofponciano/cluster-eks-com-istio-ingress-e-service-mesh-lab-session-ee8204eb544))

* *Key Pair* provisionada na conta alvo

* Credenciais administrativas da conta alvo/aws configuradas localmente

### Variáveis

Entrada de informações para provisionamento do Rancher *single node. Importante informar _security group ID_ adicional do EKS (linha 15).

```tf
variable "project_name" {
  default = "pegasus-2"
}

variable "env" {
  default = "dev"
}

variable "rancher_name" {
  default = "rancher-node"
}

variable "eks-sg" {
  type    = string
  default = "sg-03468a76eba533c6f"
}

variable "vpc_cidr_block" {
  type    = string
  default = "172.28.0.0/16"
}

variable "subnet_id_public_az1" {
  type    = string
  default = "subnet-05343e4dc141521f9"
}

variable "subnet_id_public_az2" {
  type    = string
  default = "subnet-06ea2c1ad38d32f17"
}

variable "subnet_id_private_az1" {
  type    = string
  default = "subnet-00a6a9c32c50a97ba"
}

variable "subnet_id_private_az2" {
  type    = string
  default = "subnet-06cc1a1b63da22f8f"
}

variable "aws_details" {
  type = map(string)
  default = {
    region        = "us-east-2"
    instance_type = "t3.medium"
    key_name      = "k8s" #keypair (.pem)
  }
}
```

![Additional security groups](https://cdn-images-1.medium.com/max/3104/1*6Qtejlkh2B31vxia7PK0Tg.png)

### Construção

- Execute a _stack_:

`terraform init`

`terraform plan`

`terraform apply`

Outputs:

![](https://cdn-images-1.medium.com/max/2712/1*Bv0IKJ0sHMNyp1O28vM_dg.png)

- Com o *Public IP*, *Public DNS* ou DNS customizado — Acesse a console do Rancher:

![](https://cdn-images-1.medium.com/max/3256/1*q3GRvNHC9c2nwnFYr0U1Tw.png)

Veja que agora é necessário buscar o _bootstrap password_, podemos fazer isso seguindo as instruções da tela inicial.

- Conecte na instância do Rancher para buscar o *password* utilizando o *container-id*:

`docker ps`

`docker logs **container-id** 2>&1 | grep "Bootstrap Password:"`

![](https://cdn-images-1.medium.com/max/3360/1*8D_bE05HJly3oY6WvrGRdA.png)

- Defina agora uma senha de sua escolha e siga em frente:

![](https://cdn-images-1.medium.com/max/3054/1*v5mhn1WEoi9URUicNrFsvw.png)

- Logo na sequência, escolha *'Import Existing' *e depois Amazon EKS:

![](https://cdn-images-1.medium.com/max/3814/1*ogaf1lag5LEkiDTMCqjEZA.png)

![](https://cdn-images-1.medium.com/max/3170/1*IRJRhDwvMbYz2wtQEtshyA.png)

- Será necessário criar um usuário IAM para que o Rancher conecte no EKS:

![Programmatic user](https://cdn-images-1.medium.com/max/3002/1*eoZdDaOvuQKglVZMm_KUSg.png)*Programmatic user*

![Attach 'AdministratorAccess' policy](https://cdn-images-1.medium.com/max/2992/1*2HWTLTEbGubaJYbZVezIjw.png)*Attach 'AdministratorAccess' policy*

- Conecte no cluster EKS para ajustar o ConfigMap:

`kubectl edit configmap aws-auth --namespace kube-system`

Adicione:

```
mapUsers: |
      - userarn: arn:aws:iam::<account_id>:user/rancher-access
        username: rancher-access
        groups:
          - system:masters
```

![aws-auth](https://cdn-images-1.medium.com/max/3248/1*DxODnWAJXDK3F7dTai6jgQ.png)*aws-auth*

- Voltando a console do rancher, defina o nome do cluster, a região em que ele está provisionado e as credenciais criadas anteriormente:

![](https://cdn-images-1.medium.com/max/3820/1*OdCPu0tnZKaRsR630dkMlA.png)

- Em *'Cluster To register'*, escolha seu cluster EKS e siga em frente:

![](https://cdn-images-1.medium.com/max/3830/1*glzHDBFVts8QIZs_74Iizg.png)

- Cluster EKS registrado e ativo no Rancher:

![](https://cdn-images-1.medium.com/max/3324/1*ykZi7B_5qdaGZLcqaWrc0g.png)

![](https://cdn-images-1.medium.com/max/3302/1*blNZ2yTCQQImIHMaepgO5g.png)

![](https://cdn-images-1.medium.com/max/3800/1*3vgko9aPmD5BAVpVbQULkA.png)

- Deploy de exemplo através da console rancher — *Import YAML:*

[bookinfo.yaml](https://github.com/paulofponciano/lab-eks-istio-aws-1/blob/main/eks/samples/bookinfo.yaml)

![](https://cdn-images-1.medium.com/max/3820/1*UwysFQGKhf8nXvwG_j0T8A.png)

![](https://cdn-images-1.medium.com/max/3400/1*qQBC8xxf8MobJ8BGBa1vQQ.png)
> Note: Como a carga aumentou no cluster, foi adicionado mais um node automaticamente conforme configuração do autoscaler:

![](https://cdn-images-1.medium.com/max/3818/1*JsrFSFWlQMLFyum8oIDthA.png)

Agora é seguir com os deploys…

Happy building!