Upload files to "loki-ingress-argocd-setup"
This commit is contained in:
222
loki-ingress-argocd-setup/INDEX.md
Normal file
222
loki-ingress-argocd-setup/INDEX.md
Normal file
@@ -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! 🚀📊**
|
||||||
40
loki-ingress-argocd-setup/ingress-loki.yaml
Normal file
40
loki-ingress-argocd-setup/ingress-loki.yaml
Normal file
@@ -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
|
||||||
67
loki-ingress-argocd-setup/loki-ingress.yaml
Normal file
67
loki-ingress-argocd-setup/loki-ingress.yaml
Normal file
@@ -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
|
||||||
19
loki-ingress-argocd-setup/loki-nodeport.yaml
Normal file
19
loki-ingress-argocd-setup/loki-nodeport.yaml
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user