From 4d96571b6edea467a55122ae05563f0b21cf519d Mon Sep 17 00:00:00 2001 From: JPadovano1483 Date: Tue, 30 Jun 2026 10:08:12 -0400 Subject: [PATCH 1/2] Add Helmfile kind environment for integration testing. Define kind overlay, cert-manager webhook waits, release ordering, and local image values for Kind clusters. Co-authored-by: Cursor --- charts/helmfile/helmfile.yaml.gotmpl | 42 ++++++++++++++++--- charts/helmfile/values/common.yaml | 1 + .../values/management-server.yaml.gotmpl | 6 +++ charts/helmfile/values/postgres.yaml.gotmpl | 15 +++++++ .../kind/helmfile/values-kind.yaml | 19 +++++++++ 5 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 tests/integration/kind/helmfile/values-kind.yaml diff --git a/charts/helmfile/helmfile.yaml.gotmpl b/charts/helmfile/helmfile.yaml.gotmpl index 27e943bf..8da6f6e1 100644 --- a/charts/helmfile/helmfile.yaml.gotmpl +++ b/charts/helmfile/helmfile.yaml.gotmpl @@ -2,14 +2,15 @@ environments: default: values: - ./values/common.yaml + kind: + values: + - ./values/common.yaml + - ../../tests/integration/kind/helmfile/values-kind.yaml --- {{- $deployCertManager := .Values.releases.certManager.enabled }} {{- $deployPostgresql := .Values.releases.postgresql.enabled }} {{- $deployManagementServer := .Values.releases.managementServer.enabled }} -{{- $postgresqlNamespace := .Values.releases.postgresql.namespace }} -{{- if ne $postgresqlNamespace "" }} -{{- $postgresqlNamespace = printf "-n %s" $postgresqlNamespace }} -{{- end }} +{{- $pgNamespace := .Values.releases.postgresql.namespace }} repositories: - name: bitnami @@ -28,6 +29,17 @@ releases: - crds: enabled: true keep: true + hooks: + - events: ["postsync"] + showlogs: true + command: sh + args: + - -c + - | + kubectl wait --for=condition=Established crd/certificates.cert-manager.io --timeout=300s + kubectl wait --for=condition=Established crd/issuers.cert-manager.io --timeout=300s + kubectl -n cert-manager rollout status deployment/cert-manager-webhook --timeout=300s + kubectl -n cert-manager wait pod -l app.kubernetes.io/component=webhook --for=condition=Ready --timeout=300s - name: postgresql {{- if ne .Values.releases.postgresql.namespace "" }} namespace: {{ .Values.releases.postgresql.namespace }} @@ -47,11 +59,31 @@ releases: args: - -c - | - kubectl create configmap db-init-configmap {{ $postgresqlNamespace }} --from-file=./resources/db-setup.sql -o yaml --dry-run=client | kubectl apply -f - + kubectl create configmap db-init-configmap {{- if ne $pgNamespace "" }} -n {{ $pgNamespace }}{{- end }} --from-file=./resources/db-setup.sql -o yaml --dry-run=client | kubectl apply -f - - name: management-server + {{- if ne .Values.releases.managementServer.namespace "" }} + namespace: {{ .Values.releases.managementServer.namespace }} + {{- end }} + createNamespace: true chart: ../management-server installed: {{ $deployManagementServer }} + needs: + - cert-manager/cert-manager + {{- if ne $pgNamespace "" }} + - {{ $pgNamespace }}/postgresql + {{- else }} + - postgresql + {{- end }} labels: component: management-server values: - ./values/management-server.yaml.gotmpl + hooks: + - events: ["presync"] + showlogs: true + command: sh + args: + - -c + - | + kubectl -n cert-manager rollout status deployment/cert-manager-webhook --timeout=300s + kubectl -n cert-manager wait pod -l app.kubernetes.io/component=webhook --for=condition=Ready --timeout=120s diff --git a/charts/helmfile/values/common.yaml b/charts/helmfile/values/common.yaml index d997a3a1..9880b6c0 100644 --- a/charts/helmfile/values/common.yaml +++ b/charts/helmfile/values/common.yaml @@ -43,3 +43,4 @@ releases: namespace: "" managementServer: enabled: true + namespace: "" diff --git a/charts/helmfile/values/management-server.yaml.gotmpl b/charts/helmfile/values/management-server.yaml.gotmpl index 51c504e6..8a1af549 100644 --- a/charts/helmfile/values/management-server.yaml.gotmpl +++ b/charts/helmfile/values/management-server.yaml.gotmpl @@ -1,6 +1,12 @@ +{{- $ms := .Values.managementServer | default dict }} +{{- $image := $ms.image | default dict }} postgres: host: {{ .Values.postgres.host | quote }} port: {{ .Values.postgres.port | quote }} database: {{ .Values.postgres.database | quote }} credentialsSecret: {{- toYaml .Values.postgres.credentialsSecret | nindent 4 }} +image: + repository: {{ $image.repository | default "quay.io/skupper/vms-management-controller" | quote }} + tag: {{ $image.tag | default "latest" | quote }} + pullPolicy: {{ $image.pullPolicy | default "Always" | quote }} diff --git a/charts/helmfile/values/postgres.yaml.gotmpl b/charts/helmfile/values/postgres.yaml.gotmpl index 3423a825..ba189666 100644 --- a/charts/helmfile/values/postgres.yaml.gotmpl +++ b/charts/helmfile/values/postgres.yaml.gotmpl @@ -12,6 +12,21 @@ auth: existingSecret: {{ $sec.name | quote }} secretKeys: adminPasswordKey: {{ $sec.adminPasswordKey | quote }} +{{- if $pg.image }} +image: + {{- if hasKey $pg.image "registry" }} + registry: {{ $pg.image.registry | quote }} + {{- end }} + {{- if hasKey $pg.image "repository" }} + repository: {{ $pg.image.repository | quote }} + {{- end }} + {{- if hasKey $pg.image "tag" }} + tag: {{ $pg.image.tag | quote }} + {{- end }} + {{- if hasKey $pg.image "pullPolicy" }} + pullPolicy: {{ $pg.image.pullPolicy | quote }} + {{- end }} +{{- end }} primary: initdb: scriptsConfigMap: db-init-configmap diff --git a/tests/integration/kind/helmfile/values-kind.yaml b/tests/integration/kind/helmfile/values-kind.yaml new file mode 100644 index 00000000..7dbf59ed --- /dev/null +++ b/tests/integration/kind/helmfile/values-kind.yaml @@ -0,0 +1,19 @@ +# Kind integration overlay (helmfile -e kind). Local image, single namespace, no PV. +postgres: + host: postgresql + persistence: + enabled: false + image: + pullPolicy: IfNotPresent + +releases: + postgresql: + namespace: vms-test + managementServer: + namespace: vms-test + +managementServer: + image: + repository: vms-management-controller + tag: kind + pullPolicy: Never From ff750bb8d9ccded8d2c4ea90e9652ddaa6ca814a Mon Sep 17 00:00:00 2001 From: JPadovano1483 Date: Mon, 6 Jul 2026 15:36:52 -0400 Subject: [PATCH 2/2] fix helmfile deployment values --- charts/helmfile/values/common.yaml | 7 +++++++ charts/helmfile/values/postgres.yaml.gotmpl | 13 +------------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/charts/helmfile/values/common.yaml b/charts/helmfile/values/common.yaml index 9880b6c0..0efb7906 100644 --- a/charts/helmfile/values/common.yaml +++ b/charts/helmfile/values/common.yaml @@ -31,6 +31,13 @@ postgres: storageClass: "" imagePullSecret: "" +# configuration for the management controller image +managementServer: + image: + repository: quay.io/skupper/vms-management-controller + tag: latest + pullPolicy: Always + # Release configuration: # certManager: installed into the cert-manager namespace (will be created if not exists) # postgresql: installed into the namespace specified in the namespace key (will be created if not exists). If namespace is empty, the release will be installed into the current namespace. diff --git a/charts/helmfile/values/postgres.yaml.gotmpl b/charts/helmfile/values/postgres.yaml.gotmpl index ba189666..c81689d3 100644 --- a/charts/helmfile/values/postgres.yaml.gotmpl +++ b/charts/helmfile/values/postgres.yaml.gotmpl @@ -12,20 +12,9 @@ auth: existingSecret: {{ $sec.name | quote }} secretKeys: adminPasswordKey: {{ $sec.adminPasswordKey | quote }} -{{- if $pg.image }} +{{- if and (hasKey $pg "image") (hasKey $pg.image "pullPolicy") }} image: - {{- if hasKey $pg.image "registry" }} - registry: {{ $pg.image.registry | quote }} - {{- end }} - {{- if hasKey $pg.image "repository" }} - repository: {{ $pg.image.repository | quote }} - {{- end }} - {{- if hasKey $pg.image "tag" }} - tag: {{ $pg.image.tag | quote }} - {{- end }} - {{- if hasKey $pg.image "pullPolicy" }} pullPolicy: {{ $pg.image.pullPolicy | quote }} - {{- end }} {{- end }} primary: initdb: