1.9 KiB
Code Review v3 — Go Terraform Registry (финальный)
Контекст
Реестр на проде: https://tf-registry.containerk8s.services.ngcloud.ru
После ревью v2: структура переписана, HTML в embed, proxyHandler фикс, таймауты, валидация key.
Файлы
server/
├── main.go # vars, main()
├── handlers.go # типы, root, discovery, healthz, readyz, debug
├── proxy.go # proxyHandler
├── router_versions.go # router, listVersions, downloadVersion
├── gpg_key.go # GPG-ключи
├── docs.go # docs-хендлер
├── embed.go # embed templates/index.html
├── logo.svg
└── templates/index.html
Dockerfile
Вопросы
-
Структура пакета — всё в
package main, разнесено по файлам. Ок для команды или стоит выносить вinternal/? -
embed подход —
embed.goс//go:embed templates/index.html,rootHandlerчитает черезtemplateFS.ReadFile, заменяет{{.Version}}. Ок или лучшеhtml/template? -
proxyHandler —
io.Copy(w, obj)с MinIO Object, таймаут 60s, валидация key по s3Prefix. Всё ок? -
listVersions —
context.Background()без таймаута дляListObjects. Стоит добавить? -
downloadVersion —
deferвнутриif err == nil(defer shasumsObj.Close). Перепроверь — это ок? -
/debug — показывает ENV (включая секреты S3_ACCESS_KEY/S3_SECRET_KEY). Оставить или убрать?
-
Dockerfile — ENV с дефолтами, секреты в jsonEnv. Нормальный паттерн?
-
Общее — перед тем как объявить готовым к проду, что ещё?