From ba2e8b7a6f8ad2ee260f48d5b8b3cf306a0eef2b Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 6 Jan 2026 07:37:18 +0000 Subject: [PATCH] Upload files to "loki-ingress-argocd-setup" --- .../deploy-loki-ingress.sh | 151 ++++++++++++++++++ .../grafana-datasource-loki.yaml | 45 ++++++ .../grafana-loki-datasource.yaml | 46 ++++++ 3 files changed, 242 insertions(+) create mode 100644 loki-ingress-argocd-setup/deploy-loki-ingress.sh create mode 100644 loki-ingress-argocd-setup/grafana-datasource-loki.yaml create mode 100644 loki-ingress-argocd-setup/grafana-loki-datasource.yaml diff --git a/loki-ingress-argocd-setup/deploy-loki-ingress.sh b/loki-ingress-argocd-setup/deploy-loki-ingress.sh new file mode 100644 index 0000000..27535fa --- /dev/null +++ b/loki-ingress-argocd-setup/deploy-loki-ingress.sh @@ -0,0 +1,151 @@ +#!/bin/bash +# +# Quick Start Script: Добавление Loki Ingress в ArgoCD GitOps +# +# Использование: +# ./deploy-loki-ingress.sh +# + +set -e + +# Цвета для вывода +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}" +echo -e "${BLUE} Loki Ingress Deployment для ArgoCD GitOps${NC}" +echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}" +echo "" + +# Проверяем что находимся в правильной директории +if [ ! -d "apps/loki" ]; then + echo -e "${RED}❌ Ошибка: Директория apps/loki не найдена${NC}" + echo -e "${YELLOW}Убедись что ты находишься в корне git репозитория k3s-gitops${NC}" + exit 1 +fi + +echo -e "${GREEN}✓ Найдена директория apps/loki${NC}" + +# Копируем файлы +echo "" +echo -e "${BLUE}Копирование файлов...${NC}" + +FILES=( + "secret-basic-auth.yaml" + "middleware-auth.yaml" + "ingress-loki.yaml" +) + +for file in "${FILES[@]}"; do + if [ -f "$file" ]; then + cp "$file" apps/loki/ + echo -e "${GREEN}✓ Скопирован: $file${NC}" + else + echo -e "${RED}❌ Файл не найден: $file${NC}" + exit 1 + fi +done + +# Git операции +echo "" +echo -e "${BLUE}Git операции...${NC}" + +git add apps/loki/secret-basic-auth.yaml +git add apps/loki/middleware-auth.yaml +git add apps/loki/ingress-loki.yaml + +echo -e "${GREEN}✓ Файлы добавлены в git${NC}" + +# Проверяем изменения +echo "" +echo -e "${YELLOW}Изменения для коммита:${NC}" +git status --short + +# Спрашиваем подтверждение +echo "" +read -p "Продолжить с коммитом и push? (y/n) " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo -e "${YELLOW}Отменено пользователем${NC}" + exit 0 +fi + +# Commit +git commit -m "feat(loki): Add Ingress with HTTPS and Basic Auth for loki.thedevops.dev + +- Add Basic Auth Secret with default credentials +- Add Traefik Middleware for authentication +- Add Ingress with Let's Encrypt TLS +- Enable access via https://loki.thedevops.dev" + +echo -e "${GREEN}✓ Commit создан${NC}" + +# Push +git push origin main + +echo -e "${GREEN}✓ Push выполнен${NC}" + +# Проверка ArgoCD +echo "" +echo -e "${BLUE}Проверка ArgoCD...${NC}" + +if command -v argocd &> /dev/null; then + echo -e "${YELLOW}Синхронизация ArgoCD приложения...${NC}" + argocd app sync loki + echo -e "${GREEN}✓ ArgoCD sync запущен${NC}" +else + echo -e "${YELLOW}⚠ argocd CLI не установлен, пропускаем sync${NC}" + echo -e "${YELLOW}ArgoCD автоматически синхронизирует изменения в течение 3 минут${NC}" +fi + +# Проверка ресурсов +echo "" +echo -e "${BLUE}Проверка Kubernetes ресурсов...${NC}" +sleep 5 + +echo "" +echo -e "${YELLOW}Ingress:${NC}" +kubectl get ingress -n loki + +echo "" +echo -e "${YELLOW}Secret:${NC}" +kubectl get secret loki-basic-auth -n loki 2>/dev/null || echo "Secret еще не создан" + +echo "" +echo -e "${YELLOW}Middleware:${NC}" +kubectl get middleware -n loki 2>/dev/null || echo "Middleware еще не создан" + +echo "" +echo -e "${YELLOW}Certificate:${NC}" +kubectl get certificate -n loki 2>/dev/null || echo "Certificate еще не создан" + +# Финальные инструкции +echo "" +echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}" +echo -e "${GREEN}✅ Deployment завершен!${NC}" +echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}" +echo "" +echo -e "${YELLOW}Следующие шаги:${NC}" +echo "" +echo "1. Настрой DNS для loki.thedevops.dev:" +echo " - Добавь A-record: loki.thedevops.dev -> 5.182.17.194" +echo "" +echo "2. Подожди ~2-3 минуты пока:" +echo " - ArgoCD синхронизирует изменения" +echo " - cert-manager создаст SSL сертификат" +echo "" +echo "3. Проверь доступность:" +echo " curl -u admin:lokipass123 https://loki.thedevops.dev/ready" +echo "" +echo "4. Открой в браузере:" +echo " https://loki.thedevops.dev" +echo " Username: admin" +echo " Password: lokipass123" +echo "" +echo -e "${YELLOW}Для отслеживания статуса:${NC}" +echo " kubectl get ingress,certificate -n loki -w" +echo "" +echo -e "${GREEN}🎉 Готово!${NC}" diff --git a/loki-ingress-argocd-setup/grafana-datasource-loki.yaml b/loki-ingress-argocd-setup/grafana-datasource-loki.yaml new file mode 100644 index 0000000..4d81e81 --- /dev/null +++ b/loki-ingress-argocd-setup/grafana-datasource-loki.yaml @@ -0,0 +1,45 @@ +--- +# Grafana ConfigMap для добавления Loki Data Source +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-datasource-loki + namespace: monitoring + labels: + grafana_datasource: "1" +data: + loki.yaml: | + apiVersion: 1 + + datasources: + # Внутренний доступ (из Grafana pod в кластере) - РЕКОМЕНДУЕТСЯ + - name: Loki + type: loki + access: proxy + url: http://loki.loki.svc.cluster.local:3100 + isDefault: false + editable: true + jsonData: + maxLines: 5000 + timeout: 60 + derivedFields: + - datasourceUid: prometheus + matcherRegex: "traceID=(\\w+)" + name: TraceID + url: '$${__value.raw}' + + # Внешний доступ (через домен, требует Basic Auth) + - name: Loki External + type: loki + access: proxy + url: https://loki.thedevops.dev + isDefault: false + editable: true + basicAuth: true + basicAuthUser: admin + secureJsonData: + basicAuthPassword: lokipass123 + jsonData: + maxLines: 5000 + timeout: 60 + tlsSkipVerify: false diff --git a/loki-ingress-argocd-setup/grafana-loki-datasource.yaml b/loki-ingress-argocd-setup/grafana-loki-datasource.yaml new file mode 100644 index 0000000..29794d8 --- /dev/null +++ b/loki-ingress-argocd-setup/grafana-loki-datasource.yaml @@ -0,0 +1,46 @@ +--- +# Grafana ConfigMap для добавления Loki Data Source +apiVersion: v1 +kind: ConfigMap +metadata: + name: grafana-loki-datasource + namespace: monitoring + labels: + grafana_datasource: "1" +data: + loki-datasource.yaml: | + apiVersion: 1 + + datasources: + # Внутренний доступ (из Grafana pod в кластере) + - name: Loki (Internal) + type: loki + access: proxy + url: http://loki.loki.svc.cluster.local:3100 + isDefault: false + editable: true + jsonData: + maxLines: 5000 + timeout: 60 + derivedFields: + # Ссылки на traces (если используешь Tempo) + - datasourceUid: tempo + matcherRegex: "traceID=(\\w+)" + name: TraceID + url: '$${__value.raw}' + + # Внешний доступ (через домен, требует Basic Auth) + - name: Loki (External) + type: loki + access: proxy + url: https://loki.thedevops.dev + isDefault: false + editable: true + basicAuth: true + basicAuthUser: admin + secureJsonData: + basicAuthPassword: lokipass123 + jsonData: + maxLines: 5000 + timeout: 60 + tlsSkipVerify: false