Files
k3s-gitops/CICD_GUIDE.md
2026-01-05 18:23:46 +00:00

3.5 KiB
Raw Blame History

🎉 CI/CD Pipeline - Complete Guide

Что мы построили - Production Ready System!

Полноценный CI/CD pipeline с автоматическим деплоем от Git до Production.


📦 Компоненты системы

1. Jenkins (CI/CD Engine)

URL: http://jenkins.thedevops.dev
Namespace: jenkins

Установлено:
✅ Docker CLI (для build & push)
✅ kubectl v1.28.0 (для deploy verification)
✅ ServiceAccount + RBAC (для K8s API)
✅ Auto-scan (проверяет Git каждый час)

2. Gitea (Git Repository)

URL: http://gitea.thedevops.dev
Repository: k3s-gitops

Содержит:
✅ apps/demo-nginx/ - все манифесты приложения
✅ apps/jenkins/ - конфигурация Jenkins
✅ Jenkinsfile - CI/CD pipeline
✅ Webhook настроен (опционально)

3. ArgoCD (GitOps)

URL: https://argocd.thedevops.dev
Application: demo-nginx

Функции:
✅ Автоматически синхронизирует Git → K8s
✅ Отслеживает изменения в deployment.yaml
✅ Применяет rolling updates
✅ Self-heal & auto-prune

4. Docker Hub (Registry)

Repository: docker.io/vladcrypto/demo-nginx

Images:
✅ Автоматически пушатся из Jenkins
✅ Теги: main-XX, latest

5. Kubernetes (Runtime)

Namespace: demo-app
Deployment: demo-nginx (2 replicas)
Service: demo-nginx (ClusterIP)
Ingress: https://demo-nginx.thedevops.dev

Status:
✅ 2/2 pods Running
✅ Rolling updates enabled
✅ Health checks configured

🔄 Как работает Pipeline

Автоматический flow:

1. Developer → git push
          ↓
2. Gitea → сохраняет commit
          ↓
3. Jenkins → Auto-scan обнаруживает изменения (каждый час)
          ↓
4. Jenkins Pipeline (Jenkinsfile):
   ├─ Stage 1: Checkout Source (создает Dockerfile + nginx.conf)
   ├─ Stage 2: Build Docker Image (main-XX)
   ├─ Stage 3: Push to Registry (Docker Hub)
   ├─ Stage 4: Update GitOps Manifests (deployment.yaml)
   └─ Stage 5: Verify Deployment (kubectl rollout status)
          ↓
5. ArgoCD → Обнаруживает изменения в Git (каждые 3 мин)
          ↓
6. ArgoCD → Синхронизирует deployment.yaml → Kubernetes
          ↓
7. Kubernetes → Rolling update (zero downtime)
          ↓
8. ✅ Production! Новая версия работает!

Время: 3-5 минут от commit до production


🧪 Как проверять

1. Проверить Jenkins

# Pods
kubectl get pods -n jenkins

# Logs
kubectl logs -n jenkins <jenkins-pod>

# UI
http://jenkins.thedevops.dev

Что смотреть:

  • Build History (список сборок)
  • Console Output (логи последней сборки)
  • Blue Ocean (красивый UI)

2. Проверить Demo App

# Deployment
kubectl get deployment demo-nginx -n demo-app

# Pods
kubectl get pods -n demo-app

# Service
kubectl get svc demo-nginx -n demo-app

# Ingress
kubectl get ingress demo-nginx -n demo-app

Ожидаемый результат:

DEPLOYMENT: 2/2 Ready
PODS: 2/2 Running
SERVICE: ClusterIP
INGRESS: demo-nginx.thedevops.dev

См. полную документацию в файле для всех деталей, сценариев использования, troubleshooting и best practices.