sql >> Database teknologi >  >> RDS >> Database

Brug af Jenkins med Kubernetes AWS, del 2

I den første af tre artikler om automatisering af Kubernetes-installation med Jenkins, "Using Jenkins with Kubernetes AWS, Part 1," skabte vi de nødvendige artefakter og oprettede en Jenkins-knude. I denne fortsættelsesartikel skal vi konfigurere en Jenkins-fil til en Jenkins-pipeline og oprette en Jenkins-pipeline. Denne artikel har følgende afsnit:

  • Konfiguration af en Jenkins-fil
  • Oprettelse af en Jenkins-pipeline
  • Konklusion

Oprettelse af en Jenkins-fil

En Jenkins Pipeline er konfigureret i en tekstfil kaldet Jenkinsfile i Groovy syntaks. Jenkinsfilen består af trin . Et "trin" er et byggetrin, en instruktion for Jenkins at implementere. To slags trin understøttes:node og scene . En "node" er et trin på øverste niveau, der vælger en executor/er på agent/er at køre kode på. En node er en maskine (master eller agent ) og en etiket inden for nodetrinnet skal matche en etiket på maskinen, for at noden kan vælge maskinen. Trinnet "Knudepunkt" opretter et arbejdsområde , som er en filmappe, til et specifikt Jenkins-job til ressourcekrævende behandling. "Node"-trinnet planlægger også de trin, der er defineret i det på en eksekveringsplads ved at tilføje dem til Jenkins build-køen. Når eksekveringspladsen frigør de planlagte trin, køres de fra build-køen.

Opret en fil kaldet Jenkinsfile (uden suffiks). En fil uden suffiks oprettes på Windows med følgende kommando fra kommandoprompten. Bemærk "." I slutningen af ​​kommandoen, som skal medtages.

>notepad Jenkinsfile.

I dialogen "Kan ikke finde Jenkins-filen. fil. Vil du oprette en ny fil?" klik på Ja. En Jenkinsfil fil bliver oprettet. I Jenkinsfilen , skal du oprette et trin på øverste niveau kaldet "node", hvor "jenkins"-etiketten er den samme som Labels-værdien, der er konfigureret i Jenkins-agenten.

node('jenkins') {
}

Inden for nodetrinnet skal du tilføje andre trin for at installere en Kubernetes-klynge. Tilføj stadietrin til installation af Kubernetes. Proceduren for at installere Kubernetes er veldokumenteret og vil ikke blive diskuteret igen. Til reference, "Kom godt i gang med Kubernetes på Amazon Web Services (AWS)" diskuterer installationsproceduren i detaljer. Shell-kommandoer køres med "sh". Brugerinput for variabler såsom antal arbejdere og instanstype kan blive bedt om.

kube-aws init kommandoen til at initialisere CloudFormation-stakken har klyngenavnet hårdkodet som "kubernetes-coreos-cluster" (vilkårligt navn). --eksternt-dns-navnet er indstillet til et domænenavn, NOSQLSEARCH.COM , hvilket ville være forskelligt for forskellige brugere. EC2-nøgleparret er indstillet med --nøglenavn til kubernetes-coreos , som blev oprettet tidligere. KMS-nøglen er sat til KeyMetadata.Arn streng genereret tidligere med aws kms kommando i --kms-tasten mulighed. Den genererede Jenkinsfil er anført nedenfor:

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

Oprettelse af en Jenkins-pipeline

I Jenkins Dashboard skal du klikke på opret et nyt job for at skabe en Jenkins Pipeline, som vist i figur 1.


Figur 1: Vælg "opret nye job" for at oprette et Jenkins-job

I brugergrænsefladen skal du angive et pipelinenavn (install-kubernetes ), for eksempel, og vælg Rørledning , som vist i figur 2. Klik på OK.


Figur 2: Vælger Pipeline

Pipeline-konfigurationsguiden starter, som vist i figur 3.


Figur 3: Jenkins Pipeline Configuration Wizard

Vælg Pipeline fanen. I Definition feltet skal du vælge Pipeline-scriptet mulighed, som vist i figur 4.


Figur 4: Fanen Pipeline

Kopiér og indsæt Jenkins-filen, der er anført tidligere. Klik på Gem , som vist i figur 5.


Figur 5: Konfiguration af Pipeline Script

En ny Jenkins Pipeline bliver oprettet (se figur 6).


Figur 6: Jenkins Pipeline oprettet

I første omgang kører pipelinen ikke og Status bør ikke angive nogen Build, der er startet eller kørt, som vist i figur 7.


Figur 7: Jenkins Pipeline Status

Konklusion

I denne artikel konfigurerede vi en Jenkins-fil og brugte Jenkins-filen til at oprette en Jenkins-pipeline. I den 3 og afsluttende artikel om automatisering af Kubernetes-installation med Jenkins vil vi køre Jenkins-pipeline, der er oprettet i denne artikel, for at installere Kubernetes. Efterfølgende skal vi teste den installerede Kubernetes-klynge.


  1. Hvad er nyt i Postgres-XL 9.6

  2. Sådan grupperes efter måned i MySQL

  3. Forbedring af medianløsningen for rækkenummerering

  4. Forespørgselsoptimeringsteknikker i SQL Server:5 bedste fremgangsmåder til at øge forespørgselsydeevnen