diff --git a/loki-ingress-argocd-setup/INDEX.md b/loki-ingress-argocd-setup/INDEX.md new file mode 100644 index 0000000..36435ac --- /dev/null +++ b/loki-ingress-argocd-setup/INDEX.md @@ -0,0 +1,222 @@ +# 📚 Loki Ingress для ArgoCD - Полная Документация + +Добро пожаловать в комплект документации для развертывания Loki Ingress через ArgoCD GitOps! + +--- + +## 🎯 Что это? + +Полное решение для открытия Loki снаружи кластера через: +- ✅ HTTPS с Let's Encrypt сертификатами +- ✅ Basic Authentication для защиты +- ✅ Traefik Ingress Controller +- ✅ ArgoCD GitOps автоматизация +- ✅ Интеграция с Grafana + +**Результат:** Доступ к Loki по адресу `https://loki.thedevops.dev` + +--- + +## 📖 Документация + +### Для новичков - начни здесь: + +1. **[README.md](README.md)** - Обзор всех файлов и быстрый старт +2. **[CHEATSHEET.md](CHEATSHEET.md)** - Шпаргалка с командами +3. **[ARCHITECTURE.md](ARCHITECTURE.md)** - Схемы и диаграммы + +### Детальная инструкция: + +4. **[ARGOCD_LOKI_INGRESS_SETUP.md](ARGOCD_LOKI_INGRESS_SETUP.md)** - Полное руководство + - 12 шагов от A до Z + - Troubleshooting + - Интеграция с Grafana + - Best practices + +--- + +## 📦 Файлы для развертывания + +### Для `apps/loki/`: +- `secret-basic-auth.yaml` - Basic Auth credentials +- `middleware-auth.yaml` - Traefik middleware +- `ingress-loki.yaml` - Ingress с HTTPS + +### Для `apps/monitoring/`: +- `grafana-datasource-loki.yaml` - Grafana datasource + +### Автоматизация: +- `deploy-loki-ingress.sh` - Скрипт автоматического развертывания + +--- + +## 🚀 Быстрый старт + +### Автоматический способ (рекомендуется): + +```bash +# 1. Клонируй репозиторий +git clone http://gitea-http.gitea.svc.cluster.local:3000/admin/k3s-gitops.git +cd k3s-gitops + +# 2. Скопируй файлы +cp secret-basic-auth.yaml apps/loki/ +cp middleware-auth.yaml apps/loki/ +cp ingress-loki.yaml apps/loki/ + +# 3. Запусти скрипт +chmod +x deploy-loki-ingress.sh +./deploy-loki-ingress.sh +``` + +### Ручной способ: + +См. [README.md](README.md) или [ARGOCD_LOKI_INGRESS_SETUP.md](ARGOCD_LOKI_INGRESS_SETUP.md) + +--- + +## 📊 Визуализация + +Смотри [ARCHITECTURE.md](ARCHITECTURE.md) для: +- Схемы архитектуры +- Data flow диаграммы +- Access flow +- GitOps flow +- Network topology + +--- + +## ✅ Проверка после установки + +```bash +# 1. Проверь статус +kubectl get ingress,certificate,secret -n loki + +# 2. Тестовый запрос +curl -u admin:lokipass123 https://loki.thedevops.dev/ready + +# 3. Открой в браузере +# https://loki.thedevops.dev +# Username: admin +# Password: lokipass123 +``` + +--- + +## 🔐 Важная информация по безопасности + +**⚠️ ОБЯЗАТЕЛЬНО измени пароль по умолчанию!** + +```bash +# Генерация нового пароля +htpasswd -nb admin your-secure-password + +# Обнови secret-basic-auth.yaml +# Замени строку в stringData.users +``` + +--- + +## 🆘 Нужна помощь? + +1. **Быстрые команды:** [CHEATSHEET.md](CHEATSHEET.md) +2. **Troubleshooting:** [ARGOCD_LOKI_INGRESS_SETUP.md](ARGOCD_LOKI_INGRESS_SETUP.md) → Раздел "Troubleshooting" +3. **Логи:** + ```bash + kubectl logs -n loki loki-0 + kubectl logs -n cert-manager deployment/cert-manager + kubectl get events -n loki --sort-by='.lastTimestamp' + ``` + +--- + +## 📋 Чек-лист развертывания + +- [ ] Клонирован git репозиторий +- [ ] Файлы скопированы в `apps/loki/` +- [ ] Git commit и push выполнены +- [ ] ArgoCD синхронизирован +- [ ] DNS настроен для `loki.thedevops.dev` +- [ ] Ingress получил IP адрес +- [ ] Certificate создан (Ready: True) +- [ ] Доступность проверена через curl +- [ ] Доступность проверена через браузер +- [ ] Пароль по умолчанию изменен +- [ ] Loki добавлен как datasource в Grafana +- [ ] Логи видны в Grafana Explore + +--- + +## 🎓 Дополнительные ресурсы + +### Официальная документация: +- [Grafana Loki](https://grafana.com/docs/loki/latest/) +- [ArgoCD](https://argo-cd.readthedocs.io/) +- [Traefik](https://doc.traefik.io/traefik/) +- [Cert-Manager](https://cert-manager.io/docs/) + +### Твоя инфраструктура: +- ArgoCD: `https://argocd.thedevops.dev` +- Grafana: `https://grafana.thedevops.dev` +- Gitea: `http://gitea-http.gitea.svc.cluster.local:3000` + +--- + +## 📈 Следующие шаги + +После успешного развертывания: + +1. ✅ Интеграция с Grafana +2. 🔲 Настройка alerting rules +3. 🔲 Создание dashboards +4. 🔲 Настройка retention policies +5. 🔲 Добавление Network Policies +6. 🔲 Интеграция с Tempo (tracing) +7. 🔲 Backup configuration + +--- + +## 💡 Полезные команды + +См. [CHEATSHEET.md](CHEATSHEET.md) для полного списка команд. + +**Самые частые:** + +```bash +# Статус +kubectl get all,ingress,certificate -n loki + +# Логи +kubectl logs -n loki loki-0 -f + +# ArgoCD sync +argocd app sync loki + +# Тест доступности +curl -u admin:lokipass123 https://loki.thedevops.dev/ready +``` + +--- + +## 🎉 Итог + +После выполнения всех шагов у тебя будет: + +- ✅ Безопасный HTTPS доступ к Loki +- ✅ Автоматическое управление через ArgoCD +- ✅ Интеграция с Grafana для просмотра логов +- ✅ Production-ready конфигурация +- ✅ Централизованное хранение логов кластера + +**Credentials:** +- URL: `https://loki.thedevops.dev` +- Username: `admin` +- Password: `lokipass123` (измени!) + +--- + +## 📞 Контакты и поддержка + +Если остались вопросы - обращайся! + +**Happy logging! 🚀📊** diff --git a/loki-ingress-argocd-setup/ingress-loki.yaml b/loki-ingress-argocd-setup/ingress-loki.yaml new file mode 100644 index 0000000..a8a36b6 --- /dev/null +++ b/loki-ingress-argocd-setup/ingress-loki.yaml @@ -0,0 +1,40 @@ +--- +# Ingress для Loki с HTTPS и аутентификацией +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: loki + namespace: loki + annotations: + # Использовать Traefik ingress controller + kubernetes.io/ingress.class: traefik + + # Let's Encrypt сертификат + cert-manager.io/cluster-issuer: letsencrypt-http + cert-manager.io/acme-challenge-type: http01 + + # Применить Basic Auth middleware + traefik.ingress.kubernetes.io/router.middlewares: loki-loki-auth@kubernetescrd + + # Entry points (http и https) + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + labels: + app.kubernetes.io/name: loki + argocd.argoproj.io/instance: loki +spec: + ingressClassName: traefik + rules: + - host: loki.thedevops.dev + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: loki + port: + number: 3100 + tls: + - hosts: + - loki.thedevops.dev + secretName: loki-tls diff --git a/loki-ingress-argocd-setup/loki-ingress.yaml b/loki-ingress-argocd-setup/loki-ingress.yaml new file mode 100644 index 0000000..e2fa422 --- /dev/null +++ b/loki-ingress-argocd-setup/loki-ingress.yaml @@ -0,0 +1,67 @@ +--- +# Basic Auth Secret для защиты Loki +apiVersion: v1 +kind: Secret +metadata: + name: loki-basic-auth + namespace: loki +type: Opaque +stringData: + # Username: admin + # Password: lokipass123 + # Сгенерировано с помощью: htpasswd -nb admin lokipass123 + users: | + admin:$apr1$8jGXMp0X$xR7yGcZqz.pPJY4IaGQ0n0 + +--- +# Traefik Middleware для Basic Auth +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: loki-auth + namespace: loki +spec: + basicAuth: + secret: loki-basic-auth + removeHeader: true + +--- +# Ingress для Loki с HTTPS и аутентификацией +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: loki-ingress + namespace: loki + annotations: + # Использовать Traefik ingress controller + kubernetes.io/ingress.class: traefik + + # Let's Encrypt сертификат + cert-manager.io/cluster-issuer: letsencrypt-http + cert-manager.io/acme-challenge-type: http01 + + # Применить Basic Auth middleware + traefik.ingress.kubernetes.io/router.middlewares: loki-loki-auth@kubernetescrd + + # Entry points (http и https) + traefik.ingress.kubernetes.io/router.entrypoints: web,websecure + labels: + app.kubernetes.io/name: loki + argocd.argoproj.io/instance: loki +spec: + ingressClassName: traefik + rules: + - host: loki.thedevops.dev + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: loki + port: + number: 3100 + tls: + - hosts: + - loki.thedevops.dev + secretName: loki-tls diff --git a/loki-ingress-argocd-setup/loki-nodeport.yaml b/loki-ingress-argocd-setup/loki-nodeport.yaml new file mode 100644 index 0000000..c359a94 --- /dev/null +++ b/loki-ingress-argocd-setup/loki-nodeport.yaml @@ -0,0 +1,19 @@ +--- +# NodePort Service для прямого доступа к Loki +apiVersion: v1 +kind: Service +metadata: + name: loki-nodeport + namespace: loki + labels: + app.kubernetes.io/name: loki +spec: + type: NodePort + selector: + app.kubernetes.io/name: loki + ports: + - name: http + port: 3100 + targetPort: http + nodePort: 31000 # Будет доступен на этом порту на всех нодах + protocol: TCP