3.5 KiB
3.5 KiB
🎉 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.