Database
 sql >> Base de Dados >  >> RDS >> Database

Usando Jenkins com Kubernetes AWS, Parte 1


CoreOS é o sistema operacional projetado para contêineres Docker. O CoreOS tem o Docker pré-instalado pronto para uso. O Kubernetes pode ser instalado no CoreOS usando o CloudFormation, conforme discutido em detalhes em um artigo anterior, “Introdução ao Kubernetes na Amazon Web Services (AWS)”.

Problema


O Kubernetes não está pré-instalado no CoreOS e pode ser instalado usando o kube-aws ferramenta e requer alguma entrada e configuração do usuário. A instalação do Kubernetes no CoreOS é um processo complicado e consiste nos seguintes estágios mostrados na Figura 1.


Figura 1: Instalação do Kubernetes no CoreOS Stages

Solução


Um Jenkins Pipeline pode ser usado para automatizar a instalação do Kubernetes, conforme mostrado na Figura 2. As várias etapas da instalação podem ser configuradas em um Jenkinsfile e, quando o pipeline é executado, o kube-aws ferramenta é baixada, o CloudFormation A pilha é inicializada, o conteúdo do Asset Directory é renderizado, os parâmetros do cluster, como o número de instâncias do trabalhador, são personalizados e, posteriormente, o cluster é validado e iniciado.


Figura 2: Jenkins Pipeline para instalar o Kubernetes no CoreOS

Instalar o Kubernetes usando um Jenkins Pipeline é um exemplo de Automação Padrão de design de DevOps.

Em um tutorial de três artigos, vamos automatizar o processo de instalação do Kubernetes usando um Jenkins Pipeline. Este artigo tem as seguintes seções:
  • Definindo o ambiente
  • Criando os artefatos de pré-requisito
  • Criando um nó Jenkins
  • Conclusão

Definindo o ambiente


Vamos instalar o Jenkins usando a imagem do Docker “jenkins” em uma instância do CoreOS. Iniciaremos um cluster Kubernetes em uma instância do Amazon AMI Linux EC2 usando um Jenkins Pipeline. Primeiro, execute duas instâncias do EC2, uma executando o Amazon Linux e a outra executando o CoreOS, conforme mostrado na Figura 3.


Figura 3: Obtendo o endereço IP público

Ao criar a instância do Amazon Linux, crie um novo par de chaves (“jenkins”, por exemplo) selecionando “Create a new key pair” e baixe a chave privada “jenkins.pem” a ser usada para configurar um agente Jenkins. Obtenha o endereço IP público da instância do EC2 executando o CoreOS e faça login SSH na instância.
ssh -i "jenkins.pem"  [email protected]

Execute a imagem do Docker para que o Jenkins inicie o Jenkins.
docker run -name jenkins -p 8080:8080 -p 50000:50000 jenkins

A imagem do Docker “Jenkins” é baixada. Jenkins começa. Copie a senha gerada. Obtenha o DNS público da instância do EC2 executando o Jenkins. Usando o URL :8080 , faça login no Jenkins Dashboard, conforme mostrado na Figura 4.


Figura 4: Consola de administração do Jenkins

Criando os artefatos de pré-requisito


Agora, precisamos criar alguns artefatos para um cluster Kubernetes que não são passíveis de automação.
  • Par de chaves EC2
  • Chave KMS
  • Diretório Jenkins /var/jenkins
  • Login SSH na instância do Amazon EC2 que executa o Amazon Linux
ssh -i "jenkins.pem"  [email protected]

Como o Amazon EC2 é usado, é necessária uma conta da AWS. Precisamos criar um conjunto de credenciais de segurança da AWS, que usaremos para configurar a instância do EC2 a partir da qual a pilha do CloudFormation é iniciada. Para criar novas credenciais de segurança da AWS, clique em Security Credentials for the user account e clique em Create New Access Key para criar uma chave de acesso. Copie o ID da chave de acesso e a chave de acesso. Na instância do Amazon Linux, execute o seguinte comando para configurar a instância com as credenciais da AWS:
aws configure

Especifique o ID da chave de acesso e a chave de acesso quando solicitado. Especifique o nome da região padrão (us-east-1 ) e o formato de saída (json ), como mostrado na Figura 5.


Figura 5: Configurando a instância do Jenkins com credenciais, região e formato de saída padrão da AWS

Em seguida, crie um par de chaves EC2. Execute o seguinte comando para criar um par de chaves chamado kubernetes-coreos e salve-o como kubernetes-coreos.pem .
aws ec2 create-key-pair
   --key-name kubernetes-coreos
   --query 'KeyMaterial'
   --output text > kubernetes-coreos.pem

Modifique as permissões de acesso do par de chaves usando o modo como 400, que define as permissões de acesso para leitura pelo proprietário.
chmod 400 kubernetes-coreos.pem

Um par de chaves é criado e as permissões de acesso são definidas (veja a Figura 6).


Figura 6: Criando um par de chaves para Kubernetes

O par de chaves também é listado no AWS EC2 Console, conforme mostrado na Figura 7.


Figura 7: Obtendo o endereço IP público

Em seguida, crie uma chave KMS, que é usada para criptografar/descriptografar ativos TLS do cluster e é identificada por uma string Arn. Use as aws interface de linha de comando para criar uma chave KMS para a região us-east-1 .
aws kms
   --region=us-east-1 create-key
   --description="kube-aws assets"

Uma chave KMS é criada, conforme mostrado na Figura 8. Copie o KeyMetadata.Arn string começando com arn:aws:kms:us-east-1 para ser usado posteriormente para inicializar o cluster CloudFormation.


Figura 8: Como criar uma chave KMS

Também precisamos criar um diretório para Jenkins:
sudo mkdir /var/Jenkins
sudo chmod 777 /var/jenkins

Um diretório é criado e as permissões são definidas, conforme mostrado na Figura 9.


Figura 9: Criando um diretório para Jenkins

Criando um nó Jenkins


Um Jenkins Pipeline é um projeto Jenkins que faz uso do plug-in Jenkins Pipeline. Um pipeline geralmente consiste em uma sequência de etapas, com cada etapa executando uma tarefa. Os executores disponíveis nos agentes são usados ​​para executar um projeto Jenkins. Um “agente” é uma máquina configurada para descarregar projetos do nó mestre. O nó “mestre” é a máquina na qual o Jenkins está instalado e lida com todas as tarefas do sistema de compilação, incluindo a análise de scripts do Pipeline e a execução de um projeto Jenkins em um executor. Um “executor” é um recurso computacional para compilação de código e pode ser configurado nos nós mestre ou agente. Nesta seção, criaremos um nó de agente e configuraremos um executor no nó. Selecione Gerenciar Jenkins no Jenkins Dashboard, conforme mostrado na Figura 10.


Figura 10: Obtendo o endereço IP público

Em seguida, selecione Gerenciar nós , como mostrado na Figura 11.


Figura 11: Obtendo o endereço IP público

O nó “mestre” deve ser listado. Clique em Novo nó para criar um nó de agente, conforme mostrado na Figura 12.


Figura 12: Obtendo o endereço IP público

Especifique um nome de nó (jenkins , por exemplo) e selecione o Agente permanente botão de opção, conforme mostrado na Figura 13. Clique em OK.


Figura 13: Obtendo o endereço IP público

Para configurar o novo nó do agente, precisaremos do DNS do host no qual o agente será criado. Copie o DNS público do console do AWS EC2 para a instância do EC2 que executa uma imagem do Amazon Linux, conforme mostrado na Figura 14.


Figura 14: Obtendo o endereço IP público

Na nova interface do usuário de entrada do agente, especifique um Nome (jenkins , por exemplo). Especifique o # de executores como 1. Especifique um diretório raiz remoto como /var/jenkins , que foi criado anteriormente. Especifique Rótulos como “jenkins”, cujo significado discutiremos em uma seção subsequente. Em Uso , mantenha a configuração padrão de "Use este nó o máximo possível". Em Método de lançamento , selecione "Iniciar agentes escravos em máquinas Unix via SSH". Em Anfitrião , especifique o DNS público copiado do console do EC2. Em Disponibilidade , selecione "Manter este agente online o máximo possível". Para credenciais , clique em Adicionar menu suspenso e selecione Provedor de credenciais Jenkins , conforme mostrado na Figura 15.


Figura 15: Obtendo o endereço IP público

Em Adicionar credenciais caixa de diálogo, selecione Domínio como Credenciais globais e Gentil como Global . Especifique Nome de usuário como "ec2-user" e selecione Entrar diretamente . Copie e cole o conteúdo do arquivo de chave privada jenkins.pem na Chave campo, como mostrado na Figura 16.


Figura 16: Adicionando credenciais do Jenkins

Clique em Adicionar , como mostrado na Figura 17.


Figura 17: Provedor de credenciais Jenkins>Adicionar

Selecione o usuário ec2 credencial em Credenciais , conforme mostrado na Figura 18. Clique em Salvar .


Figura 18: Configurando o nó Jenkins

Um novo agente é adicionado, conforme mostrado na Figura 19. Inicialmente, o agente pode não estar disponível porque ainda está sendo iniciado.


Figura 19: Agente Jenkins criado

Clique no link do agente e clique em Reiniciar agente , se necessário, conforme mostrado na Figura 20.


Figura 20: Agente de relançamento

A mensagem de saída “Agente conectado e online com sucesso” indica que o agente foi iniciado (consulte a Figura 21).


Figura 21: Agente conectado com sucesso e online

O agente “jenkins” deve ser listado como em execução, conforme mostrado na Figura 22.


Figura 22: Agente Jenkins em execução

Conclusão


Neste artigo, apresentamos a importância de automatizar uma instalação do Kubernetes com o Jenkins. Começamos instalando o Jenkins no CoreOS, criando os artefatos de pré-requisito e criando um nó Jenkins. Em um artigo subsequente, vamos configurar um Jenkinsfile para um pipeline Jenkins e criar um pipeline Jenkins. E, em um terceiro artigo, executaremos o pipeline do Jenkins para instalar o Kubernetes.