A configuração de um cluster Kubernetes do zero pode ser um desafio, especialmente se você não usar os serviços gerenciados do Kubernetes e precisar garantir a Alta Disponibilidade.
Kops (Kubernetes Operations) é uma ferramenta de código aberto que ajuda a configurar, atualizar e gerenciar Clusters Kubernetes "não gerenciados" sobre fornecedores de nuvem pública. Nesta postagem, você aprenderá como implantar um cluster HA Kubernetes na AWS.
Configurando o Kops.
O primeiro passo aqui será obter o Kops CLI. Supondo que você esteja usando uma distribuição Linux, você pode usar os comandos abaixo. Caso contrário, verifique este link.
Além disso, você precisará interagir com a API da AWS, portanto, precisará da CLI da AWS. O conjunto de comandos abaixo mostra como instalá-lo nas distribuições Linux. Para qualquer outro sistema operacional, siga estas instruções.
O Kops precisará de um usuário programático do AWS IAM para poder implantar a infraestrutura necessária para o cluster Kubernetes. Este usuário deve ter acesso total aos serviços IAM, EC2, S3, VPC e Route53. Para fazer isso, você pode anexar diretamente as políticas gerenciadas AmazonEC2FullAccess, AmazonRoute53FullAccess AmazonS3FullAccess, IAMFullAccess e AmazonVPCFullAccess ao usuário.
Ao criar o usuário, selecione a opção de acesso programático, pois, assim, a AWS gerará um par de Chaves de acesso e Chaves secretas para a CLI acessar a API da AWS. Armazene bem a chave secreta, pois é a única vez que ela será exibida.Depois de ter as duas chaves, configure-as como as chaves padrão da CLI emitindo o seguinte comando. Com este comando, você também pode definir a região padrão da AWS.
Para armazenar o estado dos clusters, o Kops precisará de um bucket S3. Você pode usar suas novas credenciais para criar o bucket usando a AWS CLI. Além disso, é aconselhável ativar o versionamento do bucket, pois pode ajudá-lo a recuperar o estado do cluster em caso de falha.
Criando o cluster
O script abaixo ajuda na criação do cluster, para configurar melhor os parâmetros do cluster e algumas opções adicionais. Você pode selecionar a versão do Kubernetes, o número de master nodes e de worker nodes, o tipo de instância e as zonas de disponibilidade nas quais as instâncias serão implantadas.
As opções de rede e a faixa CIDR da rede também podem ser definidas aqui. Você pode verificar a lista de opções de rede suportadas aqui. Além disso, você pode escolher se deseja gerar uma saída de TerraForm ou de CloudFormation.
Defina os parâmetros de acordo com suas necessidades e execute o script. Neste exemplo, usaremos um nome de cluster que termina com .k8s.local, pois é a configuração mais simples, sem a necessidade de um servidor DNS externo para propagar os IPs da API do Kubernetes. Se você precisar usar um serviço DNS externo, verifique esta documentação. Ao executar o script, o Kops gerará a especificação do cluster, mas ainda não implantará o cluster.
Você pode verificar a especificação do cluster emitindo o comando abaixo. Lembre-se de definir o sinalizador de estado com o nome do seu bucket de estado. Também pode ser usado para modificar clusters já criados.
O comando edit abrirá um editor vi, onde você poderá modificar todos os parâmetros de acordo com suas necessidades. Se você examinar a especificação yaml, poderá ver que a especificação do cluster corresponde a todos os parâmetros passados para o comando create, e são adicionados elementos adicionais necessários para suportar a infraestrutura do cluster, como sub-redes.
Ao emitir o seguinte comando, a especificação do cluster gerará um cluster real na conta da AWS. Seja paciente, pois demora um pouco. Se o comando for executado sem a flag –yes, ele mostrará todos os recursos que estão prestes a serem criados, mas os recursos não serão criados.
Após a conclusão do processo de criação, você pode verificar o painel do AWS EC2 para ver suas novas instâncias, 3 master nodes e 3 worker nodes nesse caso.
Uma boa maneira de verificar se tudo está funcionando é executando os seguintes comandos. O primeiro exibe o status de todos os elementos do plano de controle, enquanto o segundo lista os nodes e seus status.
Além disso, o Kops oferece uma verificação de cluster integrada que também é muito útil.
Removendo
Se você deseja excluir o cluster e todos os recursos associados que foram criados, basta realizar o seguinte comando. Se você o usar sem a flag –yes, ele exibirá uma lista detalhada de todos os elementos que serão destruídos, mas não os destruirá até você adicionar a flag.
Mais sobre Kops
O Kops é uma ferramenta amplamente usada para gerenciar clusters Kubernetes em ambientes de produção e oferece bastante flexibilidade e recursos avançados que ajudam a personalizar cada cluster de acordo com os requisitos que ele deve atender. Ajuda na criação, atualização e melhoria dos clusters de maneira simples. No entanto, lembre-se de que o Kops não suporta todos os recursos que o Kubernetes oferece ao criar um cluster 'manualmente', por exemplo, nem todos os plug-ins de rede são suportados pelo Kops no momento, ou pelo menos não de maneira estável.
Se você quer saber mais sobre o Kops, leia a documentação.