Oh: why I thought I was missing helm-controller. C...
# k3s
b
Oh: why I thought I was missing helm-controller. Changes do not apply w/ traefik's helmchartconfig. They are there in the helmchartconfig, but pods do not reflect these. I have restarted k3s on the controlplane nodes, rollout restart. Nothing seems to fix this. I do wonder what changed as we upgraded from 2 version to 3. Traefik is also running as a daemonset (version 3.3.6):
Copy code
slek@host:~$ kubectl describe helmchartconfig -n kube-system traefik | grep level:
  level: DEBUG


slek@host:~$ kubectl get pods -n kube-system -l app.kubernetes.io/name=traefik
NAME            READY   STATUS    RESTARTS   AGE
traefik-2q2q2   1/1     Running   0          25m
traefik-55w78   1/1     Running   0          25m
traefik-8v668   1/1     Running   0          24m
traefik-hs8sv   1/1     Running   0          24m
traefik-jhtr2   1/1     Running   0          24m
traefik-zfqzg   1/1     Running   0          24m
slek@host:~$


slek@host:~$ kubectl describe -n kube-system pod/traefik-2q2q2 | grep log.level
      --log.level=INFO
c
Can you show the HelmChartConfig?
b
Copy code
apiVersion: <http://helm.cattle.io/v1|helm.cattle.io/v1>
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
    log:
      level: DEBUG
    logs:
      access:
        enabled: true
    deployment:
      kind: DaemonSet
    service:
      type: NodePort
      externalTrafficPolicy: Local
    entryPoints:
      web:
        address: ":8000"
        http:
          redirections:
            entryPoint:
              to: websecure
              scheme: https
              permanent: true
      websecure:
        address: ":8443"

    ports:
      web:
        port: 80
        nodePort: 30080
        targetPort: 8000
      websecure:
        port: 443
        nodePort: 30443
        targetPort: 8443
        middlewares:
          - "hsts-header@kubernetescrd"
          
    extraObjects:
    - apiVersion: <http://traefik.io/v1alpha1|traefik.io/v1alpha1>
      kind: Middleware
      metadata:
        name: hsts-header
        namespace: kube-system
      spec:
        headers:
          stsSeconds: 31556953
          stsIncludeSubdomains: true
          stsPreload: true
Thats the helmchartconfig I apply. Below it seems applied correctly, but in reality nothing changes but as I shown debug level remains unchanged.
Copy code
slek@host:~$ kubectl describe helmchartconfig -n kube-system traefik
Name:         traefik
Namespace:    kube-system
Labels:       <none>
Annotations:  <none>
API Version:  <http://helm.cattle.io/v1|helm.cattle.io/v1>
Kind:         HelmChartConfig
Metadata:
  Creation Timestamp:  2024-10-31T08:47:59Z
  Generation:          75
  Resource Version:    168587284
  UID:                 1a81a1e1-af26-4507-ba58-41144e079fc3
Spec:
  Failure Policy:  reinstall
  Values Content:  log:
  level: DEBUG
logs:
  access:
    enabled: true
deployment:
  kind: DaemonSet
service:
  type: NodePort
  externalTrafficPolicy: Local

entryPoints:
  web:
    address: ":8000" 
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
          permanent: true
  websecure:
    address: ":8443" 


ports:
  web:
    port: 80
    nodePort: 30080
     targetPort: 8000
  websecure:
    port: 443
    nodePort: 30443
     targetPort: 8443
    middlewares:
      - "hsts-header@kubernetescrd"

extraObjects:
- apiVersion: <http://traefik.io/v1alpha1|traefik.io/v1alpha1>
  kind: Middleware
  metadata:
    name: hsts-header
    namespace: kube-system
  spec:
    headers:
      stsSeconds: 31556953
      stsIncludeSubdomains: true
      stsPreload: true
Events:  <none>
This is was the helm-install job:
Copy code
skel@host$ k logs -n kube-system helm-install-traefik-cd5mq
if [[ ${KUBERNETES_SERVICE_HOST} =~ .*:.* ]]; then
        echo "KUBERNETES_SERVICE_HOST is using IPv6"
        CHART="${CHART//%\{KUBERNETES_API\}%/[${KUBERNETES_SERVICE_HOST}]:${KUBERNETES_SERVICE_PORT}}"
else
        CHART="${CHART//%\{KUBERNETES_API\}%/${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT}}"
fi

set +v -x
+ [[ '' == \v\2 ]]
+ shopt -s nullglob
+ [[ -f /config/ca-file.pem ]]
+ [[ -f /tmp/ca-file.pem ]]
+ [[ false == \t\r\u\e ]]
+ [[ false == \t\r\u\e ]]
+ [[ -n '' ]]
+ helm_content_decode
+ set -e
+ ENC_CHART_PATH=/chart/traefik.tgz.base64
+ CHART_PATH=/tmp/traefik.tgz
+ [[ ! -f /chart/traefik.tgz.base64 ]]
+ return
+ [[ install != \d\e\l\e\t\e ]]
+ helm_repo_init
+ grep -q -e 'https\?://'
+ echo 'chart path is a url, skipping repo update'
+ helm repo remove stable
chart path is a url, skipping repo update
Error: no repositories configured
+ true
+ return
+ helm_update install --set-string global.systemDefaultRegistry=
++ helm ls --all -f '^traefik$' --namespace kube-system --output json
++ jq -r '"\(.[0].chart),\(.[0].status)"'
++ tr '[:upper:]' '[:lower:]'
+ LINE=traefik-34.2.1+up34.2.0,deployed
+ IFS=,
+ read -r INSTALLED_VERSION STATUS _
+ VALUES=
+ for VALUES_FILE in /config/*.yaml
+ VALUES=' --values /config/values-0-000-HelmChart-ValuesContent.yaml'
+ for VALUES_FILE in /config/*.yaml
+ VALUES=' --values /config/values-0-000-HelmChart-ValuesContent.yaml --values /config/values-1-000-HelmChartConfig-ValuesContent.yaml'
+ [[ install = \d\e\l\e\t\e ]]
+ [[ traefik-34.2.1+up34.2.0 =~ ^(|null)$ ]]
+ [[ deployed =~ ^(pending-install|pending-upgrade|pending-rollback|uninstalling)$ ]]
+ [[ deployed =~ ^deployed$ ]]
+ echo 'Already installed traefik'
Already installed traefik
+ helm mapkubeapis traefik --namespace kube-system
2025/10/06 14:51:36 Release 'traefik' will be checked for deprecated or removed Kubernetes APIs and will be updated if necessary to supported API versions.
2025/10/06 14:51:36 Get release 'traefik' latest version.
2025/10/06 14:51:37 Check release 'traefik' for deprecated or removed APIs...
2025/10/06 14:51:37 Finished checking release 'traefik' for deprecated or removed APIs.
2025/10/06 14:51:37 Release 'traefik' has no deprecated or removed APIs.
2025/10/06 14:51:37 Map of release 'traefik' deprecated or removed APIs to supported versions, completed successfully.
+ echo 'Upgrading helm chart'
Upgrading traefik
+ echo 'Upgrading traefik'
+ shift 1
+ helm upgrade --set-string global.systemDefaultRegistry= traefik <https://10.244.128.1:443/static/charts/traefik-34.2.1+up34.2.0.tgz> --values /config/values-0-000-HelmChart-ValuesContent.yaml --values /config/values-1-000-HelmChartConfig-ValuesContent.yaml
Release "traefik" has been upgraded. Happy Helming!
NAME: traefik
LAST DEPLOYED: Mon Oct  6 14:51:37 2025
NAMESPACE: kube-system
STATUS: deployed
REVISION: 57
TEST SUITE: None
NOTES:
traefik with /rancher/mirrored-library-traefik:3.3.6 has been deployed successfully on kube-system namespace !
+ exit
c
You have
Copy code
log:
  level: DEBUG
That should be
Copy code
logs:
  general:
    level: DEBUG
https://github.com/k3s-io/k3s-charts/blob/main/charts/traefik/34.2.1%2Bup34.2.0/values.yaml#L353-L359
idk where you got your values from, but I suspect that it simply doesn’t match the charts values structure. which is why it doesn’t do what you want.