In de eerste van drie artikelen over het automatiseren van Kubernetes-installatie met Jenkins, "Using Jenkins with Kubernetes AWS, Part 1", hebben we de vereiste artefacten gemaakt en een Jenkins-knooppunt gemaakt. In dit vervolgartikel zullen we een Jenkins-bestand configureren voor een Jenkins-pijplijn en een Jenkins-pijplijn maken. Dit artikel heeft de volgende secties:
- Een Jenkins-bestand configureren
- Een Jenkins-pijplijn maken
- Conclusie
Een Jenkins-bestand maken
Een Jenkins-pijplijn is geconfigureerd in een tekstbestand met de naam Jenkinsfile in Groovy-syntaxis. Het Jenkins-bestand bestaat uit stappen . Een "stap" is een bouwstap, een instructie die Jenkins moet implementeren. Er worden twee soorten stappen ondersteund:knooppunt en podium . Een "knooppunt" is een stap op het hoogste niveau die een uitvoerder(s) op agent(en) selecteert om code op uit te voeren. Een node is een machine (master of agent ) en een label in de knooppuntstap moet overeenkomen met een label op de machine zodat het knooppunt de machine kan selecteren. De stap "knooppunt" maakt een werkruimte , wat een bestandsdirectory is, voor een specifieke Jenkins-taak voor resource-intensieve verwerking. De stap "knooppunt" plant ook de stappen die erin zijn gedefinieerd op een uitvoerdersvak door ze toe te voegen aan de Jenkins-buildwachtrij. Wanneer de executeur-sleuf vrijmaakt, worden de geplande stappen uitgevoerd vanuit de build-wachtrij.
Maak een bestand met de naam Jenkinsfile (zonder achtervoegsel). Een bestand zonder achtervoegsel wordt in Windows gemaakt met de volgende opdracht vanaf de opdrachtprompt. Merk op "." Aan het einde van de opdracht, die moet worden opgenomen.
>notepad Jenkinsfile.
In het dialoogvenster "Kan het Jenkins-bestand niet vinden. het dossier. Wilt u een nieuw bestand maken?” klik op Ja. Een Jenkins-bestand bestand wordt gemaakt. In het Jenkins-bestand , maak een stap op het hoogste niveau met de naam "node" waarin het label "jenkins" hetzelfde is als de waarde Labels die is geconfigureerd in de Jenkins-agent.
node('jenkins') { }
Voeg binnen de knooppuntstap andere stappen toe om een Kubernetes-cluster te installeren. Voeg fasestappen toe voor het installeren van Kubernetes. De procedure voor het installeren van Kubernetes is goed gedocumenteerd en zal niet opnieuw worden besproken. Ter referentie:"Aan de slag met Kubernetes op Amazon Web Services (AWS)" wordt de installatieprocedure in detail besproken. Shell-opdrachten worden uitgevoerd met "sh". Er kan om gebruikersinvoer worden gevraagd voor variabelen zoals het aantal werkers en het type exemplaar.
De kube-aws init opdracht om de CloudFormation-stack te initialiseren heeft de clusternaam hard gecodeerd als "kubernetes-coreos-cluster" (willekeurige naam). De --external-dns-name is ingesteld op een domeinnaam, NOSQLSEARCH.COM , die voor verschillende gebruikers anders zou zijn. Het EC2-sleutelpaar wordt ingesteld met --key-name naar kubernetes-coreos , die eerder is gemaakt. De KMS-sleutel is ingesteld op de KeyMetadata.Arn string die eerder is gegenereerd met de aws kms commando in de --kms-key optie. Het gegenereerde Jenkinsbestand staat hieronder vermeld:
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]) } }
Een Jenkins-pijplijn maken
Klik in het Jenkins-dashboard op nieuwe vacatures maken om een Jenkins-pijplijn te maken, zoals weergegeven in afbeelding 1.
Figuur 1: Selecteer "creëer nieuwe banen" om een Jenkins-baan aan te maken
Geef in de gebruikersinterface een pijplijnnaam op (install-kubernetes ), bijvoorbeeld, en selecteer Pijpleiding , zoals weergegeven in Afbeelding 2. Klik op OK.
Figuur 2: Pijplijn selecteren
De pijplijnconfiguratiewizard wordt gestart, zoals weergegeven in Afbeelding 3.
Figuur 3: Jenkins Pipeline-configuratiewizard
Selecteer de Pijpleiding tabblad. In de Definitie veld, selecteer het Pijplijnscript optie, zoals weergegeven in Afbeelding 4.
Figuur 4: Tabblad Pijplijn
Kopieer en plak het eerder genoemde Jenkins-bestand. Klik op Opslaan , zoals weergegeven in afbeelding 5.
Figuur 5: Pijplijnscript configureren
Er wordt een nieuwe Jenkins-pijplijn gemaakt (zie afbeelding 6).
Figuur 6: Jenkins-pijplijn gemaakt
Aanvankelijk is de pijplijn niet actief en de Status mag geen enkele build vermelden die is gestart of uitgevoerd, zoals weergegeven in Afbeelding 7.
Figuur 7: Jenkins-pijplijnstatus
Conclusie
In dit artikel hebben we een Jenkins-bestand geconfigureerd en het Jenkins-bestand gebruikt om een Jenkins-pijplijn te maken. In het 3e en afsluitende artikel over het automatiseren van Kubernetes-installatie met Jenkins, zullen we de Jenkins-pijplijn uitvoeren die in dit artikel is gemaakt om Kubernetes te installeren. Vervolgens zullen we het geïnstalleerde Kubernetes-cluster testen.