sql >> Base de Datos >  >> RDS >> Database

Uso de Jenkins con Kubernetes AWS, Parte 2

En el primero de tres artículos sobre la automatización de la instalación de Kubernetes con Jenkins, "Uso de Jenkins con Kubernetes AWS, Parte 1", creamos los artefactos de requisitos previos y creamos un nodo de Jenkins. En este artículo de continuación, configuraremos un Jenkinsfile para una canalización de Jenkins y crearemos una canalización de Jenkins. Este artículo tiene las siguientes secciones:

  • Configuración de un archivo Jenkins
  • Creación de una canalización de Jenkins
  • Conclusión

Crear un archivo Jenkins

Una canalización de Jenkins se configura en un archivo de texto llamado Jenkinsfile en sintaxis Groovy. El archivo Jenkins consta de pasos . Un "paso" es un paso de construcción, una instrucción para que Jenkins la implemente. Se admiten dos tipos de pasos:nodo y escenario . Un "nodo" es un paso de nivel superior que selecciona un ejecutor en un agente para ejecutar el código. Un nodo es una máquina (maestro o agente ) y una etiqueta dentro del paso del nodo debe coincidir con una etiqueta en la máquina para que el nodo seleccione la máquina. El paso "nodo" crea un espacio de trabajo , que es un directorio de archivos, para un trabajo de Jenkins específico para el procesamiento intensivo de recursos. El paso de "nodo" también programa los pasos definidos dentro de él en una ranura de ejecutor al agregarlos a la cola de compilación de Jenkins. Cuando la ranura del ejecutor se libera, los pasos programados se ejecutan desde la cola de compilación.

Cree un archivo llamado Jenkinsfile (sin ningún sufijo). Se crea un archivo sin sufijo en Windows con el siguiente comando desde el símbolo del sistema. Nota la "." Al final del comando, que debe incluirse.

>notepad Jenkinsfile.

En el cuadro de diálogo "No se puede encontrar el archivo Jenkins. expediente. ¿Quieres crear un nuevo archivo?” haga clic en Sí. Un archivo Jenkins se crea el archivo. En el archivo Jenkins , cree un paso de nivel superior denominado "nodo" en el que la etiqueta "jenkins" sea la misma que el valor de etiquetas configurado en el agente de Jenkins.

node('jenkins') {
}

Dentro del paso del nodo, agregue otros pasos para instalar un clúster de Kubernetes. Agregar pasos de etapa para instalar Kubernetes. El procedimiento para instalar Kubernetes está bien documentado y no se volverá a tratar. Como referencia, "Introducción a Kubernetes en Amazon Web Services (AWS)" analiza el procedimiento de instalación en detalle. Los comandos de shell se ejecutan con "sh". Es posible que se solicite la entrada del usuario para variables como el número de trabajadores y el tipo de instancia.

El inicio de Kube-aws El comando para inicializar la pila de CloudFormation tiene el nombre del clúster codificado como "kubernetes-coreos-cluster" (nombre arbitrario). El --external-dns-name se establece en un nombre de dominio, NOSQLSEARCH.COM , que sería diferente para diferentes usuarios. El par de claves de EC2 se establece con --key-name a kubernetes-coreos , que se creó anteriormente. La clave KMS está configurada en KeyMetadata.Arn cadena generada anteriormente con aws kms comando en el --kms-key opción. El Jenkinsfile generado se enumera a continuación:

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])
   }
}

Creación de una canalización de Jenkins

En el panel de Jenkins, haga clic en crear nuevos trabajos para crear una canalización de Jenkins, como se muestra en la Figura 1.


Figura 1: Seleccione "crear nuevos trabajos" para crear un trabajo de Jenkins

En la interfaz de usuario, especifique un nombre de canalización (install-kubernetes ), por ejemplo, y seleccione Pipeline , como se muestra en la Figura 2. Haga clic en Aceptar.


Figura 2: Selección de tubería

Se inicia el asistente de configuración de canalización, como se muestra en la Figura 3.


Figura 3: Asistente de configuración de tubería de Jenkins

Seleccione la tubería pestaña. En la Definición seleccione el campo Pipeline script opción, como se muestra en la Figura 4.


Figura 4: Pestaña Canalización

Copie y pegue el archivo Jenkins enumerado anteriormente. Haz clic en Guardar , como se muestra en la Figura 5.


Figura 5: Configuración de la secuencia de comandos de canalización

Se crea una nueva canalización de Jenkins (consulte la Figura 6).


Figura 6: Canalización de Jenkins creada

Inicialmente, la canalización no se está ejecutando y el Estado no debe enumerar ninguna compilación que se haya iniciado o ejecutado, como se muestra en la Figura 7.


Figura 7: Estado de canalización de Jenkins

Conclusión

En este artículo, configuramos un Jenkinsfile y usamos el Jenkinsfile para crear una canalización de Jenkins. En el artículo 3 y final sobre la automatización de la instalación de Kubernetes con Jenkins, ejecutaremos la canalización de Jenkins creada en este artículo para instalar Kubernetes. Posteriormente, probaremos el clúster de Kubernetes instalado.