Criando Um Cluster Kubernetes De Nível Corporativo

Usando o KOPS para criar de forma simplificada Kubernetes Cluster

Por Felipe Costa, Cloud Security Engineer – publicado pela primeira vez no Medium.

Foto de Goran Ivos em Unsplash

O KOPS (Kubernetes Operations) ajuda a criar, destruir, atualizar e manter clusters Kubernetes com nível de produção altamente disponível e escalonável na linha de comando. É a maneira mais fácil de colocar um cluster Kubernetes de produção em funcionamento.

Este artigo tem como objetivo ajudá-lo a criar seu cluster K8s autogerenciado. É longo, mas muito fácil de seguir. A documentação oficial do KOPS (Kubernetes Operations) pode ser encontrada aqui:

kubernetes/kops

The easiest way to get a production grade Kubernetes cluster up and running. kops versions released today contain a critical fix to etcd-manager: 1 year after creation (or first adopting etcd-manager), clusters will stop responding due to expiration of a TLS certificate. Upgrading kops to 1.15.3, 1.16.2, 1.17.0-beta.2, or 1.18.0-alpha.3 is highly recommended.

Estou usando a AWS como provedor de nuvem para executar este cluster. Essa ferramenta também suporta Google Cloud, OpenStack, VMware vSphere em alpha e outras plataformas que você planeje usar no futuro.

O KOPS criará vários recursos diferentes na sua conta da AWS para configurar o cluster K8s, como instâncias do EC2, entradas do Route 53, Autoscaling Groups, e Load Balancers para fornecer alta disponibilidade e escalabilidade ao seu cluster.

Para começar, precisamos ter uma instância do EC2 que possa ser uma instância – que você já possui ou pode configurar uma nova e atribuir as permissões corretas a esta. Para configurar uma nova, siga o manual abaixo:

Setting up with Amazon EC2

Complete the tasks in this section to get set up for launching an Amazon EC2 instance for the first time: When you are finished, you will be ready for the Amazon EC2 Getting started tutorial. When you sign up for Amazon Web Services (AWS), your AWS account is automatically signed up for all services in AWS, including Amazon EC2.

É necessário, também, ter essas permissões IAM abaixo para que o EC2 possa configurar seu cluster:

AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess

Para configurar essas permissões, você pode criar um usuário do IAM, configurar as permissões e usar a AWS CLI para configurar a Chave de acesso e o segredo, para que sua instância do EC2 possa usar o KOPS para configurar o cluster. Você pode verificar o manual oficial do KOPS para isso:

kubernetes/kops

Make sure you have installed kops and installed kubectl. In order to correctly prepare your AWS account for kops, we require you to install the AWS CLI tools, and have API credentials for an account that has the permissions to create a new IAM account for kops later in the guide.

Outra opção é usar o IAM Roles e anexar essas permissões à sua instância do EC2 – como eu fiz – e você deverá ter os mesmos resultados de qualquer maneira. Para criar um IAM Role, siga este manual:

IAM roles for Amazon EC2

Applications must sign their API requests with AWS credentials. Therefore, if you are an application developer, you need a strategy for managing credentials for your applications that run on EC2 instances. For example, you can securely distribute your AWS credentials to the instances, enabling the applications on those instances to use your credentials to sign requests, while protecting your credentials from other users.

.    .    .

O próximo passo será instalar as 2 ferramentas necessárias para configurar seu cluster:

Instale o Kubectl:

Install Kubectl

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Instale o KOPS:

Install KOPS

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

PS.: Você também precisará que seja instalado o AWS CLI – como eu estou usando uma máquina Amazon Linux 2, o AWS CLI já está instalado.

.    .    .

Após instalar as ferramentas, precisamos criar um S3 bucket para poder armazenar o estado do seu cluster. Para criar o bucket, siga as configurações abaixo:

S3 Bucket Creation

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

PS.: Essa é a maneira mais básica de configurar seu S3 bucket. Também recomendo que você configure o controle de versão do seu S3 bucket, caso precise reverter ou recuperar um armazenamento de estado anterior e também a criptografia padrão para o seu bucket, mas é opcional.

.    .    .

Também vou configurar algumas variáveis de ambiente para facilitar a execução de comandos no futuro:

KOPS Env

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

PS.: Você pode escolher qualquer nome que desejar, mas o nome DEVE TERMINAR com “k8s.local” devido às configurações de DNS que o KOPS executará durante o processo para criar o cluster. Além disso, o nome do seu S3 bucket precisa ser exclusivo na AWS Cloud.

.    .    .

Você precisará escolher quais zonas de disponibilidade estão acessíveis  para o cluster usar. Neste exemplo, implantaremos nosso cluster na região us-east-1, para verificar as zonas de disponibilidade para essa região, basta seguir as opções abaixo:

Check AZs us-east-1

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Você pode conferir todos os códigos de Regiões e Disponibilidade neste link abaixo:

Regions, Availability Zones, and Local Zones

Amazon cloud computing resources are hosted in multiple locations world-wide. These locations are composed of AWS Regions, Availability Zones, and Local Zones. Each AWS Region is a separate geographic area. Each AWS Region has multiple, isolated locations known as Availability Zones.

.    .    .

No meu caso, estou criando meus nodes, cada um em uma zona de disponibilidade diferente (1 Master and 3 Worker Nodes). Ao executar o comando abaixo, você criará a configuração no S3 bucket para que o KOPS possa ler e implantar seu cluster:

Create KOPS Cluster Configuration

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

O comando acima irá gerar uma configuração de cluster, mas ainda não começará a construí-la. De acordo com a mensagem, você deve configurar uma chave pública ssh e adicionar essa chave ao cluster:

KOPS ssh key

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

PS.: Ignore a configuração da senha

Executarei o cluster na configuração padrão principal, mas se você desejar modificar as configurações de cluster poderá usar o seguinte comando:

KOPS Master Node Configuration

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Modifiquei a configuração do node no cluster para poder escalar mais instâncias do que o padrão. Você pode alterar o tipo de instância e as instâncias mínima e máxima usando o seguinte comando e editando as variáveis:

KOPS Worker Nodes Configuration

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Se você quiser fazer um double-check nas configurações que o KOPS aplicará, use o seguinte comando:

KOPS Configuration

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Para aplicar toda a configuração que fizemos até agora, execute o comando abaixo para começar a criar seu cluster K8s, com base nos arquivos de configuração que armazenamos no Bucket S3:

KOPS Configuration and Deploy your Cluster

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Levará tempo para criar o cluster (geralmente de 10 a 15 minutos), então, seja paciente. Você pode verificar o status da criação do cluster executando o seguinte:

KOPS Validate Cluster Error

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

PS .: O comando acima mostrará vários erros durante o processo, mas não se preocupe, isso acontece porque o cluster ainda não está pronto.

Após alguns minutos, quando o cluster estiver 100% operacional, você poderá verificar seus nodes e master executando o mesmo comando de antes:

KOPS Validate Cluster Success

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Feito! Você acabou de criar um cluster K8s de nível empresarial na nuvem.

Se você estiver preocupado com o custo dessa configuração, eu fiz um custo de estimativa usando a AWS Pricing Calculator, em geral, essa configuração custará cerca de 0,25 USD por hora. Você pode verificar o custo total estimado neste link.

Lembre-se de excluir seu cluster, se você não estiver usando. Para excluir seu cluster, basta executar o comando abaixo:

Delete KOPS Cluster

You can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or window. Reload to refresh your session. Reload to refresh your session.

Esteja Protegido na Nuvem

A Trend Micro Cloud One é uma plataforma de serviços que traz uma segurança poderosa, que lhe permite aproveitar todos os benefícios da nuvem para aumentar a eficiência de seu negócio. A Trend Micro Cloud One oferece diversos serviços criados para atender a necessidades específicas de seu negócio, incluindo controles de segurança para Workloads, Contêineres, Redes, Armazenamento e mais de 80 serviços na maioria das infraestruturas de nuvem pública.

Não importa em que momento você esteja de sua jornada na nuvem, a Trend Micro Cloud One tem a solução para você. Da virtualização e migração à segurança de DevOps, contêiner e serverless – aqui você conta com uma solução unificada, automatizada e flexível para suas prioridades em segurança na cloud.

Reconhecemos que há diferentes fatores que influenciam as mudanças em sua segurança de nuvem. Também entendemos todo o trabalho que dá para proteger seu ambiente complexo e acelerado de multicloud – então conte conosco para simplificar tudo isso.