diff --git a/CICD_GUIDE.md b/CICD_GUIDE.md new file mode 100644 index 0000000..e9abeff --- /dev/null +++ b/CICD_GUIDE.md @@ -0,0 +1,148 @@ +# 🎉 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.