Dans le premier des trois articles sur l'automatisation de l'installation de Kubernetes avec Jenkins, « Utilisation de Jenkins avec Kubernetes AWS, partie 1 », nous avons créé les artefacts prérequis et créé un nœud Jenkins. Dans cet article de continuation, nous allons configurer un fichier Jenkins pour un pipeline Jenkins et créer un pipeline Jenkins. Cet article contient les sections suivantes :
- Configuration d'un fichier Jenkins
- Création d'un pipeline Jenkins
- Conclusion
Création d'un fichier Jenkins
Un pipeline Jenkins est configuré dans un fichier texte appelé Jenkinsfile dans la syntaxe Groovy. Le Jenkinsfile consiste en étapes . Une « étape » est une étape de construction, une instruction que Jenkins doit implémenter. Deux types d'étapes sont pris en charge :nœud et étape . Un « nœud » est une étape de niveau supérieur qui sélectionne un ou plusieurs exécuteurs sur un ou plusieurs agents sur lesquels exécuter du code. Un nœud est une machine (maître ou agent ) et une étiquette dans l'étape du nœud doivent correspondre à une étiquette sur la machine pour que le nœud sélectionne la machine. L'étape "nœud" crée un espace de travail , qui est un répertoire de fichiers, pour un travail Jenkins spécifique pour un traitement gourmand en ressources. L'étape "nœud" planifie également les étapes qui y sont définies sur un emplacement d'exécuteur en les ajoutant à la file d'attente de construction Jenkins. Lorsque l'emplacement de l'exécuteur libère les étapes planifiées exécutées à partir de la file d'attente de construction.
Créez un fichier appelé Jenkinsfile (sans aucun suffixe). Un fichier sans suffixe est créé sous Windows avec la commande suivante à partir de l'invite de commande. Noter la "." À la fin de la commande, qui doit être incluse.
>notepad Jenkinsfile.
Dans la boîte de dialogue "Impossible de trouver le fichier Jenkins. dossier. Voulez-vous créer un nouveau fichier ? » cliquez sur Oui. Un fichier Jenkins fichier est créé. Dans le fichier Jenkins , créez une étape de niveau supérieur appelée "nœud" dans laquelle le libellé "jenkins" est identique à la valeur Labels configurée dans l'agent Jenkins.
node('jenkins') { }
Dans l'étape du nœud, ajoutez d'autres étapes pour installer un cluster Kubernetes. Ajouter des étapes d'étape pour l'installation de Kubernetes. La procédure d'installation de Kubernetes est bien documentée et ne sera plus discutée. Pour référence, « Premiers pas avec Kubernetes sur Amazon Web Services (AWS) » décrit en détail la procédure d'installation. Les commandes Shell sont exécutées avec "sh". L'entrée de l'utilisateur pour des variables telles que le nombre de travailleurs et le type d'instance peut être demandée.
L'initialisation de kube-aws La commande pour initialiser la pile CloudFormation a le nom de cluster codé en dur comme « kubernetes-coreos-cluster » (nom arbitraire). Le --external-dns-name est défini sur un nom de domaine, NOSQLSEARCH.COM , ce qui serait différent pour différents utilisateurs. La paire de clés EC2 est définie avec --key-name à kubernetes-coreos , qui a été créé plus tôt. La clé KMS est définie sur KeyMetadata.Arn chaîne générée précédemment avec aws kms commande dans la --kms-key option. Le fichier Jenkins généré est répertorié ci-dessous :
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]) } }
Création d'un pipeline Jenkins
Dans le tableau de bord Jenkins, cliquez sur créer une nouvelle tâche pour créer un pipeline Jenkins, comme illustré à la figure 1.
Figure 1 : Sélectionnez "créer de nouvelles tâches" pour créer une tâche Jenkins
Dans l'interface utilisateur, spécifiez un nom de pipeline (install-kubernetes ), par exemple, et sélectionnez Pipeline , comme illustré à la figure 2. Cliquez sur OK.
Figure 2 : Sélection du pipeline
L'assistant de configuration du pipeline démarre, comme illustré à la figure 3.
Figure 3 : Assistant de configuration du pipeline Jenkins
Sélectionnez le Pipeline languette. Dans la Définition champ, sélectionnez le script de pipeline option, comme illustré à la figure 4.
Figure 4 : Onglet Pipeline
Copiez et collez le fichier Jenkins répertorié précédemment. Cliquez sur Enregistrer , comme illustré à la figure 5.
Figure 5 : Configuration du script de pipeline
Un nouveau pipeline Jenkins est créé (voir Figure 6).
Figure 6 : Pipeline Jenkins créé
Initialement, le pipeline n'est pas en cours d'exécution et le Statut ne doit pas répertorier les builds en cours de démarrage ou d'exécution, comme illustré à la figure 7.
Figure 7 : État du pipeline Jenkins
Conclusion
Dans cet article, nous avons configuré un fichier Jenkins et utilisé le fichier Jenkins pour créer un pipeline Jenkins. Dans le 3 et dernier article sur l'automatisation de l'installation de Kubernetes avec Jenkins, nous exécuterons le pipeline Jenkins créé dans cet article pour installer Kubernetes. Par la suite, nous testerons le cluster Kubernetes installé.