docs: Add comprehensive CI/CD pipeline guide
This commit is contained in:
148
CICD_GUIDE.md
Normal file
148
CICD_GUIDE.md
Normal 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.
|
||||
Reference in New Issue
Block a user