Trouble configuring Azure Blob Storage with latest loki helm chart (3.4.4)

I keep getting the same linting errors:

╰─ helm lint . -f values-loki.yaml
==> Linting .
[INFO] Chart.yaml: icon is recommended
[ERROR] templates/: template: detect/charts/loki/templates/write/statefulset-write.yaml:50:28: executing "detect/charts/loki/templates/write/statefulset-write.yaml" at <include (print .Template.BasePath "/config.yaml") .>: error calling include: template: detect/charts/loki/templates/config.yaml:19:7: executing "detect/charts/loki/templates/config.yaml" at <include "loki.calculatedConfig" .>: error calling include: template: detect/charts/loki/templates/_helpers.tpl:537:24: executing "loki.calculatedConfig" at <tpl .Values.loki.config .>: error calling tpl: error during tpl function execution for "{{- if .Values.enterprise.enabled}}\n{{- tpl .Values.enterprise.config . }}\n{{- else }}\nauth_enabled: {{ .Values.loki.auth_enabled }}\n{{- end }}\n\n{{- with .Values.loki.server }}\nserver:\n  {{- toYaml . | nindent 2}}\n{{- end}}\n\npattern_ingester:\n  enabled: {{ .Values.loki.pattern_ingester.enabled }}\n\nmemberlist:\n{{- if .Values.loki.memberlistConfig }}\n  {{- toYaml .Values.loki.memberlistConfig | nindent 2 }}\n{{- else }}\n{{- if .Values.loki.extraMemberlistConfig}}\n{{- toYaml .Values.loki.extraMemberlistConfig | nindent 2}}\n{{- end }}\n  join_members:\n    - {{ include \"loki.memberlist\" . }}\n    {{- with .Values.migrate.fromDistributed }}\n    {{- if .enabled }}\n    - {{ .memberlistService }}\n    {{- end }}\n    {{- end }}\n{{- end }}\n\n{{- with .Values.loki.ingester }}\ningester:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- if .Values.loki.commonConfig}}\ncommon:\n{{- toYaml .Values.loki.commonConfig | nindent 2}}\n  storage:\n  {{- include \"loki.commonStorageConfig\" . | nindent 4}}\n{{- end}}\n\n{{- with .Values.loki.limits_config }}\nlimits_config:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\nruntime_config:\n  file: /etc/loki/runtime-config/runtime-config.yaml\n\n{{- with .Values.chunksCache }}\n{{- if .enabled }}\nchunk_store_config:\n  chunk_cache_config:\n    default_validity: {{ .defaultValidity }}\n    background:\n      writeback_goroutines: {{ .writebackParallelism }}\n      writeback_buffer: {{ .writebackBuffer }}\n      writeback_size_limit: {{ .writebackSizeLimit }}\n    memcached:\n      batch_size: {{ .batchSize }}\n      parallelism: {{ .parallelism }}\n    memcached_client:\n      addresses: dnssrvnoa+_memcached-client._tcp.{{ template \"loki.fullname\" $ }}-chunks-cache.{{ $.Release.Namespace }}.svc\n      consistent_hash: true\n      timeout: {{ .timeout }}\n      max_idle_conns: 72\n{{- end }}\n{{- end }}\n\n{{- if .Values.loki.schemaConfig }}\nschema_config:\n{{- toYaml .Values.loki.schemaConfig | nindent 2}}\n{{- end }}\n\n{{- if .Values.loki.useTestSchema }}\nschema_config:\n{{- toYaml .Values.loki.testSchemaConfig | nindent 2}}\n{{- end }}\n\n{{ include \"loki.rulerConfig\" . }}\n\n{{- if or .Values.tableManager.retention_deletes_enabled .Values.tableManager.retention_period }}\ntable_manager:\n  retention_deletes_enabled: {{ .Values.tableManager.retention_deletes_enabled }}\n  retention_period: {{ .Values.tableManager.retention_period }}\n{{- end }}\n\nquery_range:\n  align_queries_with_step: true\n  {{- with .Values.loki.query_range }}\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n  {{- end }}\n  {{- if .Values.resultsCache.enabled }}\n  {{- with .Values.resultsCache }}\n  cache_results: true\n  results_cache:\n    cache:\n      default_validity: {{ .defaultValidity }}\n      background:\n        writeback_goroutines: {{ .writebackParallelism }}\n        writeback_buffer: {{ .writebackBuffer }}\n        writeback_size_limit: {{ .writebackSizeLimit }}\n      memcached_client:\n        consistent_hash: true\n        addresses: dnssrvnoa+_memcached-client._tcp.{{ template \"loki.fullname\" $ }}-results-cache.{{ $.Release.Namespace }}.svc\n        timeout: {{ .timeout }}\n        update_interval: 1m\n  {{- end }}\n  {{- end }}\n\n{{- with .Values.loki.storage_config }}\nstorage_config:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.query_scheduler }}\nquery_scheduler:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.compactor }}\ncompactor:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.analytics }}\nanalytics:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.querier }}\nquerier:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.index_gateway }}\nindex_gateway:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.frontend }}\nfrontend:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.frontend_worker }}\nfrontend_worker:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\n{{- with .Values.loki.distributor }}\ndistributor:\n  {{- tpl (. | toYaml) $ | nindent 4 }}\n{{- end }}\n\ntracing:\n  enabled: {{ .Values.loki.tracing.enabled }}\n": template: gotpl:40:6: executing "gotpl" at <include "loki.commonStorageConfig" .>: error calling include: template: detect/charts/loki/templates/_helpers.tpl:228:19: executing "loki.commonStorageConfig" at <$.Values.loki.storage.bucketNames.chunks>: nil pointer evaluating interface {}.chunks

at <$.Values.loki.storage.bucketNames.chunks>: nil pointer evaluating interface {}.chunks

Below is my full values yaml file:

deploymentMode: SingleBinary

loki:
  enabled: true
  isDefault: true
  auth_enabled: false

  server:
    http_listen_port: 3100

  commonConfig:
    replication_factor: 1
    path_prefix: /loki

  schemaConfig:
    configs:
      - from: "2024-01-01"
        store: boltdb-shipper
        object_store: azure
        schema: v11
        index:
          prefix: loki_index_
          period: 24h

  storage:
    type: azure

    bucketNames:
      chunks: "loki"
      rules: "loki"
      admin: "loki"
      tsdb: "loki"

    azure:
      accountName: "datadetect"
      accountKeySecret:
        name: "YOUR_AZURE_STORAGE_ACCOUNT_KEY_SECRET_NAME" # Replace with the name of your Kubernetes Secret
        key: "KEY_NAME_IN_SECRET" # Replace with the key name within the Secret (e.g., azurestorageaccountkey)
      containerName: "loki"
      useManagedIdentity: false
      requestTimeout: 0

    filesystem:
      chunks_directory: /var/loki/chunks
      rules_directory: /var/loki/rules

  storage_config:
    boltdb_shipper:
      shared_store: azure
      active_index_directory: /var/loki/boltdb-shipper-active
      cache_location: /var/loki/boltdb-shipper-cache
      cache_ttl: 24h

  compactor:
    working_directory: /var/loki/retention
    shared_store: azure
    retention_enabled: true
    compaction_interval: 10m
    retention_delete_delay: 2h
    retention_delete_worker_count: 150

  limits_config:
    retention_period: 744h
    max_query_length: 721h
    max_query_parallelism: 32
    max_streams_per_user: 10000
    creation_grace_period: 168h
    split_queries_by_interval: 24h
    allow_structured_metadata: true
    volume_enabled: true
    discover_log_levels: true

  pattern_ingester:
    enabled: false

  tracing:
    enabled: false

singleBinary:
  replicas: 1
  image:
    repository: grafana/loki
    tag: 3.4.4
    pullPolicy: IfNotPresent
  persistence:
    enabled: true
    size: 10Gi
    storageClass: default
    existingClaim: loki-pvc

service:
  type: ClusterIP
  port: 3100

podLabels:
  app.kubernetes.io/name: otel-loki

I can confirm i do have a loki container name on the account name specified.

if anyone can spot :eye: what I am doing wrong here, then that would be great!
Also, if anyone recommend any changes or upgrades I should make, i.e tsdb that would also be great.

I even tried linting the local config yaml file too, found here and it also fails the same linting check - begs the question if there a safer default version i can pivot back too?

:right_arrow_curving_down:

turns out i was not setting the latest loki version correctly in the chart.yaml file.