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.