Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
7731127e
Commit
7731127e
authored
Dec 07, 2023
by
Brad Davidson
Committed by
Brad Davidson
Jan 11, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add ADR for embedded registry
Signed-off-by:
Brad Davidson
<
brad.davidson@rancher.com
>
(cherry picked from commit
b8f3967a
) Signed-off-by:
Brad Davidson
<
brad.davidson@rancher.com
>
parent
42ea9be3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
0 deletions
+43
-0
embedded-registry.md
docs/adrs/embedded-registry.md
+43
-0
No files found.
docs/adrs/embedded-registry.md
0 → 100644
View file @
7731127e
# Package spegel Distributed Registry Mirror
Date: 2023-12-07
## Status
Accepted
## Context
Embedded registry mirror support has been on the roadmap for some time, to address multiple challenges:
*
Upstream registries may enforce pull limits or otherwise throttle access to images.
*
In edge scenarios, bandwidth is at a premium, if external access is available at all.
*
Distributing airgap image tarballs to nodes, and ensuring that images remain available, is an ongoing
hurdle to adoption.
*
Deploying an in-cluster registry, or hosting a registry outside the cluster, put significant
burden on administrators, and suffer from chicken-or-egg bootstrapping issues.
An ideal embedded registry would have several characteristics:
*
Allow stateless configuration such that nodes can come and go at any time.
*
Integrate into existing containerd registry mirror support.
*
Integrate into existing containerd image stores such that an additional copy of layer data is not required.
*
Use existing cluster authentication mechanisms to prevent unauthorized access to the registry.
*
Operate with minimal added CPU and memory overhead.
## Decision
*
We will embed spegel within K3s, and use it to host a distributed registry mirror.
*
The distributed registry mirror will be enabled cluster-wide via server CLI flag.
*
Selection of upstream registries to mirror will be implemented via the existing
`registries.yaml`
configuration file.
*
The registry API will be served via HTTPS on every node's private IP at port 6443. On servers this will
use the existing supervisor listener; on agents a new listener will be created for this purpose.
*
The default IPFS/libp2p port of 5001 will be used for P2P layer discovery.
*
Access to the registry API and P2P network will require proof of cluster membership, enforced via
client certificate or preshared key.
*
Hybrid/multicloud support is out of scope; when the distributed registry mirror is enabled, cluster
members are assumed to be directly accessible to each other via their internal IP on the listed ports.
## Consequences
*
The size of our self-extracting binary and Docker images increase by several megabytes.
*
We take on the support burden of keeping spegel up to date, and supporting its use within K3s.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment