From a3479d4e7312d75de799161e604cd24a52be15c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 25 Feb 2026 17:59:43 +0200 Subject: [PATCH] added docs DEVEL.md --- DEVEL.md | 37 ++++++++++++++++++++ docs/main.go | 49 -------------------------- docs/mstore.drawio | 85 +++++++++++++++++++++++++++++++++++++++++++++ docs/mstore.png | Bin 0 -> 35764 bytes 4 files changed, 122 insertions(+), 49 deletions(-) create mode 100644 DEVEL.md delete mode 100644 docs/main.go create mode 100644 docs/mstore.drawio create mode 100644 docs/mstore.png diff --git a/DEVEL.md b/DEVEL.md new file mode 100644 index 0000000..564d10a --- /dev/null +++ b/DEVEL.md @@ -0,0 +1,37 @@ + +Данный сервис был написан мной в целях представить простой в развертывании, модификации и использовании сервис хранения артефактов. +Прежде всего образов контейнеров и helm charts. Я не претендовал на +коммерческий продукт в широком публичном испльзовании. + +Он успешно испытан при создании k8s кластеров и развертывании приложений в нем. + +В этом продукте представлено три условных протокола взаимодействия + +1 Это протокол передачи компонент образов контейнеров, +выросший из протокола, придуманном неким человеком в Docker.com. +У меня много вопросов к нему (к ним?). И предполагаю что некоторые будут +содержать преимуществнно обсценную лекcику, к которой пришел +в процессе реализации протокола. + +Предволожительно и по содержанию первой версии docker сервиса, +это протокол, созданный начинающим в професиии человеком и знающим только HTTP. +Но интегрированный в деловые процессы он стал основой де-факто, +судя по всему без значительных попыток пересмотра. + +Позднее этот протокол был несколько облагорожен и получил статус и редакцию +стандарта от Open Container Initiative. + +Его реализации разнятся по содержанию и поведению, и по моим приблизительным оценкам, +совпадают с опубликованными спецификациями где-то на две трети, +даже в части обязательных указаний. + +2 Созданнный в стиле первого, протокол передачи файлов и чартов. Фактически +ограничен реализацией протокола в утилите helm. + +3 Протол управления аккаунтами и разрешениями сервиса. Он сделан по мотивам +JSON RPC и относительно независим от транспортной среды. Относительно незавивисим, +поскольку тип субьекта и операция с ним кодируются в пути запроса. +Этот подход с одной стороны относительно привычен для многих. +С другой стороны, мы не ограничены параметрами запросов и ответов, и ограничены +только границами json формализмов и сериализации. + diff --git a/docs/main.go b/docs/main.go deleted file mode 100644 index 86dfe07..0000000 --- a/docs/main.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import ( - "fmt" - "time" - "os" - - "github.com/spf13/cobra/doc" - - "mstore/cmd/mstorectl/command" -) - -func run() error { - var err error - os.Args[0] = "mstorectl" - util := command.NewUtil() - err = util.Build() - if err != nil { - return err - } - - cmd := util.GetRooCmd() - now := time.Now() - header := &doc.GenManHeader{ - Title: "mstore", - Section: "1", - Manual: "User commands", - Source: "mstorectl command", - Date: &now, - } - opts := doc.GenManTreeOptions { - Header: header, - Path: "./", - CommandSeparator: "-", - } - err = doc.GenManTreeFromOpts(cmd, opts) - if err != nil { - return err - } - return err -} - -func main() { - err := run() - if err != nil { - fmt.Printf("err: %v\n", err) - } - -} diff --git a/docs/mstore.drawio b/docs/mstore.drawio new file mode 100644 index 0000000..cb16faa --- /dev/null +++ b/docs/mstore.drawio @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mstore.png b/docs/mstore.png new file mode 100644 index 0000000000000000000000000000000000000000..9e12d4ba9004e17f253cfc44ce4f643274641c16 GIT binary patch literal 35764 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 literal 0 HcmV?d00001