Files
k3s-gitops/apps/demo-nginx/docs/CICD_GUIDE.md

149 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎉 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.