# 🔐 Настройка GitHub Secrets для Trader Agent
## 📋 Обзор
GitHub Secrets используются для безопасного хранения чувствительных данных (API ключи, токены) и автоматической доставки их в Kubernetes при деплое.
---
## 🔑 Необходимые секреты
### 1. QWEN_API_KEY
**Описание**: API ключ для Alibaba Cloud Qwen
**Значение**: `sk-6f5319fb244f4f9faa1595825cf87a05`
**Использование**: Используется автономным агентом для AI анализа рынка
**Как добавить**:
1. Перейдите в репозиторий → Settings → Secrets and variables → Actions
2. Нажмите "New repository secret"
3. Name: `QWEN_API_KEY`
4. Secret: `sk-6f5319fb244f4f9faa1595825cf87a05`
5. Нажмите "Add secret"
---
### 2. BYBIT_API_KEY
**Описание**: Публичный API ключ для Bybit
**Значение**: Ваш Bybit API ключ
**Использование**: Получение рыночных данных через Bybit API
**Как получить**:
1. Войдите в Bybit
2. Перейдите в API Management
3. Создайте новый API ключ (рекомендуется read-only)
4. Скопируйте API Key
**Как добавить**:
1. Settings → Secrets and variables → Actions
2. New repository secret
3. Name: `BYBIT_API_KEY`
4. Secret: Ваш Bybit API ключ
5. Add secret
---
### 3. BYBIT_API_SECRET
**Описание**: Секретный ключ для Bybit API
**Значение**: Ваш Bybit API Secret
**Использование**: Аутентификация при запросах к Bybit API
**Как получить**:
1. В том же месте где получили API Key
2. Скопируйте API Secret (показывается только один раз!)
**Как добавить**:
1. Settings → Secrets and variables → Actions
2. New repository secret
3. Name: `BYBIT_API_SECRET`
4. Secret: Ваш Bybit API Secret
5. Add secret
---
### 4. TELEGRAM_BOT_TOKEN
**Описание**: Токен Telegram бота для публикации сигналов
**Значение**: `8003689195:AAGxQsopKvlLS34H2TZ0S1a0K7s4yV4iOBY`
**Использование**: Отправка сообщений в Telegram каналы
**Как добавить**:
1. Settings → Secrets and variables → Actions
2. New repository secret
3. Name: `TELEGRAM_BOT_TOKEN`
4. Secret: `8003689195:AAGxQsopKvlLS34H2TZ0S1a0K7s4yV4iOBY`
5. Add secret
---
### 5. TELEGRAM_CHAT_IDS
**Описание**: Chat ID каналов для публикации (через запятую)
**Значение**: `-1003382613825,-1003484839912`
**Использование**: Определяет в какие каналы отправлять сигналы
**Текущие каналы**:
- DIAMOND HEADZH: `-1003382613825`
- Hypov Hedge Fund (AI Signals): `-1003484839912`
**Как добавить**:
1. Settings → Secrets and variables → Actions
2. New repository secret
3. Name: `TELEGRAM_CHAT_IDS`
4. Secret: `-1003382613825,-1003484839912`
5. Add secret
---
### 6. GITHUB_TOKEN
**Описание**: GitHub Personal Access Token для push в Container Registry
**Значение**: Автоматически (не нужно добавлять вручную)
**Использование**: GitHub Actions использует его автоматически
**Примечание**: Этот токен создаётся автоматически GitHub Actions и не требует ручной настройки.
---
### 7. KUBECONFIG (опционально, для автоматического деплоя)
**Описание**: Конфигурация Kubernetes кластера (base64 encoded)
**Использование**: Для автоматического деплоя через GitHub Actions
**Как получить**:
```bash
# Экспортировать kubeconfig в base64
cat ~/.kube/config | base64 -w 0
```
**Как добавить**:
1. Settings → Secrets and variables → Actions
2. New repository secret
3. Name: `KUBECONFIG`
4. Secret: Ваш base64 encoded kubeconfig
5. Add secret
---
## ✅ Проверка секретов
### Через GitHub CLI:
```bash
# Установить GitHub CLI если не установлен
# brew install gh # macOS
# или скачать с https://cli.github.com/
# Авторизация
gh auth login
# Проверить список секретов
gh secret list
```
### Через веб-интерфейс:
1. Перейдите в репозиторий → Settings → Secrets and variables → Actions
2. Проверьте что все секреты присутствуют
---
## 🔄 Обновление секретов
### Обновить существующий секрет:
1. Settings → Secrets and variables → Actions
2. Найдите нужный секрет
3. Нажмите "Update"
4. Введите новое значение
5. Сохраните
### Через GitHub CLI:
```bash
# Обновить секрет
gh secret set QWEN_API_KEY --body "новое_значение"
# Удалить секрет
gh secret remove QWEN_API_KEY
```
---
## 🚀 Использование в GitHub Actions
Секреты автоматически доступны в GitHub Actions workflow через `${{ secrets.SECRET_NAME }}`:
```yaml
- name: Create Secrets
run: |
kubectl create secret generic trader-agent-secrets \
--from-literal=QWEN_API_KEY="${{ secrets.QWEN_API_KEY }}" \
--from-literal=BYBIT_API_KEY="${{ secrets.BYBIT_API_KEY }}" \
-n trader-agent
```
---
## 🔐 Безопасность
### ✅ Лучшие практики:
1. **Никогда не коммитьте секреты в код**
- Используйте `.gitignore` для файлов с секретами
- Проверяйте перед коммитом: `git diff`
2. **Используйте минимальные права**
- Bybit API ключ должен быть read-only
- Telegram бот должен иметь только права на отправку сообщений
3. **Регулярно ротируйте секреты**
- Обновляйте API ключи раз в 3-6 месяцев
- Немедленно обновляйте при подозрении на компрометацию
4. **Ограничьте доступ к секретам**
- Только необходимые люди должны иметь доступ к репозиторию
- Используйте GitHub Teams для управления доступом
5. **Мониторинг использования**
- Проверяйте логи GitHub Actions на утечки
- Мониторьте использование API ключей
---
## 📝 Checklist настройки
- [ ] QWEN_API_KEY добавлен
- [ ] BYBIT_API_KEY добавлен
- [ ] BYBIT_API_SECRET добавлен
- [ ] TELEGRAM_BOT_TOKEN добавлен
- [ ] TELEGRAM_CHAT_IDS добавлен
- [ ] KUBECONFIG добавлен (если нужен автоматический деплой)
- [ ] Все секреты проверены через `gh secret list`
- [ ] Тестовый деплой выполнен успешно
---
## 🆘 Устранение проблем
### Проблема: Секрет не виден в workflow
**Решение**:
1. Проверьте что секрет добавлен в правильный репозиторий
2. Проверьте имя секрета (чувствительно к регистру)
3. Убедитесь что workflow имеет доступ к секретам
### Проблема: Секрет не передаётся в Kubernetes
**Решение**:
1. Проверьте синтаксис в `.github/workflows/deploy.yml`
2. Проверьте что секрет существует: `gh secret list`
3. Проверьте логи GitHub Actions на ошибки
### Проблема: "Secret not found"
**Решение**:
1. Убедитесь что секрет добавлен в Settings → Secrets
2. Проверьте правильность имени в workflow файле
3. Убедитесь что используете `secrets.SECRET_NAME` синтаксис
---
## 📞 Поддержка
Если возникли проблемы:
1. Проверьте документацию GitHub: https://docs.github.com/en/actions/security-guides/encrypted-secrets
2. Проверьте логи GitHub Actions
3. Убедитесь что все секреты правильно настроены
---
**Версия**: 1.0
**Дата**: 18 января 2025