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.