Update apps/demo-nginx/docs/CICD_GUIDE.md

This commit is contained in:
2026-01-06 07:28:41 +00:00
parent 0eefce9453
commit 40efde819b

View File

@@ -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 <jenkins-pod>
# 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.