From 69a665d6f53e7e0123b78182d5b83b13e9f3257b Mon Sep 17 00:00:00 2001 From: Felsiya Vasanthi K Date: Fri, 14 Feb 2025 17:13:17 +0530 Subject: [PATCH] Added spegel version 0.0.26 --- packs/spegel-0.0.26/README.md | 39 +++++ packs/spegel-0.0.26/charts/spegel-0.0.26.tgz | Bin 0 -> 10498 bytes packs/spegel-0.0.26/logo.png | Bin 0 -> 4269 bytes packs/spegel-0.0.26/pack.json | 14 ++ packs/spegel-0.0.26/values.yaml | 156 +++++++++++++++++++ 5 files changed, 209 insertions(+) create mode 100644 packs/spegel-0.0.26/README.md create mode 100644 packs/spegel-0.0.26/charts/spegel-0.0.26.tgz create mode 100644 packs/spegel-0.0.26/logo.png create mode 100644 packs/spegel-0.0.26/pack.json create mode 100644 packs/spegel-0.0.26/values.yaml diff --git a/packs/spegel-0.0.26/README.md b/packs/spegel-0.0.26/README.md new file mode 100644 index 0000000..5226a3e --- /dev/null +++ b/packs/spegel-0.0.26/README.md @@ -0,0 +1,39 @@ +# Description +Spegel, mirror in Swedish, is a stateless cluster local OCI registry mirror. +Spegel is for you if you are looking to do any of the following: +* Locally cache images from external registries with no explicit configuration. +* Avoid cluster failure during external registry downtime. +* Improve image pull speed and pod startup time by pulling images from the local cache first. +* Avoid rate-limiting when pulling images from external registries (e.g. Docker Hub). +* Decrease egressing traffic outside of the clusters network. +* Increase image pull efficiency in edge node deployments. + +# Kubernetes versions supported: +Above 1.21 + +# Constraints: +Currently, Spegel only works with Containerd, in the future other container runtime interfaces may be supported. Spegel relies on [Containerd registry mirroring](https://github.com/containerd/containerd/blob/main/docs/hosts.md#cri) to route requests to the correct destination. This requires Containerd to be properly configured, if it is not Spegel will exit. First of all the registry config path needs to be set, this is not done by default in Containerd. Second of all discarding unpacked layers cannot be enabled. Some Kubernetes flavors come with this setting out of the box, while others do not. Spegel is not able to write this configuration for you as it requires a restart of Containerd to take effect. + +``` +version = 2 + +imports = ["/etc/containerd/conf.d/*.toml"] + +[plugins] + [plugins."io.containerd.grpc.v1.cri"] + sandbox_image = "registry.k8s.io/pause:3.9" + [plugins."io.containerd.grpc.v1.cri".containerd] + discard_unpacked_layers = false + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true + [plugins."io.containerd.grpc.v1.cri".registry] + config_path = "/etc/containerd/certs.d" +``` + +# Cloud types supported: +Everything except GKE + +# References: + - https://github.com/spegel-org/spegel diff --git a/packs/spegel-0.0.26/charts/spegel-0.0.26.tgz b/packs/spegel-0.0.26/charts/spegel-0.0.26.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7a82d73d341d2a77e617408c2904770b5125fda6 GIT binary patch literal 10498 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 P00000NkvXXu0mjf