Database
 sql >> Datenbank >  >> RDS >> Database

Verwenden von Jenkins mit Kubernetes AWS, Teil 2

Im ersten von drei Artikeln zur Automatisierung der Kubernetes-Installation mit Jenkins, „Using Jenkins with Kubernetes AWS, Part 1“, haben wir die erforderlichen Artefakte und einen Jenkins-Knoten erstellt. In diesem Fortsetzungsartikel konfigurieren wir eine Jenkins-Datei für eine Jenkins-Pipeline und erstellen eine Jenkins-Pipeline. Dieser Artikel hat folgende Abschnitte:

  • Konfigurieren einer Jenkins-Datei
  • Erstellen einer Jenkins-Pipeline
  • Schlussfolgerung

Erstellen einer Jenkins-Datei

Eine Jenkins-Pipeline wird in einer Textdatei namens Jenkinsfile konfiguriert in Groovy-Syntax. Die Jenkins-Datei besteht aus Schritten . Ein „Schritt“ ist ein Build-Schritt, eine Anweisung, die Jenkins implementieren soll. Zwei Arten von Schritten werden unterstützt:Knoten und Bühne . Ein „Knoten“ ist ein Schritt der obersten Ebene, der einen oder mehrere Ausführende auf Agenten auswählt, auf denen Code ausgeführt werden soll. Ein Knoten ist eine Maschine (Master oder Agent ) und ein Label innerhalb des Knotenschritts sollte mit einem Label auf dem Computer übereinstimmen, damit der Knoten den Computer auswählen kann. Der Schritt „Knoten“ erstellt einen Arbeitsbereich , bei dem es sich um ein Dateiverzeichnis handelt, für einen bestimmten Jenkins-Job für ressourcenintensive Verarbeitung. Der „Knoten“-Schritt plant auch die darin definierten Schritte auf einem Executor-Slot, indem er sie der Jenkins-Build-Warteschlange hinzufügt. Wenn der Executor-Slot frei wird, werden die geplanten Schritte aus der Build-Warteschlange ausgeführt.

Erstellen Sie eine Datei namens Jenkinsfile (ohne Suffix). Eine Datei ohne Suffix wird unter Windows mit dem folgenden Befehl an der Eingabeaufforderung erstellt. Beachten Sie das "." Am Ende des Befehls, der eingefügt werden soll.

>notepad Jenkinsfile.

Im Dialog „Cannot find the Jenkinsfile. Datei. Möchten Sie eine neue Datei erstellen?“ klicken Sie auf Ja. Ein Jenkinsfile Datei wird erstellt. In der Jenkins-Datei , erstellen Sie einen Schritt der obersten Ebene mit dem Namen „node“, in dem das Label „jenkins“ mit dem im Jenkins-Agent konfigurierten Labels-Wert identisch ist.

node('jenkins') {
}

Fügen Sie innerhalb des Knotenschritts weitere Schritte hinzu um einen Kubernetes-Cluster zu installieren. Fügen Sie Stufenschritte hinzu für die Installation von Kubernetes. Das Verfahren zur Installation von Kubernetes ist gut dokumentiert und wird nicht erneut besprochen. Als Referenz wird in „Erste Schritte mit Kubernetes auf Amazon Web Services (AWS)“ das Installationsverfahren im Detail erläutert. Shell-Befehle werden mit „sh“ ausgeführt. Benutzereingaben für Variablen wie Anzahl der Worker und Instanztyp können angefordert werden.

Die kube-aws init Befehl zum Initialisieren des CloudFormation-Stacks hat den Clusternamen als „kubernetes-coreos-cluster“ (beliebiger Name) hartcodiert. Der --external-dns-name auf einen Domänennamen gesetzt ist, NOSQLSEARCH.COM , die für verschiedene Benutzer unterschiedlich wäre. Das EC2-Schlüsselpaar wird mit --key-name gesetzt zu kubernetes-coreos , die früher erstellt wurde. Der KMS-Schlüssel wird auf KeyMetadata.Arn gesetzt Zeichenfolge, die zuvor mit aws kms generiert wurde Befehl in der --kms-Taste Möglichkeit. Das generierte Jenkinsfile ist unten aufgeführt:

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])
   }
}

Erstellen einer Jenkins-Pipeline

Klicken Sie im Jenkins-Dashboard auf Neuen Job erstellen um eine Jenkins-Pipeline zu erstellen, wie in Abbildung 1 gezeigt.


Abbildung 1: Wählen Sie „Neue Jobs erstellen“, um einen Jenkins-Job zu erstellen

Geben Sie in der Benutzeroberfläche einen Pipelinenamen an (install-kubernetes ) und wählen Sie beispielsweise Pipeline aus , wie in Abbildung 2 gezeigt. Klicken Sie auf OK.


Abbildung 2: Pipeline auswählen

Der Pipeline-Konfigurationsassistent wird gestartet, wie in Abbildung 3 gezeigt.


Abbildung 3: Jenkins-Pipeline-Konfigurationsassistent

Wählen Sie die Pipeline aus Tab. In der Definition Wählen Sie im Feld Pipeline-Skript aus Option, wie in Abbildung 4 gezeigt.


Abbildung 4: Registerkarte „Pipeline“

Kopieren Sie die zuvor aufgeführte Jenkins-Datei und fügen Sie sie ein. Klicken Sie auf Speichern , wie in Abbildung 5 gezeigt.


Abbildung 5: Konfigurieren des Pipeline-Skripts

Eine neue Jenkins-Pipeline wird erstellt (siehe Abbildung 6).


Abbildung 6: Jenkins-Pipeline erstellt

Anfänglich wird die Pipeline nicht ausgeführt und der Status sollte keinen Build auflisten, der gestartet oder ausgeführt wurde, wie in Abbildung 7 gezeigt.


Abbildung 7: Jenkins-Pipeline-Status

Schlussfolgerung

In diesem Artikel haben wir eine Jenkins-Datei konfiguriert und die Jenkins-Datei verwendet, um eine Jenkins-Pipeline zu erstellen. Im dritten und abschließenden Artikel zur Automatisierung der Kubernetes-Installation mit Jenkins führen wir die in diesem Artikel erstellte Jenkins-Pipeline aus, um Kubernetes zu installieren. Anschließend testen wir den installierten Kubernetes-Cluster.