diff --git a/.changeset/nasty-teeth-camp.md b/.changeset/nasty-teeth-camp.md new file mode 100644 index 0000000..e4273a0 --- /dev/null +++ b/.changeset/nasty-teeth-camp.md @@ -0,0 +1,5 @@ +--- +"helm-charts": minor +--- + +feat: refactor image value + bump default tag to 2.0.0 diff --git a/charts/hdx-oss-v2/Chart.yaml b/charts/hdx-oss-v2/Chart.yaml index cda8a07..71b7f23 100644 --- a/charts/hdx-oss-v2/Chart.yaml +++ b/charts/hdx-oss-v2/Chart.yaml @@ -3,4 +3,4 @@ name: hdx-oss-v2 description: A Helm chart for HyperDX OSS V2 type: application version: 0.5.2 -appVersion: 1.0.0 +appVersion: 2.0.1 diff --git a/charts/hdx-oss-v2/templates/cronjobs/task-checkAlerts.yaml b/charts/hdx-oss-v2/templates/cronjobs/task-checkAlerts.yaml index b315012..193ce9f 100644 --- a/charts/hdx-oss-v2/templates/cronjobs/task-checkAlerts.yaml +++ b/charts/hdx-oss-v2/templates/cronjobs/task-checkAlerts.yaml @@ -20,7 +20,8 @@ spec: restartPolicy: OnFailure containers: - name: task - image: "{{ .Values.hyperdx.image }}" + image: "{{ .Values.hyperdx.image.repository }}:{{ .Values.hyperdx.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.hyperdx.image.pullPolicy }} command: ["node", "/app/api/build/tasks/index.js", "check-alerts"] envFrom: - configMapRef: @@ -32,4 +33,4 @@ spec: value: "hdx-oss-task-check-alerts" resources: {{- toYaml .Values.tasks.checkAlerts.resources | nindent 16 }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/charts/hdx-oss-v2/templates/hyperdx-deployment.yaml b/charts/hdx-oss-v2/templates/hyperdx-deployment.yaml index 63445a3..361d1ee 100644 --- a/charts/hdx-oss-v2/templates/hyperdx-deployment.yaml +++ b/charts/hdx-oss-v2/templates/hyperdx-deployment.yaml @@ -36,7 +36,8 @@ spec: {{- end }} containers: - name: app - image: "{{ .Values.hyperdx.image }}" + image: "{{ .Values.hyperdx.image.repository }}:{{ .Values.hyperdx.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.hyperdx.image.pullPolicy }} ports: - name: app-port containerPort: {{ .Values.hyperdx.appPort }} @@ -63,4 +64,4 @@ spec: {{- end }} {{- with .Values.hyperdx.env }} {{- toYaml . | nindent 12 }} - {{- end }} \ No newline at end of file + {{- end }} diff --git a/charts/hdx-oss-v2/templates/otel-collector-deployment.yaml b/charts/hdx-oss-v2/templates/otel-collector-deployment.yaml index ef5a313..b3f5c35 100644 --- a/charts/hdx-oss-v2/templates/otel-collector-deployment.yaml +++ b/charts/hdx-oss-v2/templates/otel-collector-deployment.yaml @@ -20,7 +20,8 @@ spec: spec: containers: - name: otel-collector - image: "{{ .Values.otel.image }}" + image: "{{ .Values.otel.image.repository }}:{{ .Values.otel.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.otel.image.pullPolicy }} ports: - containerPort: {{ .Values.otel.port }} - containerPort: {{ .Values.otel.nativePort }} diff --git a/charts/hdx-oss-v2/tests/__snapshot__/ingress_test.yaml.snap b/charts/hdx-oss-v2/tests/__snapshot__/ingress_test.yaml.snap deleted file mode 100644 index 7c43e62..0000000 --- a/charts/hdx-oss-v2/tests/__snapshot__/ingress_test.yaml.snap +++ /dev/null @@ -1,60 +0,0 @@ -should render additional ingress templates: - 1: | - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - annotations: - another: "yes" - testProperty: "true" - labels: - app.kubernetes.io/instance: RELEASE-NAME - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: hdx-oss-v2 - app.kubernetes.io/version: 1.0.0 - helm.sh/chart: hdx-oss-v2-0.5.2 - name: RELEASE-NAME-hdx-oss-v2-otel-collector - spec: - ingressClassName: nginx - rules: - - host: collector.example.com - http: - paths: - - backend: - service: - name: RELEASE-NAME-hdx-oss-v2 - port: - number: 4318 - path: / - pathType: Prefix -should render additional ingress templates with TLS enabled: - 1: | - apiVersion: networking.k8s.io/v1 - kind: Ingress - metadata: - annotations: - another: "yes" - testProperty: "true" - labels: - app.kubernetes.io/instance: RELEASE-NAME - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/name: hdx-oss-v2 - app.kubernetes.io/version: 1.0.0 - helm.sh/chart: hdx-oss-v2-0.5.2 - name: RELEASE-NAME-hdx-oss-v2-otel-collector - spec: - ingressClassName: nginx - rules: - - host: collector.example.com - http: - paths: - - backend: - service: - name: RELEASE-NAME-hdx-oss-v2 - port: - number: 4318 - path: / - pathType: Prefix - tls: - - hosts: - - collector.example.com - secretName: otel-collector-tls diff --git a/charts/hdx-oss-v2/tests/app-deployment_test.yaml b/charts/hdx-oss-v2/tests/app-deployment_test.yaml index ffd0817..1076f60 100644 --- a/charts/hdx-oss-v2/tests/app-deployment_test.yaml +++ b/charts/hdx-oss-v2/tests/app-deployment_test.yaml @@ -5,7 +5,9 @@ tests: - it: should render the app deployment correctly set: hyperdx: - image: hyperdx/hyperdx:2-beta + image: + repository: hyperdx/hyperdx + tag: 2-beta apiKey: test-api-key appPort: 3000 apiPort: 8000 @@ -38,7 +40,9 @@ tests: - it: should scale replicas when specified set: hyperdx: - image: hyperdx/hyperdx:2-beta + image: + repository: hyperdx/hyperdx + tag: 2-beta replicas: 3 asserts: - equal: diff --git a/charts/hdx-oss-v2/tests/default-env-vars_test.yaml b/charts/hdx-oss-v2/tests/default-env-vars_test.yaml index a66c72f..25d510b 100644 --- a/charts/hdx-oss-v2/tests/default-env-vars_test.yaml +++ b/charts/hdx-oss-v2/tests/default-env-vars_test.yaml @@ -117,7 +117,7 @@ tests: hyperdx: env: - name: DEFAULT_SOURCES - value: | + value: |- [ { "name": "HyperDX Logs", @@ -134,7 +134,7 @@ tests: path: spec.template.spec.containers[0].env content: name: DEFAULT_SOURCES - value: | + value: |- [ { "name": "HyperDX Logs", diff --git a/charts/hdx-oss-v2/tests/helpers_test.yaml b/charts/hdx-oss-v2/tests/helpers_test.yaml index 73123d8..508e9e7 100644 --- a/charts/hdx-oss-v2/tests/helpers_test.yaml +++ b/charts/hdx-oss-v2/tests/helpers_test.yaml @@ -44,7 +44,6 @@ tests: - it: should render chart version in labels when available asserts: - - isSubset: - path: metadata.labels - content: - app.kubernetes.io/version: "1.0.0" \ No newline at end of file + - matchRegex: + path: metadata.labels["app.kubernetes.io/version"] + pattern: ^\d+\.\d+\.\d+$ diff --git a/charts/hdx-oss-v2/tests/hyperdx-deployment_test.yaml b/charts/hdx-oss-v2/tests/hyperdx-deployment_test.yaml index 2310969..2125bf8 100644 --- a/charts/hdx-oss-v2/tests/hyperdx-deployment_test.yaml +++ b/charts/hdx-oss-v2/tests/hyperdx-deployment_test.yaml @@ -9,9 +9,9 @@ tests: - equal: path: spec.replicas value: 1 - - equal: + - matchRegex: path: spec.template.spec.containers[0].image - value: hyperdx/hyperdx:2-beta + pattern: ^docker\.hyperdx\.io/hyperdx/hyperdx:\d+\.\d+\.\d+$ - equal: path: spec.template.spec.containers[0].ports[0].containerPort value: 3000 @@ -106,4 +106,4 @@ tests: asserts: - equal: path: spec.template.spec.containers[0].ports[2].containerPort - value: 5320 \ No newline at end of file + value: 5320 diff --git a/charts/hdx-oss-v2/tests/ingress_test.yaml b/charts/hdx-oss-v2/tests/ingress_test.yaml index 142a559..15c4211 100644 --- a/charts/hdx-oss-v2/tests/ingress_test.yaml +++ b/charts/hdx-oss-v2/tests/ingress_test.yaml @@ -99,10 +99,63 @@ tests: asserts: - hasDocuments: count: 2 - - matchSnapshot: {} - documentSelector: + # Test the main app ingress (document 0) + - isKind: + of: Ingress + documentIndex: 0 + - equal: + path: metadata.name + value: RELEASE-NAME-hdx-oss-v2-app-ingress + documentIndex: 0 + - equal: + path: spec.rules[0].host + value: hyperdx.example.com + documentIndex: 0 + # Test the additional otel-collector ingress (document 1) + - isKind: + of: Ingress + documentIndex: 1 + - equal: path: metadata.name value: RELEASE-NAME-hdx-oss-v2-otel-collector + documentIndex: 1 + - equal: + path: metadata.annotations.testProperty + value: "true" + documentIndex: 1 + - equal: + path: metadata.annotations.another + value: "yes" + documentIndex: 1 + - equal: + path: spec.ingressClassName + value: nginx + documentIndex: 1 + - equal: + path: spec.rules[0].host + value: collector.example.com + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].path + value: / + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].pathType + value: Prefix + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].backend.service.port.number + value: 4318 + documentIndex: 1 + # Validate version-agnostic labels exist + - matchRegex: + path: metadata.labels["helm.sh/chart"] + pattern: ^hdx-oss-v2-\d+\.\d+\.\d+$ + documentIndex: 1 + - matchRegex: + path: metadata.labels["app.kubernetes.io/version"] + pattern: ^\d+\.\d+\.\d+$ + documentIndex: 1 - it: should render additional ingress templates with TLS enabled set: @@ -131,10 +184,72 @@ tests: asserts: - hasDocuments: count: 2 - - matchSnapshot: {} - documentSelector: + # Test the main app ingress (document 0) + - isKind: + of: Ingress + documentIndex: 0 + - equal: + path: metadata.name + value: RELEASE-NAME-hdx-oss-v2-app-ingress + documentIndex: 0 + - equal: + path: spec.rules[0].host + value: hyperdx.example.com + documentIndex: 0 + # Test the additional otel-collector ingress (document 1) + - isKind: + of: Ingress + documentIndex: 1 + - equal: path: metadata.name value: RELEASE-NAME-hdx-oss-v2-otel-collector + documentIndex: 1 + - equal: + path: metadata.annotations.testProperty + value: "true" + documentIndex: 1 + - equal: + path: metadata.annotations.another + value: "yes" + documentIndex: 1 + - equal: + path: spec.ingressClassName + value: nginx + documentIndex: 1 + - equal: + path: spec.rules[0].host + value: collector.example.com + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].path + value: / + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].pathType + value: Prefix + documentIndex: 1 + - equal: + path: spec.rules[0].http.paths[0].backend.service.port.number + value: 4318 + documentIndex: 1 + # Test TLS configuration + - equal: + path: spec.tls[0].secretName + value: otel-collector-tls + documentIndex: 1 + - contains: + path: spec.tls[0].hosts + content: collector.example.com + documentIndex: 1 + # Validate version-agnostic labels exist + - matchRegex: + path: metadata.labels["helm.sh/chart"] + pattern: ^hdx-oss-v2-\d+\.\d+\.\d+$ + documentIndex: 1 + - matchRegex: + path: metadata.labels["app.kubernetes.io/version"] + pattern: ^\d+\.\d+\.\d+$ + documentIndex: 1 - it: should fail when annotations of the additional ingresses is not a map of strings set: diff --git a/charts/hdx-oss-v2/tests/otel-collector_test.yaml b/charts/hdx-oss-v2/tests/otel-collector_test.yaml index ab6cc5e..e483a0e 100644 --- a/charts/hdx-oss-v2/tests/otel-collector_test.yaml +++ b/charts/hdx-oss-v2/tests/otel-collector_test.yaml @@ -5,7 +5,9 @@ tests: - it: should render both deployment and service when enabled set: otel: - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta port: 13133 nativePort: 24225 grpcPort: 4317 @@ -34,8 +36,13 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: nativePort: 9000 @@ -99,9 +106,14 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta clickhouseEndpoint: "tcp://custom-clickhouse:9000" hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: debug clickhouse: prometheus: @@ -234,9 +246,14 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta clickhousePrometheusEndpoint: "external-clickhouse:8080/custom-metrics" hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: prometheus: @@ -263,8 +280,13 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: prometheus: @@ -288,9 +310,14 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta opampServerUrl: "https://custom-opamp-server:8080" hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: config: @@ -313,8 +340,13 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: config: @@ -337,9 +369,14 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta clickhouseDatabase: "custom_db" hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: config: @@ -362,10 +399,15 @@ tests: set: otel: enabled: true - image: hyperdx/hyperdx-otel-collector:2-beta + image: + repository: hyperdx/hyperdx-otel-collector + tag: 2-beta clickhouseUser: "custom-user" clickhousePassword: "custom-password" hyperdx: + image: + repository: hyperdx/hyperdx + tag: 2-beta logLevel: info clickhouse: config: @@ -388,4 +430,4 @@ tests: path: spec.template.spec.containers[0].env content: name: CLICKHOUSE_PASSWORD - value: "custom-password" \ No newline at end of file + value: "custom-password" diff --git a/charts/hdx-oss-v2/tests/secrets_test.yaml b/charts/hdx-oss-v2/tests/secrets_test.yaml index 1c41cc9..8a9b0cc 100644 --- a/charts/hdx-oss-v2/tests/secrets_test.yaml +++ b/charts/hdx-oss-v2/tests/secrets_test.yaml @@ -73,7 +73,10 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: hdx-oss-v2 - app.kubernetes.io/version: 1.0.0 + documentIndex: 0 + - matchRegex: + path: metadata.labels["app.kubernetes.io/version"] + pattern: ^\d+\.\d+\.\d+$ documentIndex: 0 - isSubset: path: metadata.labels @@ -81,7 +84,10 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: hdx-oss-v2 - app.kubernetes.io/version: 1.0.0 + documentIndex: 1 + - matchRegex: + path: metadata.labels["app.kubernetes.io/version"] + pattern: ^\d+\.\d+\.\d+$ documentIndex: 1 # Validate chart version format without exact match - matchRegex: @@ -99,4 +105,4 @@ tests: enabled: false asserts: - hasDocuments: - count: 1 \ No newline at end of file + count: 1 diff --git a/charts/hdx-oss-v2/tests/task-checkAlerts_test.yaml b/charts/hdx-oss-v2/tests/task-checkAlerts_test.yaml index 2ac6a4e..fe3d31b 100644 --- a/charts/hdx-oss-v2/tests/task-checkAlerts_test.yaml +++ b/charts/hdx-oss-v2/tests/task-checkAlerts_test.yaml @@ -24,7 +24,9 @@ tests: cpu: 150m memory: 150Mi hyperdx: - image: hyperdx/hyperdx:2-beta + image: + repository: hyperdx/hyperdx + tag: 2-beta asserts: - isKind: of: CronJob @@ -69,4 +71,4 @@ tests: asserts: - equal: path: spec.schedule - value: "*/1 * * * *" \ No newline at end of file + value: "*/1 * * * *" diff --git a/charts/hdx-oss-v2/values.yaml b/charts/hdx-oss-v2/values.yaml index 153cf65..72f5170 100644 --- a/charts/hdx-oss-v2/values.yaml +++ b/charts/hdx-oss-v2/values.yaml @@ -4,7 +4,10 @@ global: storageClassName: "local-path" hyperdx: - image: "hyperdx/hyperdx:2-beta" + image: + repository: docker.hyperdx.io/hyperdx/hyperdx + tag: + pullPolicy: IfNotPresent apiKey: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" apiPort: 8000 appPort: 3000 @@ -207,7 +210,10 @@ clickhouse: - "192.168.0.0/16" # OrbStack, Minikube, and local development otel: - image: "hyperdx/hyperdx-otel-collector:2-beta" + image: + repository: docker.hyperdx.io/hyperdx/hyperdx-otel-collector + tag: + pullPolicy: IfNotPresent port: 13133 nativePort: 24225 grpcPort: 4317