Criar um cluster Kubernetes não é algo trivial, existem diversos detalhes que você deve levar em consideração, da quantidade de hosts até o sistema operacional e o container runtime. Por sorte existem diversas ferramentas que facilitam o processo, veremos aqui como usar o eksctl
para criar seu cluster com apenas um comando.
Instalação
Existem algumas formas de instalar o eksctl
, veja abaixo como fazer a instalação para cada sistema operacional.
Importante: O
eksctl
é focado na nuvem AWS e para poder criar todos os recursos necessários você precisará de uma conta com as permissões corretas.
Bash
|
|
Homebrew
|
|
Windows
chocolatey install eksctl
Criando seu cluster
Depois de instalado, podemos criar nosso cluster usando o comando eksctl create cluster
, porém esse comando irá usar uma série de parametros padrões que possivelmente não atenderão a sua necessidade. Vamos então utilizar um exemplo para entender melhor algumas das opções disponíveis, veja a seguir:
|
|
Alguns parâmetros podem já ser auto-explicativos mas vamos entender cada um.
-n
: determina o “nome” do seu cluster, este nome é usado para referenciar o cluster em comandos futuros, como por exemplo quando você quiser aumentar a quantidade de hosts no seu cluster.-r
: se refere a região aonde seu cluster será criado, neste exemplo estou usando a região de Dublin oueu-west-1
, você pode usar qualquer outra região da AWS.-t
: determina o tipo de instância. O tipo irá determinar fatores como quantidade de CPU e memória, instâncias do tipot3.medium
como é o caso do exemplo possuem 2 vCPUs e 4Gb de memória ram, um pouco a mais do que o mínimo recomendado, veja outras opções de instâncias na documentação oficial.-N
: quantidade de instâncias que serão criadas.--node-volume-size
e--node-volume-type
informam o tamanho do volume de cada instância (volume do EBS) e o tipo, veja mais detalhes de vantagens e desvantagens de cada tipo de volume na documentação oficial.--ssh-access
: permite acesso via protocolossh
a cada instância, isso pode ser util caso queira realizar algum debug, por padrão esse acesso é desativado.--external-dns-access
: exporta e libera o acesso externo a provedores de DNS, permitindo que suas instâncias recebam tráfego externo.--full-ecr-access
: habilita a integração com o serviço ECR da AWS, podendo por exemplo, usar repositórios privados de imagens de containers.--set-kubeconfig-context
,--auto-kubeconfig
e--write-kubeconfig
: geram o arquivo de configuração e acesso ao cluster.
Executando o comando acima teremos algumas informações no terminal.
|
|
Em resumo o que o comando acima está fazendo é uma nova stack no CloudFormation para criar todos os recursos necessários para que seu cluster funcione, criando itens como subnets, nodegroup, cluster EKS e outros. O comando pode demorar alguns minutos por que é esperado uma resposta da stack criada no CloudFormation, após finalizar a execução algo parecido como o seguinte texto é impresso.
|
|
Dentre diversas informações, podemos ver que a última mensagem indica que o cluster exemplo
na região eu-west-1
está pronto, para provar isso podemos testar alguns comandos, perceba que foi gerado um arquivo de configuração, o caminho para o arquivo pode ser visto na penúltima linha, no meu caso /home/jaswdr/.kube/eksctl/clusters/exemplo
, podemos usar tanto o comando que foi gerado usando a opção --kubeconfig
ou usar a variável de ambiente KUBECONFIG
|
|
Por fim temos nosso cluster pronto para uso em produção, e disponível para usar com todos os comandos do kubectl
.
Importante: Para excluir o cluster que acabamos de criar e remover todos os recursos relacionado ao cluster basta executar o comando
eksctl delete cluster --name exemplo
Conclusão
O eksctl
possui várias outras opções, como escalar para aumentar ou diminuir a quantidade de hosts ou criar um auto-scale para que isso seja feito de forma automática, contudo isso é algo que você pode buscar na documentação oficial ou comentar abaixo se quiser mais artigos sobre o assunto, de qualquer forma espero que o conteúdo aqui tenha sido útil a você que quer começar a usar o Kubernetes em produção usando a nuvem da AWS. Até a próxima!