meta(tasks): create [books-scheduler-registry-auth-cred] in OpeItcLoc03/admin
This commit is contained in:
@@ -643,3 +643,65 @@ vehicles-loader (stostayer) деплоится в Docker у клиента (lite
|
||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: victor/stostayer.new / 2026-06-17T12:56:53.300Z -->
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [books-scheduler-registry-auth-cred] — ## Проблема (простыми словами)
|
||||
|
||||
Планировщик books (`books-job-scheduler` на books-vds) умеет запускать «docker-таски» — для каждой такой задачи он скачивает (pull) готовый образ-инструмент из реестра `registry.kzntsv.site` и запускает его контейнером. Один из таких инструментов — `books-tool-create-picking-list-pdf` (рендерит PDF листа подбора FBS).
|
||||
|
||||
С 23 мая каждый такой запуск падает на стадии скачивания образа с ошибкой:
|
||||
`pull/create failed: (HTTP 500) ... no basic auth credentials`.
|
||||
|
||||
Причина (разобрана совместно с admin): `registry.kzntsv.site` — это standalone `registry:2` за htpasswd Basic-авторизацией (так с самого bootstrap 20.05, анонимного доступа не было никогда). Раньше образ просто лежал в локальном кэше демона и pull не требовался; ночная чистка `vdsDockerCleanup` 23 мая вычистила кэш — и следующий pull впервые упёрся в всегда-бывшую auth-стену. Код планировщика звал pull **без креда** (анонимно) → реестр отвечал 401 → dockerode оборачивал в 500. Итог: ~80 фейлов, PDF листов подбора не генерятся с 23 мая.
|
||||
|
||||
Approach ратифицирован человеком (вариант A): код планировщика будет слать креды в pull (это делаю я, books, отдельно, под TDD), а реестру нужен отдельный htpasswd-юзер `books-ci` (его ты уже завёл, кред в `pass vds-kzntsv/registry-books-ci`, проверен live: authed HEAD manifests/master → 200).
|
||||
|
||||
## Что нужно сделать (твоя зона — admin)
|
||||
|
||||
Положить кред `books-ci` в config-volume планировщика на **books-vds (89.253.255.133)**:
|
||||
|
||||
- **Файл (bind-mount):** `/opt/books/job-scheduler/config/default.json`
|
||||
- В этом JSON уже есть объект верхнего уровня `"docker"` (там `host`, `maxConcurrent`, `pullBackoffMs` и т.д.). Добавить в него ключ `registryAuth`:
|
||||
```json
|
||||
"docker": {
|
||||
"...": "... существующие поля не трогать ...",
|
||||
"registryAuth": {
|
||||
"username": "books-ci",
|
||||
"password": "<пароль из pass vds-kzntsv/registry-books-ci>",
|
||||
"serveraddress": "registry.kzntsv.site"
|
||||
}
|
||||
}
|
||||
```
|
||||
- `serveraddress` — ровно `registry.kzntsv.site` (без `https://`, без `/v2`).
|
||||
- После правки **перезапустить контейнер `books-job-scheduler`** (через Portainer/compose), чтобы node перечитал config — bind-mount подхватывается только на старте процесса.
|
||||
|
||||
## Acceptance
|
||||
|
||||
- Ключ `docker.registryAuth` присутствует в `/opt/books/job-scheduler/config/default.json`, пароль соответствует `books-ci` в реестре.
|
||||
- Контейнер `books-job-scheduler` перезапущен и `healthy`.
|
||||
- (Финальная проверка — за books: после деплоя code-части убедиться что `createPickingListPdf` перестал падать на pull. Образ и тег `master` на месте, допушивать ничего не надо — pull заработает сразу как кред доедет + выйдет code-часть.)
|
||||
|
||||
## Замечания
|
||||
|
||||
- Кред **не хардкодить** в git — только в config-volume на хосте (как mongo/s3/mariadb-креды рядом).
|
||||
- registryGc (вторая docker-related задача, падает «gitea config missing») — **в эту таску НЕ входит**, разбирается отдельно на стороне books (мис-таргетирован на Gitea-packages, переписывается на registry v2 DELETE позже).
|
||||
|
||||
## Обязательные скилы — вызвать до начала работы
|
||||
|
||||
- invoke `using-tasks` — для управления статусом этой задачи
|
||||
- invoke `using-projects-meta` — cross-project координация / нотификация
|
||||
- invoke `project-discipline` — дисциплина изменений на проде (config-volume, рестарт)
|
||||
- invoke `using-vds-ops` или `books-ops-mcp` — read-only проверка `books-job-scheduler` (health/env) после рестарта
|
||||
|
||||
**TDD:** нет — ops-задача (размещение креда + рестарт контейнера), кода нет.
|
||||
**Разрешения:** интерны: нет (секрет) | автопуш: н/п (не git-код books)
|
||||
**weight:** needs-human
|
||||
**notify:** victor/books
|
||||
|
||||
**Status:** ready
|
||||
**Where I stopped:** (not started)
|
||||
**Next action:** Добавить ключ docker.registryAuth (кред books-ci из pass vds-kzntsv/registry-books-ci) в config-volume scheduler'а на books-vds, затем перезапустить контейнер books-job-scheduler чтобы он перечитал config.
|
||||
**Branch:** n/a
|
||||
**Notify:** victor/books
|
||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: victor/books / 2026-06-18T06:57:04.379Z -->
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user