added docs DEVEL.md

This commit is contained in:
2026-02-25 17:59:43 +02:00
parent 3cf01ae30b
commit a3479d4e73
4 changed files with 122 additions and 49 deletions
+37
View File
@@ -0,0 +1,37 @@
Данный сервис был написан мной в целях представить простой в развертывании, модификации и использовании сервис хранения артефактов.
Прежде всего образов контейнеров и helm charts. Я не претендовал на
коммерческий продукт в широком публичном испльзовании.
Он успешно испытан при создании k8s кластеров и развертывании приложений в нем.
В этом продукте представлено три условных протокола взаимодействия
1 Это протокол передачи компонент образов контейнеров,
выросший из протокола, придуманном неким человеком в Docker.com.
У меня много вопросов к нему (к ним?). И предполагаю что некоторые будут
содержать преимуществнно обсценную лекcику, к которой пришел
в процессе реализации протокола.
Предволожительно и по содержанию первой версии docker сервиса,
это протокол, созданный начинающим в професиии человеком и знающим только HTTP.
Но интегрированный в деловые процессы он стал основой де-факто,
судя по всему без значительных попыток пересмотра.
Позднее этот протокол был несколько облагорожен и получил статус и редакцию
стандарта от Open Container Initiative.
Его реализации разнятся по содержанию и поведению, и по моим приблизительным оценкам,
совпадают с опубликованными спецификациями где-то на две трети,
даже в части обязательных указаний.
2 Созданнный в стиле первого, протокол передачи файлов и чартов. Фактически
ограничен реализацией протокола в утилите helm.
3 Протол управления аккаунтами и разрешениями сервиса. Он сделан по мотивам
JSON RPC и относительно независим от транспортной среды. Относительно незавивисим,
поскольку тип субьекта и операция с ним кодируются в пути запроса.
Этот подход с одной стороны относительно привычен для многих.
С другой стороны, мы не ограничены параметрами запросов и ответов, и ограничены
только границами json формализмов и сериализации.
-49
View File
@@ -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)
}
}
+85
View File
@@ -0,0 +1,85 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.9 Chrome/134.0.6998.205 Electron/35.4.0 Safari/537.36" version="27.0.9">
<diagram name="Page-1" id="bilFRRFyBUGthtbaxYIo">
<mxGraphModel dx="1880" dy="566" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#ffffff" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="t6Klk0bs08zzC_b7PXua-28" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F0FDFF;glass=0;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="-10" y="55" width="120" height="335" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-26" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F0FDFF;glass=0;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="120" y="50" width="630" height="350" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-5" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-1" target="t6Klk0bs08zzC_b7PXua-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-30" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-2" target="t6Klk0bs08zzC_b7PXua-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-2" value="service" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
<mxGeometry x="250" y="230" width="80" height="60" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-11" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000099;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-3" target="t6Klk0bs08zzC_b7PXua-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-19" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeColor=#0000CC;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-20" target="t6Klk0bs08zzC_b7PXua-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-3" value="handler" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;" vertex="1" parent="1">
<mxGeometry x="390" y="150" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-7" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;curved=0;strokeColor=#000099;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-6" target="t6Klk0bs08zzC_b7PXua-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-6" value="client" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;" vertex="1" parent="1">
<mxGeometry x="10" y="240" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-12" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;strokeColor=#000099;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-8" target="t6Klk0bs08zzC_b7PXua-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-18" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-8" target="t6Klk0bs08zzC_b7PXua-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-23" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-8" target="t6Klk0bs08zzC_b7PXua-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-8" value="operator" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;" vertex="1" parent="1">
<mxGeometry x="500" y="230" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-9" value="storage" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="570" y="300" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-10" value="lockers" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#bac8d3;strokeColor=#23445d;" vertex="1" parent="1">
<mxGeometry x="550" y="150" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-16" value="starter" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="140" y="110" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-33" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-1" target="t6Klk0bs08zzC_b7PXua-32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-1" value="server" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="150" y="145" width="80" height="55" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-17" value="database" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="630" y="220" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-20" value="auth" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;" vertex="1" parent="1">
<mxGeometry x="420" y="120" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-31" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=0;" edge="1" parent="1" source="t6Klk0bs08zzC_b7PXua-29" target="t6Klk0bs08zzC_b7PXua-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-29" value="router" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;" vertex="1" parent="1">
<mxGeometry x="290" y="140" width="70" height="50" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-32" value="config" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#b0e3e6;strokeColor=#0e8088;" vertex="1" parent="1">
<mxGeometry x="290" y="70" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="t6Klk0bs08zzC_b7PXua-34" value="Feb 2026&lt;div&gt;O Borodin&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;strokeColor=default;" vertex="1" parent="1">
<mxGeometry x="510" y="430" width="110" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB