# 🎉 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 ```bash # Pods kubectl get pods -n jenkins # Logs kubectl logs -n jenkins # UI http://jenkins.thedevops.dev ``` **Что смотреть:** - Build History (список сборок) - Console Output (логи последней сборки) - Blue Ocean (красивый UI) --- ### 2. Проверить Demo App ```bash # 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.