added docs DEVEL.md
This commit is contained in:
@@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
Данный сервис был написан мной в целях представить простой в развертывании, модификации и использовании сервис хранения артефактов.
|
||||||
|
Прежде всего образов контейнеров и helm charts. Я не претендовал на
|
||||||
|
коммерческий продукт в широком публичном испльзовании.
|
||||||
|
|
||||||
|
Он успешно испытан при создании k8s кластеров и развертывании приложений в нем.
|
||||||
|
|
||||||
|
В этом продукте представлено три условных протокола взаимодействия
|
||||||
|
|
||||||
|
1 Это протокол передачи компонент образов контейнеров,
|
||||||
|
выросший из протокола, придуманном неким человеком в Docker.com.
|
||||||
|
У меня много вопросов к нему (к ним?). И предполагаю что некоторые будут
|
||||||
|
содержать преимуществнно обсценную лекcику, к которой пришел
|
||||||
|
в процессе реализации протокола.
|
||||||
|
|
||||||
|
Предволожительно и по содержанию первой версии docker сервиса,
|
||||||
|
это протокол, созданный начинающим в професиии человеком и знающим только HTTP.
|
||||||
|
Но интегрированный в деловые процессы он стал основой де-факто,
|
||||||
|
судя по всему без значительных попыток пересмотра.
|
||||||
|
|
||||||
|
Позднее этот протокол был несколько облагорожен и получил статус и редакцию
|
||||||
|
стандарта от Open Container Initiative.
|
||||||
|
|
||||||
|
Его реализации разнятся по содержанию и поведению, и по моим приблизительным оценкам,
|
||||||
|
совпадают с опубликованными спецификациями где-то на две трети,
|
||||||
|
даже в части обязательных указаний.
|
||||||
|
|
||||||
|
2 Созданнный в стиле первого, протокол передачи файлов и чартов. Фактически
|
||||||
|
ограничен реализацией протокола в утилите helm.
|
||||||
|
|
||||||
|
3 Протол управления аккаунтами и разрешениями сервиса. Он сделан по мотивам
|
||||||
|
JSON RPC и относительно независим от транспортной среды. Относительно незавивисим,
|
||||||
|
поскольку тип субьекта и операция с ним кодируются в пути запроса.
|
||||||
|
Этот подход с одной стороны относительно привычен для многих.
|
||||||
|
С другой стороны, мы не ограничены параметрами запросов и ответов, и ограничены
|
||||||
|
только границами json формализмов и сериализации.
|
||||||
|
|
||||||
@@ -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)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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<div>O Borodin</div>" 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>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
Reference in New Issue
Block a user