Cloud Native 9 min read

Mastering Kubernetes CI/CD: From Jenkins Pipelines to GitOps Automation

This guide walks through building a Kubernetes‑centric CI/CD system—covering high‑frequency releases, multi‑environment isolation, automated rollback, Jenkins pipeline examples, Harbor image registry setup, Argo CD GitOps workflows, blue‑green and canary deployments, configuration security, observability, and practical rollout recommendations for teams at any maturity level.

Ray's Galactic Tech
Ray's Galactic Tech
Ray's Galactic Tech
Mastering Kubernetes CI/CD: From Jenkins Pipelines to GitOps Automation

Why Adopt CI/CD in a Cloud‑Native Era

Modern cloud‑native applications demand minute‑level delivery instead of monthly releases. Manual packaging and kubectl apply cannot satisfy high‑frequency publishing, multi‑environment isolation, traceable rollbacks, and safe automation.

Overall Architecture Overview

The system centers on Kubernetes and integrates the following components:

GitLab/GitHub : source code hosting and version control (cloud‑hosted or self‑managed).

Jenkins / GitLab CI : CI builds and Docker image creation, deployed as independent Pods.

Harbor / DockerHub : private image registry, preferably internal.

Argo CD / FluxCD : GitOps continuous deployment inside the cluster.

Helm / Kustomize : configuration templating and environment management, used together with CD.

Kubernetes : final runtime platform (master + node pool).

Architecture diagram
Architecture diagram

CI Stage – Jenkins Pipeline Example

pipeline {
  agent any
  environment {
    REGISTRY = "harbor.mycorp.local"
    IMAGE_NAME = "myapp"
    VERSION = "${env.BUILD_NUMBER}"
  }
  stages {
    stage('Checkout') {
      steps { git branch: 'main', url: 'https://gitlab.mycorp.com/myapp.git' }
    }
    stage('Build & Test') {
      steps { sh 'mvn clean package -DskipTests=false' }
    }
    stage('Build Docker Image') {
      steps {
        sh '''
          docker build -t $REGISTRY/$IMAGE_NAME:$VERSION .
          docker push $REGISTRY/$IMAGE_NAME:$VERSION
        '''
      }
    }
    stage('Update Helm Chart') {
      steps {
        sh '''
          sed -i "s/tag:.*/tag: $VERSION/" helm/values.yaml
          git add .
          git commit -m "update image tag to $VERSION"
          git push origin main
        '''
      }
    }
  }
}

Harbor Image Registry Recommendations

Enable HTTPS access and LDAP authentication.

Turn on Content Trust to prevent tampering.

Configure a Retention Policy for automatic old‑image cleanup.

Integrate with Jenkins credential store.

CD Stage – Argo CD GitOps Workflow

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
spec:
  project: default
  source:
    repoURL: https://gitlab.mycorp.com/devops/helm-charts.git
    targetRevision: main
    path: myapp
  destination:
    server: https://kubernetes.default.svc
    namespace: myapp-prod
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Helm Chart Directory Structure

myapp/
├── Chart.yaml
├── templates/
│   ├── deployment.yaml
│   ├── service.yaml
│   └── ingress.yaml
└── values.yaml

Multi‑Environment Branch Strategy

Development : branch develop, namespace myapp-dev, deployment triggered manually from Jenkins.

Testing : branch release, namespace myapp-test, Argo CD semi‑automatic sync.

Production : branch main, namespace myapp-prod, Argo CD fully automatic.

Blue‑Green and Canary Deployments

Blue‑Green Service Example

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  selector:
    version: blue   # switch to "green" when deploying new version

Canary Rollout with Argo Rollouts

apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
  strategy:
    canary:
      steps:
        - setWeight: 20
        - pause: {duration: 1m}
        - setWeight: 50
        - pause: {duration: 1m}

Configuration Management & Security Recommendations

Store sensitive data in Kubernetes Secret + SealedSecret .

Separate DEV/TEST/PROD values via values.yaml.

Enable Harbor CVE scanning for image security.

Use dedicated ServiceAccounts for Jenkins and Argo CD (RBAC isolation).

Activate Kubernetes audit logs and Argo CD event logging.

Observability & Rollback Mechanisms

Log aggregation : EFK stack (Elasticsearch, Fluentd, Kibana).

Monitoring & alerting : Prometheus, Grafana, Alertmanager.

Distributed tracing : Jaeger.

Rollback : Jenkins can redeploy the previous build; Argo CD rollback via argocd app rollback <app-name> <revision>.

Practical Deployment Checklist

Source control : GitLab CE with webhook auto‑trigger.

CI build : Jenkins using dynamic Kubernetes agents.

Image registry : Harbor with CVE scanning.

CD deployment : Argo CD in GitOps mode, auto‑sync.

Configuration management : Helm with environment‑layered values.yaml.

Traffic control : Istio or Argo Rollouts for canary/gray releases.

Logging & monitoring : EFK + Prometheus for container‑level observability.

From CI/CD to Full GitOps Integration

All deployments are triggered by Git commits.

Cluster state automatically aligns with repository configuration.

Full traceability, rollback, and auditability.

Combined Jenkins + Argo CD provides a visual, declarative, zero‑manual‑intervention pipeline.

Conclusion & Recommendations

Early‑stage teams : start with Jenkins + Helm + Harbor.

Mid‑stage teams : adopt GitLab CI + Argo CD + Kustomize.

Mature teams : fully GitOps‑driven stack (Argo CD + Argo Rollouts + Helm).

Security : enforce least‑privilege, image signing, and CVE scanning.

Implementation tip : begin with a single application, then template and scale across services.

“Let deployments be as simple as writing code.” – the ultimate goal of modern DevOps.
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

CI/CDdevopsGitOpsJenkinsArgo CD
Ray's Galactic Tech
Written by

Ray's Galactic Tech

Practice together, never alone. We cover programming languages, development tools, learning methods, and pitfall notes. We simplify complex topics, guiding you from beginner to advanced. Weekly practical content—let's grow together!

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.