diff --git a/docs/examples.md b/docs/examples.md index 584e56c9..e7968a3d 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -78,4 +78,108 @@ 2. Curl it via localhost - `curl localhost:8082/` \ No newline at end of file + `curl localhost:8082/` + +## Connect with a local insecure registry + +This guide takes you through setting up a local insecure (http) registry and integrating it into your workflow so that: +- you can push to the registry from your host +- the cluster managed by k3d can pull from that registry + +The registry will be named `registry.local` and run on port `5000`. +### Create the registry + +
+docker volume create local_registry + +docker container run -d --name registry.local -v local_registry:/var/lib/registry --restart always -p 5000:5000 registry:2 ++ +### Create the cluster with k3d + +First we need a place to store the config template: `mkdir -p /home/${USER}/.k3d` + +Create a file named `config.toml.tmpl` in `/home/${USER}/.k3d`, with following content: + +
+# Original section: no changes
+[plugins.opt]
+path = "{{ .NodeConfig.Containerd.Opt }}"
+[plugins.cri]
+stream_server_address = "{{ .NodeConfig.AgentConfig.NodeName }}"
+stream_server_port = "10010"
+{{- if .IsRunningInUserNS }}
+disable_cgroup = true
+disable_apparmor = true
+restrict_oom_score_adj = true
+{{ end -}}
+{{- if .NodeConfig.AgentConfig.PauseImage }}
+sandbox_image = "{{ .NodeConfig.AgentConfig.PauseImage }}"
+{{ end -}}
+{{- if not .NodeConfig.NoFlannel }}
+ [plugins.cri.cni]
+ bin_dir = "{{ .NodeConfig.AgentConfig.CNIBinDir }}"
+ conf_dir = "{{ .NodeConfig.AgentConfig.CNIConfDir }}"
+{{ end -}}
+
+# Added section: additional registries and the endpoints
+[plugins.cri.registry.mirrors]
+ [plugins.cri.registry.mirrors."registry.local:5000"]
+ endpoint = ["http://registry.local:5000"]
+
+
+Finally start a cluster with k3d, passing-in the config template:
+
+```
+CLUSTER_NAME=k3s-default
+k3d create \
+ --name ${CLUSTER_NAME} \
+ --wait 0 \
+ --auto-restart \
+ --volume /home/${USER}/.k3d/config.toml.tmpl:/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl
+```
+
+### Wire them up
+
+- Connect the registry to the cluster network: `docker network connect k3d-k3s-default registry.local`
+- Add `127.0.0.1 registry.local` to your `/etc/hosts`
+
+### Test
+
+Push an image to the registry:
+
+```
+docker pull nginx:latest
+docker tag nginx:latest registry.local:5000/nginx:latest
+docker push registry.local:5000/nginx:latest
+```
+
+Deploy a pod referencing this image to your cluster:
+
+```
+cat <