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