-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Rastislav Szabo <rastislav@kubermatic.com>
- Loading branch information
1 parent
4c2770d
commit e9b2e2e
Showing
7 changed files
with
205 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Registryman Documentation | ||
|
||
## Concepts | ||
Registryman (Registry Manager) allows configuration of container image registry | ||
projects, project members and project replication rules in a declarative way (by | ||
virtue of k8s custom resources / YAML files) on top of multiple types of container image registries. | ||
|
||
Registryman can manage configuration of multiple registries at once and supports building hierarchical | ||
registry solutions, consisting of: | ||
|
||
- **Global Registry Hub**, which acts as a single source of truth for centralized image & vulnerability management, | ||
- **Multiple Local Registries** potentially located in different regions to have the images in close location to users. | ||
|
||
The Registryman ensures automatic replication of images between the Global and Local registries based on | ||
the intent described using Registryman API. | ||
|
||
An example of such deployment is shown on the following picture: | ||
|
||
![global-registry-overview.svg](./img/global-registry-overview.svg "Overview") | ||
|
||
To summarize the concepts shown on the picture: | ||
|
||
- the setup consists of a single Global Registry Hub and multiple Local Registries, | ||
- configuration and policies for projects across the whole setup can be managed using Registryman, | ||
- Registryman ensures that projects, project members and project replication rules configuration is always synchronized across the setup, | ||
- the users of global projects can push the images into the Global Registry Hub, | ||
- images of the global projects will be automatically synchronized to all Local Registries, | ||
- image consumers can pull the image from any Local (or Global) registry, e.g. based on their physical location, | ||
- local project can exist within the Local Registries, they can be managed via Registryman, but are not replicated anywhere. | ||
|
||
## Implementation Details | ||
For more implementation details, you can review the following documents: | ||
|
||
- [Registries and Projects](projects.md) | ||
- [Data Model](datamodel.md) | ||
- [Reconciliation](reconciliation.md) | ||
- [Actions](actions.md) |
File renamed without changes.
File renamed without changes
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<mxfile host="app.diagrams.net" modified="2021-07-08T07:46:20.087Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="EqsdCCGeGNaagmiDBsY_" version="14.8.3" type="google"> | ||
<diagram id="tF2UfFmr8TfE03G0T6Vt" name="Page-1"> | ||
<mxGraphModel dx="1182" dy="771" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> | ||
<root> | ||
<mxCell id="0" /> | ||
<mxCell id="1" parent="0" /> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-63" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeWidth=1;dashed=1;dashPattern=1 1;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-2" target="1ff9dEKrnvB0S2o5wIUf-62" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-2" value="Global Registry Hub&nbsp;" style="rounded=0;whiteSpace=wrap;html=1;align=right;verticalAlign=top;gradientColor=#ffffff;shadow=1;fontStyle=1" parent="1" vertex="1"> | ||
<mxGeometry x="410" y="210" width="230" height="130" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-11" value="Project A" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="430" y="260" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-12" value="Project B" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="540" y="260" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-13" value="Local Registry EU&nbsp;" style="rounded=0;whiteSpace=wrap;html=1;align=right;verticalAlign=top;gradientColor=#ffffff;shadow=1;fontStyle=1" parent="1" vertex="1"> | ||
<mxGeometry x="250" y="430" width="230" height="200" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-14" value="Project A" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="270" y="470" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-15" value="Project B" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="380" y="470" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-19" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> | ||
<mxGeometry x="440" y="290" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-20" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> | ||
<mxGeometry x="280" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-22" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | ||
<mxGeometry x="480" y="290" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-23" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | ||
<mxGeometry x="320" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-25" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> | ||
<mxGeometry x="570" y="290" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-26" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> | ||
<mxGeometry x="410" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-28" value="Local Project" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> | ||
<mxGeometry x="270" y="550" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-37" value="Local Registry Asia&nbsp;" style="rounded=0;whiteSpace=wrap;html=1;align=right;verticalAlign=top;gradientColor=#ffffff;shadow=1;fontStyle=1" parent="1" vertex="1"> | ||
<mxGeometry x="580" y="430" width="230" height="200" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-38" value="Project A" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="600" y="470" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-39" value="Project B" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="710" y="470" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-40" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> | ||
<mxGeometry x="610" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-41" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> | ||
<mxGeometry x="650" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-42" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> | ||
<mxGeometry x="740" y="500" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-43" value="Local Project" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;verticalAlign=top;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> | ||
<mxGeometry x="600" y="550" width="80" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-44" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1"> | ||
<mxGeometry x="300" y="580" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-45" value="" style="whiteSpace=wrap;html=1;aspect=fixed;shadow=0;verticalAlign=top;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"> | ||
<mxGeometry x="630" y="580" width="20" height="20" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-47" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-46" target="1ff9dEKrnvB0S2o5wIUf-11" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-49" value="PUSH" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1ff9dEKrnvB0S2o5wIUf-47" vertex="1" connectable="0"> | ||
<mxGeometry x="0.0937" y="1" relative="1" as="geometry"> | ||
<mxPoint as="offset" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-48" value="PULL" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;startArrow=classic;startFill=1;dashed=1;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-46" target="1ff9dEKrnvB0S2o5wIUf-14" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-46" value="Global <br>Registry User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;shadow=0;" parent="1" vertex="1"> | ||
<mxGeometry x="50" y="470" width="30" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-53" value="PUSH" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.4;entryY=1.017;entryDx=0;entryDy=0;entryPerimeter=0;dashed=1;startArrow=none;startFill=0;endArrow=classic;endFill=1;" parent="1" edge="1"> | ||
<mxGeometry relative="1" as="geometry"> | ||
<mxPoint x="622" y="720" as="sourcePoint" /> | ||
<mxPoint x="622" y="611.02" as="targetPoint" /> | ||
<Array as="points" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-52" value="Local<br>Registry User" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;shadow=0;" parent="1" vertex="1"> | ||
<mxGeometry x="620" y="730" width="30" height="60" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-54" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.4;entryY=1.017;entryDx=0;entryDy=0;entryPerimeter=0;dashed=1;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" edge="1"> | ||
<mxGeometry relative="1" as="geometry"> | ||
<mxPoint x="642" y="720" as="sourcePoint" /> | ||
<mxPoint x="642" y="621.02" as="targetPoint" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-55" value="PULL" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1ff9dEKrnvB0S2o5wIUf-54" vertex="1" connectable="0"> | ||
<mxGeometry x="-0.1295" y="-2" relative="1" as="geometry"> | ||
<mxPoint y="-1" as="offset" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-59" value="" style="endArrow=classic;startArrow=classic;html=1;strokeWidth=2;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-13" target="1ff9dEKrnvB0S2o5wIUf-2" edge="1"> | ||
<mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
<mxPoint x="360" y="550" as="sourcePoint" /> | ||
<mxPoint x="410" y="500" as="targetPoint" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-61" value="SYNC" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1ff9dEKrnvB0S2o5wIUf-59" vertex="1" connectable="0"> | ||
<mxGeometry x="0.2569" y="-3" relative="1" as="geometry"> | ||
<mxPoint as="offset" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-60" value="SYNC" style="endArrow=classic;startArrow=classic;html=1;strokeWidth=2;exitX=0.75;exitY=1;exitDx=0;exitDy=0;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-2" edge="1"> | ||
<mxGeometry width="50" height="50" relative="1" as="geometry"> | ||
<mxPoint x="590" y="371" as="sourcePoint" /> | ||
<mxPoint x="670" y="430" as="targetPoint" /> | ||
<Array as="points" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-62" value="Security<br>Scanner" style="shape=image;html=1;verticalAlign=top;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;imageAspect=0;aspect=fixed;image=https://cdn1.iconfinder.com/data/icons/feather-2/24/shield-128.png;shadow=0;gradientColor=none;" parent="1" vertex="1"> | ||
<mxGeometry x="740" y="241" width="48" height="48" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-66" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;dashed=1;dashPattern=1 4;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeWidth=1;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-65" target="1ff9dEKrnvB0S2o5wIUf-2" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-67" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=1 4;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeWidth=1;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-65" target="1ff9dEKrnvB0S2o5wIUf-37" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-68" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;dashPattern=1 4;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeWidth=1;fillColor=#f5f5f5;strokeColor=#666666;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-65" edge="1"> | ||
<mxGeometry relative="1" as="geometry"> | ||
<mxPoint x="344" y="430" as="targetPoint" /> | ||
</mxGeometry> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-65" value="<font style="font-size: 11px"><br>Config + Policy<br>Reconciliation</font>" style="ellipse;shape=umlControl;whiteSpace=wrap;html=1;shadow=0;verticalAlign=top;" parent="1" vertex="1"> | ||
<mxGeometry x="180" y="230" width="80" height="90" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-72" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.025;entryY=0.522;entryDx=0;entryDy=0;entryPerimeter=0;dashed=1;dashPattern=1 4;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=1;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-71" target="1ff9dEKrnvB0S2o5wIUf-65" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-71" value="Config Policies" style="shape=umlFrame;whiteSpace=wrap;html=1;shadow=0;verticalAlign=top;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;width=70;height=40;" parent="1" vertex="1"> | ||
<mxGeometry x="20" y="240" width="110" height="70" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-74" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;dashPattern=1 4;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeWidth=1;" parent="1" source="1ff9dEKrnvB0S2o5wIUf-73" target="1ff9dEKrnvB0S2o5wIUf-71" edge="1"> | ||
<mxGeometry relative="1" as="geometry" /> | ||
</mxCell> | ||
<mxCell id="1ff9dEKrnvB0S2o5wIUf-73" value="Project Admins" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;shadow=0;" parent="1" vertex="1"> | ||
<mxGeometry x="60" y="90" width="30" height="60" as="geometry" /> | ||
</mxCell> | ||
</root> | ||
</mxGraphModel> | ||
</diagram> | ||
</mxfile> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters