This is an automated email from the ASF dual-hosted git repository.

adutra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 280dcafcd Helm chart: include configmap checksum in deployment 
annotations (#3023)
280dcafcd is described below

commit 280dcafcd183097907dace7a3c6b062f2512a602
Author: cccs-cat001 <[email protected]>
AuthorDate: Mon Nov 10 13:16:30 2025 -0500

    Helm chart: include configmap checksum in deployment annotations (#3023)
---
 CHANGELOG.md                            |  1 +
 helm/polaris/templates/deployment.yaml  |  5 +-
 helm/polaris/tests/deployment_test.yaml | 87 +++++++++++++++++++++++++++++++--
 3 files changed, 87 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e6fb7e78..493e0c60d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -54,6 +54,7 @@ request adding CHANGELOG notes for breaking (!) changes and 
possibly other secti
 
 - `client.region` is no longer considered a "credential" property (related to 
Iceberg REST Catalog API).
 - Relaxed the requirements for S3 storage's ARN to allow Polaris to connect to 
more non-AWS S3 storage appliances. 
+- Added checksum to helm deployment so that it will restart when the configmap 
has changed.
 
 ### Deprecations
 
diff --git a/helm/polaris/templates/deployment.yaml 
b/helm/polaris/templates/deployment.yaml
index a7cec81a4..9ee0a1892 100644
--- a/helm/polaris/templates/deployment.yaml
+++ b/helm/polaris/templates/deployment.yaml
@@ -39,10 +39,11 @@ spec:
       {{- include "polaris.selectorLabels" . | nindent 6 }}
   template:
     metadata:
-      {{- if .Values.podAnnotations }}
       annotations:
+        checksum/config: {{ include (print $.Template.BasePath 
"/configmap.yaml") . | sha256sum }}
+        {{- if .Values.podAnnotations }}
         {{- tpl (toYaml .Values.podAnnotations) . | nindent 8 }}
-      {{- end }}
+        {{- end }}
       labels:
         {{- include "polaris.selectorLabels" . | nindent 8 }}
         {{- if .Values.podLabels }}
diff --git a/helm/polaris/tests/deployment_test.yaml 
b/helm/polaris/tests/deployment_test.yaml
index d80b72b64..df16d0a15 100644
--- a/helm/polaris/tests/deployment_test.yaml
+++ b/helm/polaris/tests/deployment_test.yaml
@@ -27,16 +27,19 @@ release:
 
 templates:
   - deployment.yaml
+  - configmap.yaml
 
 tests:
 
   # metadata.name
   - it: should set deployment name
+    template: deployment.yaml
     asserts:
       - equal:
           path: metadata.name
           value: polaris-release
   - it: should set deployment name with override
+    template: deployment.yaml
     set:
       nameOverride: polaris-override
     asserts:
@@ -44,6 +47,7 @@ tests:
           path: metadata.name
           value: polaris-release-polaris-override
   - it: should set deployment name with full override
+    template: deployment.yaml
     set:
       fullnameOverride: polaris-override
     asserts:
@@ -53,6 +57,7 @@ tests:
 
   # metadata.namespace
   - it: should set deployment namespace
+    template: deployment.yaml
     asserts:
       - equal:
           path: metadata.namespace
@@ -60,6 +65,7 @@ tests:
 
   # metadata.labels
   - it: should set deployment default labels
+    template: deployment.yaml
     asserts:
       - isSubset:
           path: metadata.labels
@@ -70,6 +76,7 @@ tests:
             app.kubernetes.io/managed-by: Helm
             helm.sh/chart: polaris-1.2.3
   - it: should set podLabels in deployment labels
+    template: deployment.yaml
     set:
       podLabels:
         app.kubernetes.io/component: polaris
@@ -81,11 +88,13 @@ tests:
 
   # spec.replicas
   - it: should set default replicas
+    template: deployment.yaml
     asserts:
       - equal:
           path: spec.replicas
           value: 1
   - it: should set replicas
+    template: deployment.yaml
     set:
       replicaCount: 3
     asserts:
@@ -93,6 +102,7 @@ tests:
           path: spec.replicas
           value: 3
   - it: should not set replicas if autoscaling is enabled
+    template: deployment.yaml
     set:
       replicaCount: 3
       autoscaling:
@@ -103,22 +113,26 @@ tests:
 
   # spec.revisionHistoryLimit
   - it: should not set revisionHistoryLimit by default with null
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.revisionHistoryLimit
   - it: should not set revisionHistoryLimit with quote empty string
+    template: deployment.yaml
     set:
       revisionHistoryLimit: ""
     asserts:
       - notExists:
           path: spec.revisionHistoryLimit
   - it: should not set revisionHistoryLimit with empty string
+    template: deployment.yaml
     set:
       revisionHistoryLimit:
     asserts:
       - notExists:
           path: spec.revisionHistoryLimit
   - it: should set revisionHistoryLimit
+    template: deployment.yaml
     set:
       revisionHistoryLimit: 1
     asserts:
@@ -126,6 +140,7 @@ tests:
           path: spec.revisionHistoryLimit
           value: 1
   - it: should set revisionHistoryLimit (disabled revision history)
+    template: deployment.yaml
     set:
       revisionHistoryLimit: 0
     asserts:
@@ -135,6 +150,7 @@ tests:
 
   # spec.selector.matchLabels + spec.template.metadata.labels
   - it: should set deployment selector labels
+    template: deployment.yaml
     asserts:
       - isSubset:
           path: spec.selector.matchLabels
@@ -147,6 +163,7 @@ tests:
             app.kubernetes.io/name: polaris
             app.kubernetes.io/instance: polaris-release
   - it: should include podLabels in spec.template.metadata.labels only
+    template: deployment.yaml
     set:
       podLabels:
         app.kubernetes.io/component: polaris
@@ -161,11 +178,16 @@ tests:
             app.kubernetes.io/component: polaris
 
   # spec.template.metadata.annotations
-  - it: should not set pod annotations by default
-    asserts:
-      - notExists:
-          path: spec.template.metadata.annotations
+  - it: should only set checksum annotation by default
+    template: deployment.yaml
+    asserts:
+      - exists:
+          path: spec.template.metadata.annotations.checksum/config
+      - matchRegex: 
+          path: spec.template.metadata.annotations.checksum/config
+          pattern: "^[a-f0-9]{64}$"
   - it: should set pod annotations
+    template: deployment.yaml
     set:
       podAnnotations:
         foo: bar
@@ -177,10 +199,12 @@ tests:
 
   # spec.template.spec.imagePullSecrets
   - it: should not set imagePullSecrets by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.imagePullSecrets
   - it: should set imagePullSecrets
+    template: deployment.yaml
     set:
       imagePullSecrets:
         - test-secret
@@ -192,11 +216,13 @@ tests:
 
   # spec.template.spec.serviceAccountName
   - it: should set default service account name
+    template: deployment.yaml
     asserts:
       - equal:
           path: spec.template.spec.serviceAccountName
           value: polaris-release
   - it: should set service account name when serviceAccount.create is true
+    template: deployment.yaml
     set:
       serviceAccount:
         create: true
@@ -205,6 +231,7 @@ tests:
           path: spec.template.spec.serviceAccountName
           value: polaris-release
   - it: should set custom service account name when serviceAccount.create is 
true
+    template: deployment.yaml
     set:
       serviceAccount:
         create: true
@@ -214,6 +241,7 @@ tests:
           path: spec.template.spec.serviceAccountName
           value: polaris-sa
   - it: should set service account name to default when serviceAccount.create 
is false
+    template: deployment.yaml
     set:
       serviceAccount:
         create: false
@@ -222,6 +250,7 @@ tests:
           path: spec.template.spec.serviceAccountName
           value: default
   - it: should set custom service account name when serviceAccount.create is 
false
+    template: deployment.yaml
     set:
       serviceAccount:
         create: false
@@ -233,6 +262,7 @@ tests:
 
   # spec.template.spec.securityContext
   - it: should set securityContext by default
+    template: deployment.yaml
     asserts:
       - isSubset:
           path: spec.template.spec.securityContext
@@ -241,6 +271,7 @@ tests:
             seccompProfile:
               type: RuntimeDefault
   - it: should set custom securityContext
+    template: deployment.yaml
     set:
       podSecurityContext:
         fsGroup: 1234
@@ -252,6 +283,7 @@ tests:
 
   # spec.template.spec.containers
   - it: should set container name
+    template: deployment.yaml
     asserts:
       - equal:
           path: spec.template.spec.containers[0].name
@@ -259,6 +291,7 @@ tests:
 
   # spec.template.spec.containers[0].securityContext
   - it: should set container securityContext by default
+    template: deployment.yaml
     asserts:
       - isSubset:
           path: spec.template.spec.containers[0].securityContext
@@ -271,6 +304,7 @@ tests:
             seccompProfile:
               type: RuntimeDefault
   - it: should set custom container securityContext
+    template: deployment.yaml
     set:
       containerSecurityContext:
         allowPrivilegeEscalation: true
@@ -286,6 +320,7 @@ tests:
 
   # spec.template.spec.containers[0].image
   - it: should set container image
+    template: deployment.yaml
     set:
       image:
         repository: test-repo
@@ -295,6 +330,7 @@ tests:
           path: spec.template.spec.containers[0].image
           value: test-repo:test-tag
   - it: should set container image with template
+    template: deployment.yaml
     set:
       image:
         repository: test-repo-{{ .Chart.Version }}
@@ -304,6 +340,7 @@ tests:
           path: spec.template.spec.containers[0].image
           value: test-repo-1.2.3:test-tag-polaris-release
   - it: should set container image with chart version if no tag provided
+    template: deployment.yaml
     set:
       image:
         repository: test-repo
@@ -315,6 +352,7 @@ tests:
 
   # spec.template.spec.containers[0].imagePullPolicy
   - it: should set container pull policy
+    template: deployment.yaml
     set:
       image:
         pullPolicy: Always
@@ -325,10 +363,12 @@ tests:
 
   # spec.template.spec.containers[0].env
   - it: should not set container env by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.containers[0].env
   - it: should set container env
+    template: deployment.yaml
     set:
       extraEnv:
         - name: foo
@@ -342,6 +382,7 @@ tests:
 
   # spec.template.spec.containers[0].volumeMounts + spec.template.spec.volumes
   - it: should not set persistence volumes by default
+    template: deployment.yaml
     asserts:
       - lengthEqual:
           path: spec.template.spec.volumes
@@ -358,6 +399,7 @@ tests:
 
   # spec.template.spec.containers[0].ports
   - it: should set container ports by default
+    template: deployment.yaml
     asserts:
       - lengthEqual:
           path: spec.template.spec.containers[0].ports
@@ -376,6 +418,7 @@ tests:
             protocol: TCP
 
   - it: should set custom container ports
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -415,6 +458,7 @@ tests:
             protocol: TCP
 
   - it: should use targetPort if defined
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -456,6 +500,7 @@ tests:
             protocol: TCP
 
   - it: should fail if port name is not unique (#1)
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -468,6 +513,7 @@ tests:
           errorPattern: "service.ports\\[\\d\\]: port name already taken: 
polaris-http"
 
   - it: should fail if port name is not unique (#2)
+    template: deployment.yaml
     set:
       managementService:
         ports:
@@ -480,6 +526,7 @@ tests:
           errorPattern: "managementService.ports\\[\\d\\]: port name already 
taken: polaris-mgmt"
 
   - it: should fail if port name is not unique (#3)
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -494,6 +541,7 @@ tests:
           errorPattern: "managementService.ports\\[\\d\\]: port name already 
taken: polaris"
 
   - it: should not fail when extra service references the same port name and 
number
+    template: deployment.yaml
     set:
       extraServices:
         - nameSuffix: "-extra"
@@ -519,6 +567,7 @@ tests:
             protocol: TCP
 
   - it: should fail when extra service references the same port name with 
different number (#1)
+    template: deployment.yaml
     set:
       extraServices:
         - nameSuffix: "-extra"
@@ -531,6 +580,7 @@ tests:
             errorPattern: "extraServices\\[\\d\\].ports\\[\\d\\]: wrong port 
number for port polaris-http, expected 8181, got 9999"
 
   - it: should fail when extra service references the same port name with 
different number (#2)
+    template: deployment.yaml
     set:
       extraServices:
         - nameSuffix: "-extra"
@@ -543,6 +593,7 @@ tests:
             errorPattern: "extraServices\\[\\d\\].ports\\[\\d\\]: wrong port 
number for port polaris-mgmt, expected 8182, got 9999"
 
   - it: should fail when extra service references the same port name with 
different number (#3)
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -561,6 +612,7 @@ tests:
             errorPattern: "extraServices\\[\\d\\].ports\\[\\d\\]: wrong port 
number for port polaris-https, expected 8043, got 9999"
 
   - it: should fail when extra service references the same port name with 
different protocol
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -578,6 +630,7 @@ tests:
             errorPattern: "extraServices\\[\\d\\].ports\\[\\d\\]: wrong 
protocol for port polaris-http, expected TCP, got UDP"
 
   - it: should create 2 ports with same number
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -602,6 +655,7 @@ tests:
             containerPort: 8181
             protocol: TCP
   - it: should create 2 ports with same number using targetPort
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -628,6 +682,7 @@ tests:
             containerPort: 8181
             protocol: TCP
   - it: should set port protocols
+    template: deployment.yaml
     set:
       service:
         ports:
@@ -671,6 +726,7 @@ tests:
 
   # spec.template.spec.containers[0].livenessProbe
   - it: should set container livenessProbe by default
+    template: deployment.yaml
     set:
       managementService:
         ports:
@@ -700,6 +756,7 @@ tests:
 
   # spec.template.spec.containers[0].readinessProbe
   - it: should set container readinessProbe by default
+    template: deployment.yaml
     set:
       managementService:
         ports:
@@ -727,10 +784,12 @@ tests:
 
   # spec.template.spec.containers[0].resources
   - it: should not set container resources by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.containers[0].resources
   - it: should set container resources
+    template: deployment.yaml
     set:
       resources:
         requests:
@@ -752,10 +811,12 @@ tests:
 
   # spec.template.spec.nodeSelector
   - it: should not set nodeSelector by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.nodeSelector
   - it: should set nodeSelector
+    template: deployment.yaml
     set:
       nodeSelector:
         disktype: ssd
@@ -767,10 +828,12 @@ tests:
 
   # spec.template.spec.affinity
   - it: should not set affinity by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.affinity
   - it: should set affinity
+    template: deployment.yaml
     set:
       affinity:
         nodeAffinity:
@@ -798,10 +861,12 @@ tests:
 
   # spec.template.spec.tolerations
   - it: should not set tolerations by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.tolerations
   - it: should set tolerations
+    template: deployment.yaml
     set:
       tolerations:
         - key: "key"
@@ -818,6 +883,7 @@ tests:
               effect: "NoSchedule"
 
   - it: should set storage credentials
+    template: deployment.yaml
     set:
       storage:
         secret:
@@ -852,6 +918,7 @@ tests:
                 key: gcpToken
 
   - it: should set extra env
+    template: deployment.yaml
     set:
       extraEnv:
         - name: foo
@@ -877,6 +944,7 @@ tests:
                 key: key
 
   - it: should set extra env + storage credentials
+    template: deployment.yaml
     set:
       storage:
         secret:
@@ -901,11 +969,13 @@ tests:
                 key: awsAccessKeyId
 
   - it: should not set any environment variables by default
+    template: deployment.yaml
     asserts:
       - notExists:
           path: spec.template.spec.containers[0].env
 
   - it: should configure config volume
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
     asserts:
@@ -928,6 +998,7 @@ tests:
                         path: application.properties
 
   - it: should configure config volume with token broker secret (rsa-key-pair 
- deprecation)
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
       authentication:
@@ -970,6 +1041,7 @@ tests:
                         path: private.pem
 
   - it: should configure config volume with token broker secret (symmetric-key 
- deprecation)
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
       authentication:
@@ -1010,6 +1082,7 @@ tests:
                         path: symmetric.key
 
   - it: should configure config volume with token broker secret (rsa-key-pair)
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
       authentication:
@@ -1052,6 +1125,7 @@ tests:
                         path: private.pem
 
   - it: should configure config volume with token broker secret (symmetric-key)
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
       authentication:
@@ -1092,6 +1166,7 @@ tests:
                         path: symmetric.key
 
   - it: should configure config volume with authentication including per-realm 
overrides
+    template: deployment.yaml
     set:
       image.configDir: /config/dir
       authentication:
@@ -1144,6 +1219,7 @@ tests:
                   path: REALM+2/private.pem
 
   - it: should set relational-jdbc persistence environment variables
+    template: deployment.yaml
     set:
       persistence: { type: "relational-jdbc", relationalJdbc: { secret: { 
name: "polaris-persistence", username: "username", password: "password", 
jdbcUrl: "jdbcUrl" } } }
     asserts:
@@ -1173,6 +1249,7 @@ tests:
                 key: jdbcUrl
 
   - it: should configure volume for file logging
+    template: deployment.yaml
     set:
       logging.file.enabled: true
       logging.file.logsDir: /custom/logs
@@ -1191,6 +1268,7 @@ tests:
               claimName: polaris-release-logs
 
   - it: should include extra volumes and volume mounts
+    template: deployment.yaml
     set:
       extraVolumes:
         - name: extra-volume
@@ -1213,6 +1291,7 @@ tests:
             emptyDir: {}
 
   - it: should set OIDC client secret
+    template: deployment.yaml
     set:
       oidc: { client: { secret: { name: polaris-oidc-secret, key: 
client-secret } } }
     asserts:

Reply via email to