34 lines
2.0 KiB
Markdown
34 lines
2.0 KiB
Markdown
# Code Review Request v2 — Go Terraform Registry
|
|
|
|
## Контекст
|
|
|
|
После первого ревью исправлено: SSRF в proxyHandler, go.sum, readyz, сортировка версий, graceful shutdown, gofmt. Добавлен /debug и дизайн Nubes.
|
|
|
|
Продакшен: `https://tf-registry.containerk8s.services.ngcloud.ru`
|
|
S3: Ceph `s3.msk-1.ngcloud.ru`, бакет `nubes-terraform-registry`
|
|
|
|
## Файлы для ревью
|
|
|
|
- `server/main.go` — всё в одном файле (~430 строк)
|
|
- `server/gpg_key.go` — GPG-ключи
|
|
- `server/docs.go` — статика
|
|
- `Dockerfile` — сборка
|
|
|
|
## Вопросы
|
|
|
|
1. **proxyHandler** — новый стриминг с ручным `Read/Write/Flush` циклом и 64KB буфером. Нормально ли это? Не упущены ли edge-cases (обрыв соединения, таймаут)?
|
|
|
|
2. **/debug endpoint** — показывает ENV, DNS, TCP, S3 статус. Безопасно ли это на проде? DNS-резолв и TCP-dial из пода могут быть использованы для SSRF?
|
|
|
|
3. **Один файл** — main.go разросся до ~430 строк (роуты + S3 + debug + HTML-шаблон). Стоит ли дробить или пока ок?
|
|
|
|
4. **embed для logo.svg** — нормальный подход? Не раздует ли бинарник?
|
|
|
|
5. **S3_PREFIX hardcode в Dockerfile** — `tf-registry.containerk8s.services.ngcloud.ru` зашит в Dockerfile ENV. Это конфиг или хардкод?
|
|
|
|
6. **downloadVersion** — `defer` внутри `if err == nil` (с прошлого ревью сказали что ок). Перепроверь — defer внутри if-блока точно не проблема?
|
|
|
|
7. **Dockerfile** — есть `go.mod`/`go.sum`, билд воспроизводимый. Всё ок?
|
|
|
|
8. **Общее** — перед деплоем в прод, что ещё проверить?
|