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

Usando Jenkins com Kubernetes AWS, Parte 2


No primeiro de três artigos sobre como automatizar a instalação do Kubernetes com Jenkins, “Usando Jenkins com Kubernetes AWS, Parte 1”, criamos os artefatos de pré-requisito e criamos um nó Jenkins. Neste artigo de continuação, vamos configurar um Jenkinsfile para um pipeline Jenkins e criar um pipeline Jenkins. Este artigo tem as seguintes seções:
  • Configurando um arquivo Jenkins
  • Criando um pipeline do Jenkins
  • Conclusão

Criando um arquivo Jenkins


Um Jenkins Pipeline é configurado em um arquivo de texto chamado Jenkinsfile na sintaxe Groovy. O arquivo Jenkins consiste em etapas . Uma “etapa” é uma etapa de construção, uma instrução para o Jenkins implementar. Dois tipos de etapas são suportados: e estágio . Um “nó” é uma etapa de nível superior que seleciona um(s) executor(es) no(s) agente(s) para executar o código. Um nó é uma máquina (mestre ou agente ) e um rótulo na etapa do nó deve corresponder a um rótulo na máquina para o nó selecionar a máquina. A etapa "nó" cria um espaço de trabalho , que é um diretório de arquivos, para um trabalho específico do Jenkins para processamento intensivo de recursos. A etapa “node” também agenda as etapas definidas nela em um slot de executor, adicionando-as à fila de compilação do Jenkins. Quando o slot do executor libera, as etapas agendadas são executadas na fila de construção.

Crie um arquivo chamado Jenkinsfile (sem sufixo). Um arquivo sem sufixo é criado no Windows com o seguinte comando no prompt de comando. Note o "." No final do comando, que deve ser incluído.
>notepad Jenkinsfile.

Na caixa de diálogo “Não é possível encontrar o arquivo Jenkins. Arquivo. Deseja criar um novo arquivo?” clique em Sim. Um arquivo Jenkins arquivo é criado. No arquivo Jenkins , crie uma etapa de nível superior chamada "node" na qual o rótulo "jenkins" é o mesmo que o valor Labels configurado no agente Jenkins.
node('jenkins') {
}

Dentro da etapa do nó, adicione outras etapas para instalar um cluster Kubernetes. Adicionar etapas de estágio para instalar o Kubernetes. O procedimento de instalação do Kubernetes está bem documentado e não será discutido novamente. Para referência, “Introdução ao Kubernetes na Amazon Web Services (AWS)” discute o procedimento de instalação em detalhes. Os comandos do shell são executados com “sh”. A entrada do usuário para variáveis ​​como número de trabalhadores e tipo de instância pode ser solicitada.

O kube-aws init O comando para inicializar a pilha do CloudFormation tem o nome do cluster codificado como “kubernetes-coreos-cluster” (nome arbitrário). O --external-dns-name está definido para um nome de domínio, NOSQLSEARCH.COM , que seria diferente para usuários diferentes. O par de chaves EC2 é definido com --key-name para kubernetes-coreos , que foi criado anteriormente. A chave KMS é definida como KeyMetadata.Arn string gerada anteriormente com o aws kms comando no --kms-key opção. O arquivo Jenkins gerado está listado abaixo:
node('jenkins') {

stage 'set env'

sh "sudo yum install gnupg2"
sh "gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E"

sh "gpg2 --fingerprint FC8A365E"

sh "wget https://github.com/coreos/coreos-kubernetes/releases/
   download/v0.7.1/kube-aws-linux-amd64.tar.gz"
sh "wget https://github.com/coreos/coreos-kubernetes/releases/
   download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig"

sh "gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws-linux-
   amd64.tar.gz"

sh "tar zxvf kube-aws-linux-amd64.tar.gz"

sh "sudo mv linux-amd64/kube-aws /usr/local/bin"

sh "export AWS_ACCESS_KEY_ID=AKIAJGFCP4HUFH4453FA"
sh "export AWS_SECRET_ACCESS_KEY=7BaiUETep3zPYrhrzKYpBdwkwVV16
   BTT+pt2/EXF"

sh "aws ec2 create-volume --availability-zone us-east-1c --size 10
   --volume-type gp2"


stage 'kube-aws init'
deleteDir()

sh "mkdir coreos-cluster"
sh "cd coreos-cluster"

sh "kube-aws init
   --cluster-name=kubernetes-coreos-cluster
   --external-dns-name=NOSQLSEARCH.COM
   --region=us-east-1
   --availability-zone=us-east-1c
   --key-name=kubernetes-coreos
   --kms-key-arn='arn:aws:kms:us-east-1:672593526685:key/
     f380f8b3-e93d-4a37-b87f-9ad1dbe909be

'"
stage "kube-aws render"
WORKER_COUNT = input message: 'Number of Nodes',
   parameters: [[$class: 'StringParameterDefinition',
   defaultValue: '3', description: '', name: 'WORKER_COUNT']]
INSTANCE_TYPE = input message: 'Instance Type',
   parameters: [[$class: 'StringParameterDefinition',
   defaultValue: 't2.micro', description: '',
   name: 'INSTANCE_TYPE']]

sh "kube-aws render"
sh "sed -i '''s/#workerCount: 1/workerCount:
   '''$WORKER_COUNT'''/''' cluster.yaml"
sh "sed -i '''s/#workerInstanceType: m3.medium/workerInstanceType:
   '''$INSTANCE_TYPE'''/''' cluster.yaml"
sh "kube-aws validate"

stage "Archive CFN"
step([$class: 'ArtifactArchiver', artifacts: 'cluster.yaml,
   stack-template.json,credentials/*,userdata/*',
   fingerprint: true])

   stage "Deploy Cluster"
   shouldDeploy = input message: 'Should Deploy Cluster?',
      parameters: [[$class: 'ChoiceParameterDefinition',
      choices: 'yesno', description: '', name: 'Deploy']]
   if(shouldDeploy == "yes") {
      echo "Deploying Kubernetes cluster"
      sh "kube-aws up"
      sh "kube-aws status"
      step([$class: 'ArtifactArchiver', artifacts: 'kubeconfig',
         fingerprint: true])
   }
}

Criando um pipeline do Jenkins


No painel do Jenkins, clique em criar novos trabalhos para criar um Jenkins Pipeline, conforme mostrado na Figura 1.


Figura 1: Selecione “criar novos trabalhos” para criar um trabalho do Jenkins

Na interface do usuário, especifique um nome de pipeline (install-kubernetes ), por exemplo, e selecione Pipeline , conforme mostrado na Figura 2. Clique em OK.


Figura 2: Selecionando pipeline

O assistente de configuração de pipeline é iniciado, conforme mostrado na Figura 3.


Figura 3: Assistente de configuração de pipeline do Jenkins

Selecione o Pipeline aba. Na Definição campo, selecione o script de pipeline opção, como mostrado na Figura 4.


Figura 4: Guia de pipeline

Copie e cole o arquivo Jenkins listado anteriormente. Clique em Salvar , como mostrado na Figura 5.


Figura 5: Configurando o script de pipeline

Um novo Jenkins Pipeline é criado (veja a Figura 6).


Figura 6: Canal Jenkins criado

Inicialmente, o pipeline não está em execução e o Status não deve listar nenhum Build sendo iniciado ou executado, conforme mostrado na Figura 7.


Figura 7: Status do pipeline Jenkins

Conclusão


Neste artigo, configuramos um Jenkinsfile e usamos o Jenkinsfile para criar um pipeline Jenkins. No artigo 3 e de conclusão sobre como automatizar a instalação do Kubernetes com o Jenkins, executaremos o pipeline do Jenkins criado neste artigo para instalar o Kubernetes. Posteriormente, testaremos o cluster Kubernetes instalado.