Skip to content

Scaleway Cilium + Hubble TLS issues #41

@khaddict

Description

@khaddict

Scaleway Cilium + Hubble TLS issues

1. Missing TLS Certificate Generation (incorrect cronJob value)

When deploying Hubble with the scaleway-cilium-hubble chart, the
secret hubble-relay-client-certs is never created:

Warning  FailedMount  MountVolume.SetUp failed for volume "tls" :
secret "hubble-relay-client-certs" not found

Resolution:

In Scaleway's default values.yaml:

cilium:
  hubble:
    tls:
      auto:
        method: cronjob   # incorrect

The Cilium upstream chart requires:

method: cronJob   # correct (capital J)

Fixing the value to cronJob correctly triggers certificate generation.


2. hubble-relay cannot connect to hubble-peer

Once certificates are generated, hubble-relay fails to connect:

rpc error: code = Unavailable desc = connection error:
dial tcp 10.32.15.117:443: connect: connection refused

hubble-peer correctly exposes port 443 → 4244, but the Cilium agent never starts its Hubble gRPC server on port 4244 because the TLS certificates are not mounted in the cilium-agent (even though the volume exists).

Upstream Cilium mounts:

volumeMounts:
- name: hubble-tls
  mountPath: /var/lib/cilium/tls/hubble
  readOnly: true

This mount is missing from Scaleway's managed CNI DaemonSet.

Without it:

  • certificates are not accessible,
  • Hubble gRPC server does not start,
  • hubble-relay cannot connect → connection refused.

3. Manual fix

You can patch the DaemonSet manually:

kubectl patch daemonset cilium -n kube-system   --type='json'   -p='[
    {
      "op": "add",
      "path": "/spec/template/spec/containers/0/volumeMounts/-",
      "value": {
        "name": "hubble-tls",
        "mountPath": "/var/lib/cilium/tls/hubble",
        "readOnly": true
      }
    }
  ]'

After this patch:

  • cilium-agent loads certificates,
  • Hubble gRPC server starts on port 4244,
  • hubble-peer and hubble-relay become functional.

4. Required fixes for Scaleway

A. In scaleway-cilium-hubble values.yaml

Fix the TLS autogen method:

- method: cronjob
+ method: cronJob

B. In the Scaleway-managed Cilium DaemonSet

Add missing mount:

volumeMounts:
- name: hubble-tls
  mountPath: /var/lib/cilium/tls/hubble
  readOnly: true

This matches Cilium upstream behavior and is required for Hubble TLS to work.


5. Impact Summary

Without these fixes:

  • Hubble relay fails,
  • Hubble UI cannot connect,
  • Hubble observability is non-functional on Scaleway-managed clusters.

With both fixes applied, Hubble works correctly on Cilium 1.34.2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions