Skip to content

Commit

Permalink
Merge pull request #1747 from FabianKramm/main
Browse files Browse the repository at this point in the history
refactor: add image.registry to configure registry separately
  • Loading branch information
FabianKramm committed May 8, 2024
2 parents 0e7521f + 432f21c commit b858d36
Show file tree
Hide file tree
Showing 19 changed files with 350 additions and 72 deletions.
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ controlPlane:
statefulSet:
imagePullPolicy: Never
image:
registry: ""
repository: my-vcluster
tag: 0.0.1
```
Expand Down
17 changes: 7 additions & 10 deletions assets/push-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,12 @@ done < "${list}"
arch_list+=("linux-amd64")
for i in "${linux_images[@]}"; do
[ -z "${i}" ] && continue
case $i in
*/*)
image_name="${reg}/${i}"
;;
*)
image_name="${reg}/ghcr.io/loft-sh/${i}"
;;
esac

docker tag "${i}" "${image_name}"
docker push "${image_name}"
# trim ghcr.io & registry.k8s.io
image_name=$(echo $i | sed 's/ghcr\.io\///')
image_name=$(echo $image_name | sed 's/registry\.k8s\.io\///')

echo "Push ${i} as ${reg}/${image_name}"
docker tag "${i}" "${reg}/${image_name}"
docker push "${reg}/${image_name}"
done
14 changes: 12 additions & 2 deletions chart/templates/_helper.tpl
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
{{- define "vcluster.controlPlane.image" -}}
{{- $tag := .Chart.Version -}}
{{- if .Values.controlPlane.statefulSet.image.tag -}}
{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.statefulSet.image.repository }}:{{ .Values.controlPlane.statefulSet.image.tag }}
{{- $tag = .Values.controlPlane.statefulSet.image.tag -}}
{{- end -}}
{{- include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "tag" $tag "registry" .Values.controlPlane.statefulSet.image.registry "repository" .Values.controlPlane.statefulSet.image.repository) -}}
{{- end -}}

{{- define "vcluster.image" -}}
{{- if .defaultImageRegistry -}}
{{ .defaultImageRegistry }}/{{ .repository }}:{{ .tag }}
{{- else if .registry -}}
{{ .registry }}/{{ .repository }}:{{ .tag }}
{{- else -}}
{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.statefulSet.image.repository }}:{{ .Chart.Version }}
{{ .repository }}:{{ .tag }}
{{- end -}}
{{- end -}}
32 changes: 20 additions & 12 deletions chart/templates/_init-containers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
{{ toYaml .Values.controlPlane.distro.eks.resources | indent 4 }}
{{- if .Values.controlPlane.distro.eks.controllerManager.enabled }}
- name: kube-controller-manager
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.eks.controllerManager.image.repository }}:{{ .Values.controlPlane.distro.eks.controllerManager.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.eks.controllerManager.image.registry "repository" .Values.controlPlane.distro.eks.controllerManager.image.repository "tag" .Values.controlPlane.distro.eks.controllerManager.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand All @@ -54,7 +54,7 @@
{{- end }}
{{- if .Values.controlPlane.advanced.virtualScheduler.enabled }}
- name: kube-scheduler-manager
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.eks.scheduler.image.repository }}:{{ .Values.controlPlane.distro.eks.scheduler.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.eks.scheduler.image.registry "repository" .Values.controlPlane.distro.eks.scheduler.image.repository "tag" .Values.controlPlane.distro.eks.scheduler.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand All @@ -74,7 +74,7 @@
{{- end }}
{{- if .Values.controlPlane.distro.eks.apiServer.enabled }}
- name: kube-apiserver
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.eks.apiServer.image.repository }}:{{ .Values.controlPlane.distro.eks.apiServer.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.eks.apiServer.image.registry "repository" .Values.controlPlane.distro.eks.apiServer.image.repository "tag" .Values.controlPlane.distro.eks.apiServer.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand Down Expand Up @@ -118,7 +118,7 @@
{{ toYaml .Values.controlPlane.distro.k8s.resources | indent 4 }}
{{- if .Values.controlPlane.distro.k8s.controllerManager.enabled }}
- name: kube-controller-manager
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.k8s.controllerManager.image.repository }}:{{ .Values.controlPlane.distro.k8s.controllerManager.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.k8s.controllerManager.image.registry "repository" .Values.controlPlane.distro.k8s.controllerManager.image.repository "tag" .Values.controlPlane.distro.k8s.controllerManager.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand All @@ -138,7 +138,7 @@
{{- end }}
{{- if .Values.controlPlane.advanced.virtualScheduler.enabled }}
- name: kube-scheduler-manager
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.k8s.scheduler.image.repository }}:{{ .Values.controlPlane.distro.k8s.scheduler.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.k8s.scheduler.image.registry "repository" .Values.controlPlane.distro.k8s.scheduler.image.repository "tag" .Values.controlPlane.distro.k8s.scheduler.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand All @@ -158,7 +158,7 @@
{{- end }}
{{- if .Values.controlPlane.distro.k8s.apiServer.enabled }}
- name: kube-apiserver
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.k8s.apiServer.image.repository }}:{{ .Values.controlPlane.distro.k8s.apiServer.image.tag }}"
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.k8s.apiServer.image.registry "repository" .Values.controlPlane.distro.k8s.apiServer.image.repository "tag" .Values.controlPlane.distro.k8s.apiServer.image.tag) }}"
volumeMounts:
- mountPath: /binaries
name: binaries
Expand All @@ -181,8 +181,8 @@
{{- define "vcluster.k3s.initContainers" -}}
{{- include "vcluster.oldPlugins.initContainers" . }}
{{- include "vcluster.plugins.initContainers" . }}
- image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.k3s.image.repository }}:{{ .Values.controlPlane.distro.k3s.image.tag }}"
name: vcluster
- name: vcluster
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.k3s.image.registry "repository" .Values.controlPlane.distro.k3s.image.repository "tag" .Values.controlPlane.distro.k3s.image.tag) }}"
command:
- /bin/sh
args:
Expand All @@ -203,8 +203,8 @@
{{- define "vcluster.k0s.initContainers" -}}
{{- include "vcluster.oldPlugins.initContainers" . }}
{{- include "vcluster.plugins.initContainers" . }}
- image: {{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.distro.k0s.image.repository }}:{{ .Values.controlPlane.distro.k0s.image.tag }}
name: vcluster
- name: vcluster
image: "{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" .Values.controlPlane.distro.k0s.image.registry "repository" .Values.controlPlane.distro.k0s.image.repository "tag" .Values.controlPlane.distro.k0s.image.tag) }}"
command:
- /bin/sh
args:
Expand All @@ -230,7 +230,11 @@
{{- if not $container.image }}
{{- continue }}
{{- end }}
- image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}{{ $container.image }}
- {{- if $.Values.controlPlane.advanced.defaultImageRegistry }}
image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}/{{ $container.image }}
{{- else }}
image: {{ $container.image }}
{{- end }}
{{- if $container.name }}
name: {{ $container.name | quote }}
{{- else }}
Expand Down Expand Up @@ -283,7 +287,11 @@
{{- if or (ne $container.version "v2") (not $container.image) -}}
{{- continue -}}
{{- end -}}
- image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}{{ $container.image }}
- {{- if $.Values.controlPlane.advanced.defaultImageRegistry }}
image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}/{{ $container.image }}
{{- else }}
image: {{ $container.image }}
{{- end }}
{{- if $container.name }}
name: {{ $container.name | quote }}
{{- else }}
Expand Down
6 changes: 5 additions & 1 deletion chart/templates/_plugin.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,11 @@
{{ continue }}
{{- end }}
{{- $counter = add1 $counter }}
- image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}{{ $container.image }}
- {{- if $.Values.controlPlane.advanced.defaultImageRegistry }}
image: {{ $.Values.controlPlane.advanced.defaultImageRegistry }}/{{ $container.image }}
{{- else }}
image: {{ $container.image }}
{{- end }}
{{- if $container.name }}
name: {{ $container.name | quote }}
{{- else }}
Expand Down
6 changes: 5 additions & 1 deletion chart/templates/coredns-configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,11 @@ data:
containers:
- name: coredns
{{- if .Values.controlPlane.coredns.deployment.image }}
image: {{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ .Values.controlPlane.coredns.deployment.image }}
{{- if .Values.controlPlane.advanced.defaultImageRegistry }}
image: {{ .Values.controlPlane.advanced.defaultImageRegistry }}/{{ .Values.controlPlane.coredns.deployment.image }}
{{- else }}
image: {{ .Values.controlPlane.coredns.deployment.image }}
{{- end }}
{{- else }}
image: {{`{{.IMAGE}}`}}
{{- end }}
Expand Down
2 changes: 1 addition & 1 deletion chart/templates/etcd-statefulset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ spec:
{{- end }}
containers:
- name: etcd
image: "{{ .Values.controlPlane.advanced.defaultImageRegistry }}{{ $externalEtcd.image.repository }}:{{ $externalEtcd.image.tag }}"
image: '{{ include "vcluster.image" (dict "defaultImageRegistry" .Values.controlPlane.advanced.defaultImageRegistry "registry" $externalEtcd.image.registry "repository" $externalEtcd.image.repository "tag" $externalEtcd.image.tag) }}'
command:
- etcd
- '--cert-file=/run/config/pki/etcd-server.crt'
Expand Down
37 changes: 37 additions & 0 deletions chart/tests/etcd-statefulset_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,43 @@ tests:
- hasDocuments:
count: 0

- it: check default image registry
set:
controlPlane:
backingStore:
etcd:
deploy:
enabled: true
statefulSet:
image:
tag: "123"
advanced:
defaultImageRegistry: fabi.com
asserts:
- hasDocuments:
count: 1
- equal:
path: spec.template.spec.containers[0].image
value: fabi.com/etcd:123

- it: change image registry
set:
controlPlane:
backingStore:
etcd:
deploy:
enabled: true
statefulSet:
image:
registry: fabi.com
tag: "123"
asserts:
- hasDocuments:
count: 1
- equal:
path: spec.template.spec.containers[0].image
value: fabi.com/etcd:123

- it: enabled for k3s & non persistent
set:
controlPlane:
Expand Down
114 changes: 114 additions & 0 deletions chart/tests/statefulset_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,117 @@ tests:
- hasDocuments:
count: 0

- it: image name
set:
controlPlane:
statefulSet:
image:
registry: "custom-registry.com"
asserts:
- equal:
path: spec.template.spec.containers[0].image
value: custom-registry.com/loft-sh/vcluster-pro:0.0.1

- it: defaultImageRegistry
set:
controlPlane:
advanced:
defaultImageRegistry: docker.io
asserts:
- equal:
path: spec.template.spec.containers[0].image
value: docker.io/loft-sh/vcluster-pro:0.0.1

- it: custom tag
set:
controlPlane:
statefulSet:
image:
repository: my-repo
tag: "custom-tag"
asserts:
- equal:
path: spec.template.spec.containers[0].image
value: ghcr.io/my-repo:custom-tag

- it: custom init container
set:
controlPlane:
distro:
k3s:
enabled: true
image:
registry: "ghcr.io"
repository: "test"
tag: "123"
asserts:
- equal:
path: spec.template.spec.initContainers[0].image
value: ghcr.io/test:123

- it: custom init container
set:
controlPlane:
distro:
k0s:
enabled: true
image:
registry: ""
repository: "k0s"
tag: "123"
asserts:
- equal:
path: spec.template.spec.initContainers[0].image
value: k0s:123

- it: custom init container
set:
controlPlane:
distro:
k8s:
enabled: true
controllerManager:
image:
registry: ""
repository: "k8s-controller"
tag: "123"
apiServer:
image:
registry: ""
repository: "k8s-api"
tag: "456"
asserts:
- equal:
path: spec.template.spec.initContainers[1].image
value: k8s-controller:123
- equal:
path: spec.template.spec.initContainers[2].image
value: k8s-api:456

- it: custom init container
set:
controlPlane:
distro:
k8s:
enabled: true
controllerManager:
image:
repository: "k8s-controller"
tag: "123"
apiServer:
image:
repository: "k8s-api"
tag: "456"
advanced:
defaultImageRegistry: "bbb.com"
asserts:
- equal:
path: spec.template.spec.initContainers[1].image
value: bbb.com/k8s-controller:123
- equal:
path: spec.template.spec.initContainers[2].image
value: bbb.com/k8s-api:456

- it: name & defaults
release:
name: my-release
Expand All @@ -28,6 +139,9 @@ tests:
- lengthEqual:
path: spec.template.spec.containers
count: 1
- equal:
path: spec.template.spec.containers[0].image
value: ghcr.io/loft-sh/vcluster-pro:0.0.1
- contains:
path: spec.template.spec.containers[0].env
content:
Expand Down
12 changes: 10 additions & 2 deletions chart/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1556,9 +1556,13 @@
},
"Image": {
"properties": {
"registry": {
"type": "string",
"description": "Registry is the registry of the container image, e.g. my-registry.com or ghcr.io. This setting can be globally\noverridden via the controlPlane.advanced.defaultImageRegistry option. Empty means docker hub."
},
"repository": {
"type": "string",
"description": "Repository is the registry and repository of the container image, e.g. my-registry.com/my-repo/my-image"
"description": "Repository is the repository of the container image, e.g. my-repo/my-image"
},
"tag": {
"type": "string",
Expand Down Expand Up @@ -2568,9 +2572,13 @@
},
"StatefulSetImage": {
"properties": {
"registry": {
"type": "string",
"description": "Configure the registry of the container image, e.g. my-registry.com or ghcr.io\nIt defaults to ghcr.io and can be overriding either by using this field or controlPlane.advanced.defaultImageRegistry"
},
"repository": {
"type": "string",
"description": "Configure the registry and repository of the container image, e.g. my-registry.com/my-repo/my-image.\nIt defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.\nIf you still want to use the pure OSS build, use 'ghcr.io/loft-sh/vcluster-oss' instead."
"description": "Configure the repository of the container image, e.g. my-repo/my-image.\nIt defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.\nIf you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead."
},
"tag": {
"type": "string",
Expand Down

0 comments on commit b858d36

Please sign in to comment.