Skip to content

Commit e24e47a

Browse files
committed
feat(template): Support registry-specific Helm values
1 parent 85b9420 commit e24e47a

6 files changed

Lines changed: 44 additions & 9 deletions

File tree

template/Makefile.j2

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,9 @@ run-dev: check-nix check-kubernetes
7676

7777
stop-dev: check-nix check-kubernetes
7878
nix run --extra-experimental-features "nix-command flakes" -f. tilt -- down
79+
80+
helm-install:
81+
helm install \
82+
--values deploy/helm/airflow-operator/values.yaml \
83+
--values deploy/helm/airflow-operator/values/$(OCI_REGISTRY_HOSTNAME).yaml \
84+
airflow-operator deploy/helm/airflow-operator

template/Tiltfile

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1+
# Load the metadata first, so that we immediately get access to the operator name
2+
meta = read_json('nix/meta.json')
3+
operator_name = meta['operator']['name']
4+
15
# If tilt_options.json exists read it and load the default_registry value from it
26
settings = read_json('tilt_options.json', default={})
3-
registry = settings.get('default_registry', 'oci.stackable.tech/sandbox')
7+
registry = settings.get('default_registry', 'oci.stackable.tech')
8+
repository = settings.get('default_repository', 'sandbox' + '/' + operator_name)
49

510
# Configure default registry either read from config file above, or with default value of "oci.stackable.tech/sandbox"
611
default_registry(registry)
712

8-
meta = read_json('nix/meta.json')
9-
operator_name = meta['operator']['name']
10-
1113
custom_build(
12-
registry + '/' + operator_name,
13-
'make regenerate-nix && nix-build . -A docker --argstr dockerName "${EXPECTED_REGISTRY}/' + operator_name + '" && ./result/load-image | docker load',
14+
registry + '/' + repository,
15+
'make regenerate-nix && nix-build . -A docker --argstr dockerName "${EXPECTED_REGISTRY}/' + repository + '" && ./result/load-image | docker load',
1416
deps=['rust', 'Cargo.toml', 'Cargo.lock', 'default.nix', "nix", 'build.rs', 'vendor'],
1517
ignore=['*.~undo-tree~'],
1618
# ignore=['result*', 'Cargo.nix', 'target', *.yaml],
@@ -28,13 +30,15 @@ k8s_kind('DaemonSet', image_json_path='{.spec.template.metadata.annotations.inte
2830
# supported by helm(set).
2931
helm_values = settings.get('helm_values', None)
3032

31-
helm_override_image_repository = 'image.repository=' + registry + '/' + operator_name
33+
helm_override_image_registry = 'image.registry=' + registry
34+
helm_override_image_repository = 'image.repository=' + repository
3235

3336
k8s_yaml(helm(
3437
'deploy/helm/' + operator_name,
3538
name=operator_name,
3639
namespace="stackable-operators",
3740
set=[
41+
helm_override_image_registry,
3842
helm_override_image_repository,
3943
],
4044
values=helm_values,

template/deploy/helm/[[operator]]/.helmignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
# Patterns to ignore when building packages.
77
# This supports shell glob matching, relative path matching, and
88
# negation (prefixed with !). Only one pattern per line.
9+
# Ignore the file itself
10+
.helmignore
911
.DS_Store
1012
# Common VCS dirs
1113
.git/
@@ -26,3 +28,5 @@
2628
.idea/
2729
*.tmproj
2830
.vscode/
31+
# Partial, unmerged, registry-specific values files
32+
values/

template/deploy/helm/[[operator]]/templates/_helpers.tpl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,10 @@ Labels for Kubernetes objects created by helm test
7777
{{- define "operator.testLabels" -}}
7878
helm.sh/test: {{ include "operator.chart" . }}
7979
{{- end }}
80+
81+
{{/*
82+
Build the full container image reference.
83+
*/}}
84+
{{- define "operator.image" -}}
85+
{{- printf "%s/%s:%s" .Values.image.registry .Values.image.repository (.Values.image.tag | default .Chart.AppVersion) -}}
86+
{{- end }}

template/deploy/helm/[[operator]]/templates/deployment.yaml.j2

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ spec:
1616
template:
1717
metadata:
1818
annotations:
19-
internal.stackable.tech/image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
19+
internal.stackable.tech/image: {{ include "operator.image" . }}
2020
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
2121
{{- with .Values.podAnnotations }}
2222
{{- toYaml . | nindent 8 }}
@@ -38,7 +38,7 @@ spec:
3838
- name: {{ include "operator.appname" . }}
3939
securityContext:
4040
{{- toYaml .Values.securityContext | nindent 12 }}
41-
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
41+
image: {{ include "operator.image" . }}
4242
imagePullPolicy: {{ .Values.image.pullPolicy }}
4343
resources:
4444
{{- toYaml .Values.resources | nindent 12 }}
@@ -71,6 +71,15 @@ spec:
7171
- name: OPERATOR_SERVICE_NAME
7272
value: {{ include "operator.fullname" . }}
7373

74+
# The URI of the image registry, like "oci.stackable.tech". Used to derive product image
75+
# name.
76+
- name: IMAGE_REGISTRY_URI
77+
value: {{ .Values.image.registry }}
78+
79+
# The image repository, like "sdp/airflow-operator"
80+
- name: IMAGE_REPOSITORY
81+
value: {{ .Values.image.repository }}
82+
7483
# Operators need to know the node name they are running on, to e.g. discover the
7584
# Kubernetes domain name from the kubelet API.
7685
- name: KUBERNETES_NODE_NAME
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
# Values overlay for chart packages published to oci.stackable.tech.
3+
image:
4+
registry: oci.stackable.tech
5+
repository: sdp/airflow-operator

0 commit comments

Comments
 (0)