diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml index 5b00b5be..f15fadd1 100644 --- a/.github/workflows/lint-test.yaml +++ b/.github/workflows/lint-test.yaml @@ -69,4 +69,5 @@ jobs: cmctl check api --wait=5m - name: Run chart-testing (install) - run: ct install --config ct.yaml + run: | + ct install --config ct.yaml --helm-extra-set-args "--set provisionDataStore.cassandra=false --set storage.type=memory --set allInOne.enabled=true --set agent.enabled=false --set collector.enabled=false --set query.enabled=false" diff --git a/charts/jaeger/Chart.yaml b/charts/jaeger/Chart.yaml index 7b103ab6..b124478b 100644 --- a/charts/jaeger/Chart.yaml +++ b/charts/jaeger/Chart.yaml @@ -1,9 +1,9 @@ apiVersion: v2 -appVersion: 1.53.0 +appVersion: 2.0.0-rc2 description: A Jaeger Helm chart for Kubernetes name: jaeger type: application -version: 3.3.1 +version: 3.3.2 # CronJobs require v1.21 kubeVersion: ">= 1.21-0" keywords: diff --git a/charts/jaeger/templates/_helpers.tpl b/charts/jaeger/templates/_helpers.tpl index f4db73be..5896b372 100644 --- a/charts/jaeger/templates/_helpers.tpl +++ b/charts/jaeger/templates/_helpers.tpl @@ -559,17 +559,17 @@ If not tag is provided, it defaults to .Chart.AppVersion. {{- end -}} {{/* -Create image name for all in one image +Create image name for jaeger-v2 image */}} -{{- define "allInOne.image" -}} -{{- include "renderImage" ( dict "imageRoot" .Values.allInOne.image "context" $ ) -}} +{{- define "jaeger.image" -}} +{{- include "renderImage" ( dict "imageRoot" .Values.jaeger.image "context" $ ) -}} {{- end -}} {{/* -Create pull secrets for all in one image +Create pull secrets for jaeger-v2 image */}} -{{- define "allInOne.imagePullSecrets" -}} -{{- include "common.images.renderPullSecrets" (dict "images" (list .Values.allInOne.image) "context" $) -}} +{{- define "jaeger.imagePullSecrets" -}} +{{- include "common.images.renderPullSecrets" (dict "images" (list .Values.jaeger.image) "context" $) -}} {{- end }} {{/* @@ -719,3 +719,28 @@ Create pull secrets for hotrod image {{- define "hotrod.imagePullSecrets" -}} {{- include "common.images.renderPullSecrets" (dict "images" (list .Values.hotrod.image) "context" $) -}} {{- end }} + + +{{- define "jaeger.extensionsConfig" -}} +{{ toYaml .Values.config.extensions | nindent 6 }} +{{- end }} + +{{- define "jaeger.receiversConfig" -}} +{{ toYaml .Values.config.receivers | nindent 6 }} +{{- end }} + +{{- define "jaeger.processorsConfig" -}} +{{ toYaml .Values.config.processors | nindent 6 }} +{{- end }} + +{{- define "jaeger.exportersConfig" -}} +{{ toYaml .Values.config.exporters | nindent 6 }} +{{- end }} + +{{- define "jaeger.namespace" -}} + {{- if .Values.namespaceOverride -}} + {{- .Values.namespaceOverride -}} + {{- else -}} + {{- .Release.Namespace -}} + {{- end -}} +{{- end -}} diff --git a/charts/jaeger/templates/allinone-sa.yaml b/charts/jaeger/templates/allinone-sa.yaml deleted file mode 100644 index a0fbb5a0..00000000 --- a/charts/jaeger/templates/allinone-sa.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.allInOne.enabled -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "jaeger.fullname" . }} - labels: - {{- include "jaeger.labels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one - {{- with .Values.allInOne.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -automountServiceAccountToken: {{ .Values.allInOne.serviceAccount.automountServiceAccountToken }} -{{- end -}} diff --git a/charts/jaeger/templates/allinone-deploy.yaml b/charts/jaeger/templates/jaeger-deploy.yaml similarity index 69% rename from charts/jaeger/templates/allinone-deploy.yaml rename to charts/jaeger/templates/jaeger-deploy.yaml index aae25811..fa3025da 100644 --- a/charts/jaeger/templates/allinone-deploy.yaml +++ b/charts/jaeger/templates/jaeger-deploy.yaml @@ -1,40 +1,40 @@ -{{- if .Values.allInOne.enabled -}} +{{- if .Values.jaeger.storage.memory.enabled -}} apiVersion: apps/v1 kind: Deployment metadata: name: {{ template "jaeger.fullname" . }} labels: {{- include "jaeger.labels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jaeger prometheus.io/port: "14269" prometheus.io/scrape: "true" spec: - {{- if hasKey .Values.allInOne "replicas" }} - replicas: {{ .Values.allInOne.replicas }} + {{- if hasKey .Values.jaeger "replicas" }} + replicas: {{ .Values.jaeger.replicas }} {{- end }} strategy: type: Recreate selector: matchLabels: {{- include "jaeger.selectorLabels" . | nindent 6 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jaeger template: metadata: labels: {{- include "jaeger.selectorLabels" . | nindent 8 }} - app.kubernetes.io/component: all-in-one -{{- if .Values.allInOne.podLabels }} - {{- toYaml .Values.allInOne.podLabels | nindent 8 }} + app.kubernetes.io/component: jaeger +{{- if .Values.jaeger.podLabels }} + {{- toYaml .Values.jaeger.podLabels | nindent 8 }} {{- end }} annotations: prometheus.io/port: "14269" prometheus.io/scrape: "true" spec: - {{- include "allInOne.imagePullSecrets" . | nindent 6 }} + {{- include "jaeger.imagePullSecrets" . | nindent 6 }} containers: - env: - {{- if .Values.allInOne.extraEnv }} - {{- toYaml .Values.allInOne.extraEnv | nindent 12 }} + {{- if .Values.jaeger.extraEnv }} + {{- toYaml .Values.jaeger.extraEnv | nindent 12 }} {{- end }} - name: SPAN_STORAGE_TYPE value: {{ .Values.storage.type }} @@ -45,22 +45,21 @@ spec: value: "false" - name: COLLECTOR_OTLP_ENABLED value: "true" - {{- if .Values.allInOne.samplingConfig }} + {{- if .Values.jaeger.samplingConfig }} - name: SAMPLING_STRATEGIES_FILE value: /etc/conf/strategies.json {{- end }} - {{- with .Values.allInOne.envFrom }} + {{- with .Values.jaeger.envFrom }} envFrom: {{- toYaml . | nindent 12 }} {{- end }} securityContext: - {{- toYaml .Values.allInOne.securityContext | nindent 12 }} - image: {{ include "allInOne.image" . }} - imagePullPolicy: {{ .Values.allInOne.image.pullPolicy }} + {{- toYaml .Values.jaeger.securityContext | nindent 12 }} + image: {{ include "jaeger.image" . }} + imagePullPolicy: {{ .Values.jaeger.image.pullPolicy }} name: jaeger args: - {{- range $arg := .Values.allInOne.args }} - - "{{ tpl $arg $ }}" - {{- end }} + - "--config" + - "/etc/jaeger/config.yaml" ports: - containerPort: 5775 protocol: UDP @@ -83,9 +82,9 @@ spec: livenessProbe: failureThreshold: 5 httpGet: - path: / - port: 14269 scheme: HTTP + path: /status + port: 13133 initialDelaySeconds: 5 periodSeconds: 15 successThreshold: 1 @@ -93,64 +92,69 @@ spec: readinessProbe: failureThreshold: 3 httpGet: - path: / - port: 14269 scheme: HTTP + path: /status + port: 13133 initialDelaySeconds: 1 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 - {{- with .Values.allInOne.resources }} + {{- with .Values.jaeger.resources }} resources: {{- toYaml . | nindent 12 }} {{- end }} volumeMounts: + - name: jaeger-config + mountPath: /etc/jaeger {{- if not .Values.storage.badger.ephemeral }} - name: badger-data mountPath: {{ .Values.storage.badger.persistence.mountPath }} {{- end }} - {{- if .Values.allInOne.samplingConfig}} + {{- if .Values.jaeger.samplingConfig}} - name: strategies mountPath: /etc/conf/ {{- end }} - {{- range .Values.allInOne.extraSecretMounts }} + {{- range .Values.jaeger.extraSecretMounts }} - name: {{ .name }} mountPath: {{ .mountPath }} subPath: {{ .subPath }} readOnly: {{ .readOnly }} {{- end }} securityContext: - {{- toYaml .Values.allInOne.podSecurityContext | nindent 8 }} + {{- toYaml .Values.jaeger.podSecurityContext | nindent 8 }} serviceAccountName: {{ template "jaeger.fullname" . }} volumes: + - name: jaeger-config + configMap: + name: jaeger-configmap {{- if not .Values.storage.badger.ephemeral }} - name: badger-data persistentVolumeClaim: claimName: {{ .Values.storage.badger.persistence.useExistingPvcName | required "Using badger persistence it is required to set an existing PVC" }} {{- end }} - {{- if .Values.allInOne.samplingConfig}} + {{- if .Values.jaeger.samplingConfig}} - name: strategies configMap: name: {{ include "jaeger.fullname" . }}-sampling-strategies {{- end }} - {{- range .Values.allInOne.extraSecretMounts }} + {{- range .Values.jaeger.extraSecretMounts }} - name: {{ .name }} secret: secretName: {{ .secretName }} {{- end }} - {{- with .Values.allInOne.affinity }} + {{- with .Values.jaeger.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.allInOne.topologySpreadConstraints }} + {{- with .Values.jaeger.topologySpreadConstraints }} topologySpreadConstraints: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.allInOne.nodeSelector }} + {{- with .Values.jaeger.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} - {{- with .Values.allInOne.tolerations }} + {{- with .Values.jaeger.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} diff --git a/charts/jaeger/templates/allinone-ing.yaml b/charts/jaeger/templates/jaeger-ing.yaml similarity index 53% rename from charts/jaeger/templates/allinone-ing.yaml rename to charts/jaeger/templates/jaeger-ing.yaml index 803748b1..2363b86d 100644 --- a/charts/jaeger/templates/allinone-ing.yaml +++ b/charts/jaeger/templates/jaeger-ing.yaml @@ -1,4 +1,4 @@ -{{- if and (.Values.allInOne.enabled) (.Values.allInOne.ingress.enabled) -}} +{{- if and (.Values.jaeger.storage.memory.enabled) (.Values.jaeger.ingress.enabled) -}} {{- $ingressSupportsIngressClassName := eq (include "common.ingress.supportsIngressClassname" .) "true" }} apiVersion: networking.k8s.io/v1 kind: Ingress @@ -6,26 +6,26 @@ metadata: name: {{ template "jaeger.query.name" . }} labels: {{- include "jaeger.labels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one - {{- if .Values.allInOne.ingress.annotations }} + app.kubernetes.io/component: jaeger + {{- if .Values.jaeger.ingress.annotations }} annotations: - {{- toYaml .Values.allInOne.ingress.annotations | nindent 4 }} + {{- toYaml .Values.jaeger.ingress.annotations | nindent 4 }} {{- end }} spec: - {{- if and $ingressSupportsIngressClassName .Values.allInOne.ingress.ingressClassName }} - ingressClassName: {{ .Values.allInOne.ingress.ingressClassName }} + {{- if and $ingressSupportsIngressClassName .Values.jaeger.ingress.ingressClassName }} + ingressClassName: {{ .Values.jaeger.ingress.ingressClassName }} {{- end }} rules: - {{- range $host := .Values.allInOne.ingress.hosts }} + {{- range $host := .Values.jaeger.ingress.hosts }} - host: {{ $host }} http: paths: - path: / - pathType: {{ default "ImplementationSpecific" $.Values.allInOne.ingress.pathType }} + pathType: {{ default "ImplementationSpecific" $.Values.jaeger.ingress.pathType }} backend: {{- include "common.ingress.backend" (dict "serviceName" (include "jaeger.query.name" $) "servicePort" 16686 "context" $) | nindent 14 }} {{- end -}} - {{- if .Values.allInOne.ingress.tls }} + {{- if .Values.jaeger.ingress.tls }} tls: - {{- toYaml .Values.allInOne.ingress.tls | nindent 4 }} + {{- toYaml .Values.jeager.ingress.tls | nindent 4 }} {{- end -}} {{- end -}} diff --git a/charts/jaeger/templates/allinone-collector-svc.yaml b/charts/jaeger/templates/jaeger-memory-collector-svc.yaml similarity index 80% rename from charts/jaeger/templates/allinone-collector-svc.yaml rename to charts/jaeger/templates/jaeger-memory-collector-svc.yaml index 7f319cac..4eb47948 100644 --- a/charts/jaeger/templates/allinone-collector-svc.yaml +++ b/charts/jaeger/templates/jaeger-memory-collector-svc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.allInOne.enabled -}} +{{- if .Values.jaeger.storage.memory.enabled -}} apiVersion: v1 kind: Service metadata: @@ -7,7 +7,7 @@ metadata: {{- include "jaeger.labels" . | nindent 4 }} app.kubernetes.io/component: service-collector spec: - clusterIP: {{ .Values.allInOne.service.headless | ternary "None" "null" }} + clusterIP: {{ .Values.jaeger.service.headless | ternary "None" "null" }} ports: - name: http-zipkin port: 9411 @@ -30,13 +30,13 @@ spec: {{- if semverCompare ">=1.20" .Capabilities.KubeVersion.Version }} appProtocol: http {{- end }} - - name: {{ .Values.allInOne.service.collector.otlp.grpc.name }} + - name: {{ .Values.jaeger.service.collector.otlp.grpc.name }} port: 4317 targetPort: 0 {{- if semverCompare ">=1.20" .Capabilities.KubeVersion.Version }} appProtocol: grpc {{- end }} - - name: {{ .Values.allInOne.service.collector.otlp.http.name }} + - name: {{ .Values.jaeger.service.collector.otlp.http.name }} port: 4318 targetPort: 0 {{- if semverCompare ">=1.20" .Capabilities.KubeVersion.Version }} @@ -44,5 +44,5 @@ spec: {{- end }} selector: {{- include "jaeger.selectorLabels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jaeger {{- end -}} diff --git a/charts/jaeger/templates/jaeger-memory-config.yaml b/charts/jaeger/templates/jaeger-memory-config.yaml new file mode 100644 index 00000000..a0b17f28 --- /dev/null +++ b/charts/jaeger/templates/jaeger-memory-config.yaml @@ -0,0 +1,27 @@ +{{- if .Values.jaeger.storage.memory.enabled -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: jaeger-configmap + namespace: {{ include "jaeger.namespace" . }} + labels: + {{- include "jaeger.labels" . | nindent 4 }} +data: + config.yaml: | + service: + extensions: [{{ join ", " .Values.config.service.extensions }}] + pipelines: + traces: + receivers: [{{ join ", " .Values.config.service.pipelines.traces.receivers }}] + processors: [{{ join ", " .Values.config.service.pipelines.traces.processors }}] + exporters: [{{ join ", " .Values.config.service.pipelines.traces.exporters }}] + + extensions: + {{- include "jaeger.extensionsConfig" . | nindent 6 }} + receivers: + {{- include "jaeger.receiversConfig" . | nindent 6 }} + processors: + {{- include "jaeger.processorsConfig" . | nindent 6 }} + exporters: + {{- include "jaeger.exportersConfig" . | nindent 6 }} +{{- end }} \ No newline at end of file diff --git a/charts/jaeger/templates/allinone-configmap.yaml b/charts/jaeger/templates/jaeger-memory-configmap.yaml similarity index 58% rename from charts/jaeger/templates/allinone-configmap.yaml rename to charts/jaeger/templates/jaeger-memory-configmap.yaml index 99f93b61..cd7d3406 100644 --- a/charts/jaeger/templates/allinone-configmap.yaml +++ b/charts/jaeger/templates/jaeger-memory-configmap.yaml @@ -1,12 +1,12 @@ -{{- if .Values.allInOne.samplingConfig }} +{{- if .Values.jaeger.samplingConfig }} apiVersion: v1 kind: ConfigMap metadata: name: {{ include "jaeger.fullname" . }}-sampling-strategies labels: {{- include "jaeger.labels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jeager data: strategies.json: |- -{{ tpl .Values.allInOne.samplingConfig . | indent 4 }} +{{ tpl .Values.jaeger.samplingConfig . | indent 4 }} {{- end }} diff --git a/charts/jaeger/templates/allinone-query-svc.yaml b/charts/jaeger/templates/jaeger-memory-query-svc.yaml similarity index 82% rename from charts/jaeger/templates/allinone-query-svc.yaml rename to charts/jaeger/templates/jaeger-memory-query-svc.yaml index 5f0c2f50..63eb2563 100644 --- a/charts/jaeger/templates/allinone-query-svc.yaml +++ b/charts/jaeger/templates/jaeger-memory-query-svc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.allInOne.enabled -}} +{{- if .Values.jaeger.storage.memory.enabled -}} apiVersion: v1 kind: Service metadata: @@ -17,5 +17,5 @@ spec: targetPort: 16685 selector: {{- include "jaeger.selectorLabels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jaeger {{- end -}} diff --git a/charts/jaeger/templates/jaeger-memory-sa.yaml b/charts/jaeger/templates/jaeger-memory-sa.yaml new file mode 100644 index 00000000..e8979fea --- /dev/null +++ b/charts/jaeger/templates/jaeger-memory-sa.yaml @@ -0,0 +1,14 @@ +{{- if .Values.jaeger.storage.memory.enabled -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "jaeger.fullname" . }} + labels: + {{- include "jaeger.labels" . | nindent 4 }} + app.kubernetes.io/component: jaeger + {{- with .Values.jaeger.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.jaeger.serviceAccount.automountServiceAccountToken }} +{{- end -}} diff --git a/charts/jaeger/templates/allinone-agent-svc.yaml b/charts/jaeger/templates/jaeger_memory-agent-svc.yaml similarity index 87% rename from charts/jaeger/templates/allinone-agent-svc.yaml rename to charts/jaeger/templates/jaeger_memory-agent-svc.yaml index bc3c8b6c..025072d9 100644 --- a/charts/jaeger/templates/allinone-agent-svc.yaml +++ b/charts/jaeger/templates/jaeger_memory-agent-svc.yaml @@ -1,4 +1,4 @@ -{{- if .Values.allInOne.enabled -}} +{{- if .Values.jaeger.storage.memory.enabled -}} apiVersion: v1 kind: Service metadata: @@ -26,5 +26,5 @@ spec: targetPort: 0 selector: {{- include "jaeger.selectorLabels" . | nindent 4 }} - app.kubernetes.io/component: all-in-one + app.kubernetes.io/component: jaeger {{- end -}} diff --git a/charts/jaeger/values.yaml b/charts/jaeger/values.yaml index e7715b21..49409ffe 100644 --- a/charts/jaeger/values.yaml +++ b/charts/jaeger/values.yaml @@ -2,30 +2,15 @@ # This is a YAML-formatted file. # Jaeger values are grouped by component. Cassandra values override subchart values -global: - imageRegistry: - -provisionDataStore: - cassandra: true - elasticsearch: false - kafka: false - -networkPolicy: - enabled: false - -# Overrides the image tag where default is the chart appVersion. -tag: "" - -nameOverride: "" -fullnameOverride: "" - -allInOne: - enabled: false +jaeger: + storage: + memory: + enabled: true replicas: 1 image: registry: "" - repository: jaegertracing/all-in-one - tag: "" + repository: jaegertracing/jaeger + tag: "2.0.0-rc2" digest: "" pullPolicy: IfNotPresent pullSecrets: [] @@ -95,6 +80,75 @@ allInOne: runAsGroup: 10001 fsGroup: 10001 securityContext: {} +config: + service: + extensions: [jaeger_storage, jaeger_query, healthcheckv2] + pipelines: + traces: + receivers: [otlp, jaeger, zipkin] + processors: [batch] + exporters: [jaeger_storage_exporter] + + extensions: + healthcheckv2: + use_v2: true + http: + endpoint: 0.0.0.0:13133 + + # pprof: + # endpoint: 0.0.0.0:1777 + # zpages: + # endpoint: 0.0.0.0:55679 + + jaeger_query: + storage: + traces: primary_store + traces_archive: archive_store + + jaeger_storage: + backends: + primary_store: + memory: + max_traces: 100000 + archive_store: + memory: + max_traces: 100000 + + receivers: + otlp: + protocols: + grpc: + http: + jaeger: + protocols: + grpc: + zipkin: + + processors: + batch: + + exporters: + jaeger_storage_exporter: + trace_storage: primary_store +# The following settings apply to Jaeger v1 and partially to Jaeger v2 + +global: + imageRegistry: + +provisionDataStore: + cassandra: true + elasticsearch: false + kafka: false + +networkPolicy: + enabled: false + +# Overrides the image tag where default is the chart appVersion. +tag: "" + +nameOverride: "" +fullnameOverride: "" + storage: # allowed values (cassandra, elasticsearch, grpc-plugin, badger, memory) diff --git a/ct-v2.yaml b/ct-v2.yaml new file mode 100644 index 00000000..3447e9a6 --- /dev/null +++ b/ct-v2.yaml @@ -0,0 +1,10 @@ +# See https://github.com/helm/chart-testing#configuration +remote: origin +chart-dirs: + - charts +chart-repos: + - incubator=https://charts.helm.sh/incubator + - elastic=https://helm.elastic.co + - bitnami=https://charts.bitnami.com/bitnami +helm-extra-args: --timeout=600s --debug +target-branch: main