V prvním ze tří článků o automatizaci instalace Kubernetes pomocí Jenkins, „Používání Jenkins s Kubernetes AWS, část 1“, jsme vytvořili nezbytné artefakty a vytvořili uzel Jenkins. V tomto pokračování článku nakonfigurujeme Jenkinsfile pro Jenkinsovo potrubí a vytvoříme Jenkinsovo potrubí. Tento článek má následující sekce:
- Konfigurace Jenkinsfile
- Vytvoření Jenkinsova potrubí
- Závěr
Vytvoření Jenkinsfile
Jenkins Pipeline je nakonfigurován v textovém souboru s názvem Jenkinsfile v syntaxi Groovy. Jenkinsfile sestává z kroků . „Krok“ je krok sestavení, instrukce, kterou má Jenkins implementovat. Jsou podporovány dva druhy kroků:uzel a fáze . „Uzel“ je krok nejvyšší úrovně, který vybírá spouštěče na agentech, na kterých se má spouštět kód. Uzel je stroj (master nebo agent ) a štítek v kroku uzlu by se měl shodovat se štítkem na počítači, aby uzel vybral stroj. Krok „uzel“ vytvoří pracovní prostor , což je souborový adresář, pro konkrétní Jenkinsovu úlohu pro zpracování náročné na zdroje. Krok „uzel“ také naplánuje kroky v něm definované na exekutorském slotu jejich přidáním do fronty sestavování Jenkins. Když exekutorský slot uvolní, spusťte naplánované kroky z fronty sestavení.
Vytvořte soubor s názvem Jenkinsfile (bez jakékoli přípony). Soubor bez přípony se v systému Windows vytvoří pomocí následujícího příkazu z příkazového řádku. Všimněte si „.“ Na konci příkazu, který má být zahrnut.
>notepad Jenkinsfile.
V dialogovém okně „Nelze najít soubor Jenkins. soubor. Chcete vytvořit nový soubor?" klikněte na Ano. Jenkinsfile soubor se vytvoří. V Jenkinsfile , vytvořte krok nejvyšší úrovně nazvaný „uzel“, ve kterém je štítek „jenkins“ stejný jako hodnota Labels nakonfigurovaná v agentovi Jenkins.
node('jenkins') { }
V rámci kroku uzlu přidejte další kroky k instalaci clusteru Kubernetes. Přidejte kroky fáze pro instalaci Kubernetes. Postup instalace Kubernetes je dobře zdokumentován a nebude se o něm znovu diskutovat. Pro informaci „Začínáme s Kubernetes na Amazon Web Services (AWS)“ podrobně popisuje postup instalace. Příkazy shellu se spouštějí pomocí „sh“. Může být požadován uživatelský vstup pro proměnné, jako je počet pracovníků a typ instance.
kube-aws init příkaz k inicializaci zásobníku CloudFormation má název clusteru pevně zakódovaný jako „kubernetes-coreos-cluster“ (libovolný název). --external-dns-name je nastaven na název domény NOSQLSEARCH.COM , které by se pro různé uživatele lišily. Pár klíčů EC2 je nastaven pomocí --key-name na kubernetes-coreos , který byl vytvořen dříve. Klíč KMS je nastaven na KeyMetadata.Arn řetězec vygenerovaný dříve pomocí aws kms příkaz v --kms-key volba. Vygenerovaný Jenkinsfile je uveden níže:
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]) } }
Vytvoření Jenkinsova potrubí
Na panelu Jenkins Dashboard klikněte na vytvořit nové úlohy k vytvoření Jenkinsova potrubí, jak je znázorněno na obrázku 1.
Obrázek 1: Vyberte „vytvořit nové úlohy“ pro vytvoření Jenkinsovy úlohy
V uživatelském rozhraní zadejte název kanálu (install-kubernetes ), například a vyberte Potrubí , jak je znázorněno na obrázku 2. Klikněte na OK.
Obrázek 2: Výběr Pipeline
Spustí se průvodce konfigurací potrubí, jak je znázorněno na obrázku 3.
Obrázek 3: Průvodce konfigurací potrubí Jenkins
Vyberte Potrubí tab. V Definici vyberte Skript kanálu možnost, jak je znázorněno na obrázku 4.
Obrázek 4: Karta potrubí
Zkopírujte a vložte Jenkinsfile uvedený výše. Klikněte na Uložit , jak je znázorněno na obrázku 5.
Obrázek 5: Konfigurace Pipeline Script
Vytvoří se nový Jenkins Pipeline (viz obrázek 6).
Obrázek 6: Jenkins Pipeline vytvořen
Zpočátku kanál neběží a Stav by nemělo vypisovat žádné sestavení, které bylo spuštěno nebo spuštěno, jak je znázorněno na obrázku 7.
Obrázek 7: Stav Jenkinsova potrubí
Závěr
V tomto článku jsme nakonfigurovali Jenkinsfile a použili Jenkinsfile k vytvoření Jenkinsova potrubí. Ve třetím a závěrečném článku o automatizaci instalace Kubernetes pomocí Jenkins spustíme kanál Jenkins vytvořený v tomto článku pro instalaci Kubernetes. Následně otestujeme nainstalovaný cluster Kubernetes.