Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

CI/CD-Pipeline für Kubernetes mit Jenkins

14. 06. 2017 2 Min. Lesezeit CORE SYSTEMSdevops
CI/CD-Pipeline für Kubernetes mit Jenkins

Einen Kubernetes-Cluster zu haben, ist die halbe Miete. Die andere Hälfte besteht darin, Code hineinzubekommen – zuverlässig, schnell und automatisch. Wir teilen unsere CI/CD-Pipeline mit Jenkins, die in den letzten Monaten eine dramatische Entwicklung durchlaufen hat.

Von Jenkins Freestyle zu Pipeline-as-Code

Unsere alten Jenkins-Jobs waren Freestyle-Projekte – per Klick konfiguriert in der GUI. Unzuverlässig, nicht reproduzierbar. Jenkins Pipeline hat das geändert: Der gesamte Build-Prozess ist ein Groovy-Skript in einem Jenkinsfile, versioniert direkt im Projekt-Repository.

Jenkins auf Kubernetes

Jenkins selbst läuft im Kubernetes-Cluster. Das Kubernetes-Plugin für Jenkins startet dynamisch Build-Agents als Pods – jeder Build bekommt einen sauberen, isolierten Agent. Keine “verunreinigten” Build-Umgebungen.

Wenn nichts zu bauen ist, läuft nur der Jenkins Master. Keine Kosten für untätige Agents. Bei Spitzenlast skaliert der Cluster automatisch hoch.

Unser Standard-Jenkinsfile

pipeline {
    agent {
        kubernetes {
            yaml |-
              apiVersion: v1
              kind: Pod
              spec:
                containers:
                - name: maven
                  image: maven:3.5-jdk-8
                - name: docker
                  image: docker:17.06
        }
    }
    stages {
        stage('Build') {
            steps { container('maven') { sh 'mvn clean package' } }
        }
        stage('Docker Build') {
            steps {
                container('docker') {
                    sh "docker build -t registry.core.cz/app:${BUILD_NUMBER} ."
                    sh "docker push registry.core.cz/app:${BUILD_NUMBER}"
                }
            }
        }
        stage('Deploy') {
            steps {
                sh "helm upgrade --install app ./chart --set image.tag=${BUILD_NUMBER}"
            }
        }
    }
}

Deployment-Strategie

Für Staging: automatisches Deployment nach jedem erfolgreichen Build. Für Produktion: ein manueller Freigabeschritt in der Jenkins Pipeline. Helm upgrade --install gewährleistet ein Rolling Update ohne Downtime.

Rollback ist einfach: helm rollback release-name revision-number. Helm pflegt eine Revisionshistorie.

Was wir verbessern wollen

  • Canary Deployments – derzeit nur Rolling Updates
  • Automatisierte Smoke-Tests nach dem Deployment
  • Image Vulnerability Scanning in der Pipeline
  • GitOps-Ansatz – Deployment ausgelöst durch Änderungen in Git

CI/CD ist der Schlüssel zu agilem Kubernetes

Kubernetes ohne automatisiertes CI/CD ist wie ein Rennwagen ohne Treibstoff. Jenkins mit Pipeline-as-Code und dem Kubernetes-Plugin ermöglicht es uns, täglich Dutzende von Services mit Zuversicht zu deployen.

ci/cdjenkinskuberneteshelm
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns