Von der Einrichtung bis zum Deployment: Ein praktischer Leitfaden für Automatisierte CI/CD-Pipelines mit Jenkins X und Kubernetes
Die Verwaltung von Anwendungen in einer Kubernetes-Umgebung kann eine komplexe Aufgabe sein, insbesondere wenn es um Paketmanagement und CI/CD geht. In diesem Blogbeitrag werden wir uns mit zwei wichtigen Tools befassen, die speziell für Kubernetes entwickelt wurden, um diese Herausforderungen zu bewältigen: Helm und Jenkins X.
Schritt 1: Helm – Das Kubernetes-Paketmanagement:
Helm ist ein Paketmanager, der speziell für Kubernetes entwickelt wurde und von der Cloud Native Computing Foundation (CNCF) in Zusammenarbeit mit Microsoft, Google, Bitnami und der Helm-Community gepflegt wird. Ähnlich wie bei Linux-Paketmanagern wie APT oder YUM versteckt Helm die Komplexität der Installation von Anwendungen und deren Abhängigkeiten hinter den Kulissen. Dies erleichtert die gemeinsame Nutzung und Verwaltung von Anwendungen erheblich. Helm verwendet sogenannte „Charts“, um Anwendungen in vordefinierte Ressourcen zu verpacken, die mit einfachen Befehlen verwaltet werden können.
# Beispiel eines Helm Charts für eine einfache Anwendung
apiVersion: v1
appVersion: „1.0“
description: A simple nginx application
name: my-nginx
version: 1.0.0
Schritt 2: Jenkins X – CI/CD für Kubernetes:
Jenkins X ist ein CI/CD-Tool, das speziell für Kubernetes entwickelt wurde und dazu dient, Produktionspipelines und -umgebungen zu automatisieren. Mit Docker-Images, Helm-Charts und dem Jenkins-Pipeline-Engine kann Jenkins X Releases und Versionen automatisch verwalten und Anwendungen zwischen Umgebungen auf GitHub fördern.
pipeline {
agent any
stages {
stage(‚Build‘) {
steps {
// Schritte zum Bauen der Anwendung
}
}
stage(‚Test‘) {
steps {
// Schritte zum Testen der Anwendung
}
}
stage(‚Deploy‘) {
steps {
// Schritte zum Bereitstellen der Anwendung
}
}
}
}
Schritt 3: Praktische Umsetzung:
Um die Funktionalität von Helm und Jenkins X zu demonstrieren, führen wir eine praktische Übung durch. Zuerst richten wir eine lokale Kubernetes-Clusterumgebung mit Minikube ein. Anschließend installieren wir Helm auf dem Cluster und erstellen ein Beispiel-Chart, um eine Anwendung bereitzustellen. Danach setzen wir Jenkins X ein, um eine CI/CD-Pipeline einzurichten und unsere Anwendung zu automatisieren.
# Beispielbefehle zum Einrichten einer Minikube-Umgebung und Installation von Helm
minikube start
helm install myapp ./mychart
Schritt 4: Jenkins X einrichten
Installieren Sie zunächst das jx CLI-Tool und konfigurieren Sie Docker, um unsichere Register für den lokalen IP-Bereich zu verwenden. Dann erstellen Sie Ihr Minikube Kubernetes-Cluster mit CI/CD-Fähigkeiten:
curl -L https://github.com/jenkins-x/jx/releases/download/v1.3.781/jx-linux-amd64.tar.gz | tar xzv
mv jx /usr/local/bin
echo ‚{ „insecure-registries“ : [„0.0.0.0/0“] }‘ | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
jx create cluster minikube –cpu=5 –default-admin-password=admin –vm-driver=none –memory=13314
Schritt 5: Testanwendung erstellen
Klonen Sie eine Beispielanwendung und importieren Sie sie in Jenkins X:
git clone https://github.com/do-community/rsvpapp.git
cd rsvpapp
rm -r .git/
jx import
Passen Sie die Anwendungskonfiguration an, pushen Sie sie in Ihr GitHub-Repository und überwachen Sie den Pipeline-Status:
sed -i ’s/servicePort: 5000/servicePort: 8080/‘ values.yaml
git add .
git commit -m „Change servicePort to 8080“
git push origin main
jx get build logs
Öffnen Sie Ihre Anwendung im Browser:
minikube service rsvpapp
Schritt 6: Anwendung in die Produktionsumgebung verschieben
Verwenden Sie den Befehl `jx promote`, um die Anwendung in die Produktionsumgebung zu verschieben:
jx promote rsvpapp –version=0.0.2 –env=production
Öffnen Sie die Anwendung in Ihrem Browser, um sicherzustellen, dass sie erfolgreich in die Produktionsumgebung verschoben wurde:
minikube service rsvpapp –namespace=jx-production
Mit diesen 6 Schritten haben Sie erfolgreich eine Jenkins X-Umgebung eingerichtet und eine Testanwendung mit einer Jenkins X-Pipeline in die Produktionsumgebung verschoben – Von der Einrichtung bis zum Deployment: Ein praktischer Leitfaden für Automatisierte CI/CD-Pipelines mit Jenkins X und Kubernetes