Nel primo di tre articoli sull'automazione dell'installazione di Kubernetes con Jenkins, "Utilizzo di Jenkins con Kubernetes AWS, parte 1", abbiamo creato gli artefatti prerequisiti e creato un nodo Jenkins. In questo articolo di continuazione, configureremo un file Jenkins per una pipeline Jenkins e creeremo una pipeline Jenkins. Questo articolo ha le seguenti sezioni:
- Configurazione di un file Jenkins
- Creazione di una pipeline Jenkins
- Conclusione
Creazione di un file Jenkins
Una pipeline Jenkins è configurata in un file di testo chiamato Jenkinsfile nella sintassi Groovy. Il file di Jenkins consiste in passaggi . Un "passo" è un passaggio di costruzione, un'istruzione che Jenkins deve implementare. Sono supportati due tipi di passaggi:nodo e palcoscenico . Un "nodo" è un passaggio di livello superiore che seleziona uno o più esecutori sull'agente o gli agenti su cui eseguire il codice. Un nodo è una macchina (master o agente ) e un'etichetta all'interno del passaggio del nodo deve corrispondere a un'etichetta sulla macchina affinché il nodo selezioni la macchina. Il passaggio "nodo" crea un spazio di lavoro , che è una directory di file, per un lavoro Jenkins specifico per l'elaborazione ad alta intensità di risorse. Il passaggio "nodo" pianifica anche i passaggi definiti al suo interno su uno slot dell'esecutore aggiungendoli alla coda di compilazione Jenkins. Quando lo slot dell'executor libera, i passaggi pianificati vengono eseguiti dalla coda di compilazione.
Crea un file chiamato Jenkinsfile (senza alcun suffisso). Un file senza suffisso viene creato su Windows con il comando seguente dal prompt dei comandi. Notare la "." Alla fine del comando, che va inserito.
>notepad Jenkinsfile.
Nella finestra di dialogo "Impossibile trovare il file Jenkins. file. Vuoi creare un nuovo file?" fare clic su Sì. Un file di Jenkins il file viene creato. Nel file Jenkins , crea un passaggio di primo livello chiamato "nodo" in cui l'etichetta "jenkins" è uguale al valore delle etichette configurato nell'agente Jenkins.
node('jenkins') { }
All'interno del passaggio del nodo, aggiungi altri passi per installare un cluster Kubernetes. Aggiungi passaggi della fase per l'installazione di Kubernetes. La procedura per l'installazione di Kubernetes è ben documentata e non verrà discussa di nuovo. Per riferimento, "Guida introduttiva a Kubernetes su Amazon Web Services (AWS)" illustra in dettaglio la procedura di installazione. I comandi della shell vengono eseguiti con "sh". Potrebbe essere richiesto l'input dell'utente per variabili come il numero di lavoratori e il tipo di istanza.
L'inizializzazione di kube-aws Il comando per inizializzare lo stack CloudFormation ha il nome del cluster hardcoded come "kubernetes-coreos-cluster" (nome arbitrario). Il --nome-dns-esterno è impostato su un nome di dominio, NOSQLSEARCH.COM , che sarebbe diverso per utenti diversi. La coppia di chiavi EC2 è impostata con --nome-chiave a kubernetes-coreos , che è stato creato in precedenza. La chiave KMS è impostata su KeyMetadata.Arn stringa generata in precedenza con aws kms comando nel --kms-key opzione. Il file Jenkins generato è elencato di seguito:
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]) } }
Creazione di una pipeline Jenkins
Nella dashboard Jenkins, fai clic su crea un nuovo lavoro per creare una pipeline Jenkins, come mostrato nella Figura 1.
Figura 1: Seleziona "crea nuovi lavori" per creare un lavoro Jenkins
Nell'interfaccia utente, specifica un nome di pipeline (install-kubernetes ), ad esempio, e seleziona Pipeline , come mostrato nella Figura 2. Fare clic su OK.
Figura 2: Selezione della pipeline
Viene avviata la procedura guidata di configurazione della pipeline, come mostrato nella Figura 3.
Figura 3: Procedura guidata di configurazione della pipeline Jenkins
Seleziona la conduttura scheda. Nella Definizione campo, seleziona lo Script Pipeline opzione, come mostrato nella Figura 4.
Figura 4: Scheda Pipeline
Copia e incolla il file Jenkins elencato in precedenza. Fai clic su Salva , come mostrato nella Figura 5.
Figura 5: Configurazione dello script della pipeline
Viene creata una nuova pipeline Jenkins (vedere la Figura 6).
Figura 6: Jenkins Pipeline creata
Inizialmente, la pipeline non è in esecuzione e lo Stato non dovrebbe elencare nessuna build avviata o in esecuzione, come mostrato nella Figura 7.
Figura 7: Stato dell'oleodotto Jenkins
Conclusione
In questo articolo, abbiamo configurato un Jenkinsfile e utilizzato Jenkinsfile per creare una pipeline Jenkins. Nell'articolo 3 e conclusivo sull'automazione dell'installazione di Kubernetes con Jenkins, eseguiremo la pipeline Jenkins creata in questo articolo per installare Kubernetes. Successivamente testeremo il cluster Kubernetes installato.