8000 linkerd-viz: external certificates not working with tap · Issue #14059 · linkerd/linkerd2 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
linkerd-viz: external certificates not working with tap #14059
Open
@Kakadus

Description

@Kakadus

What is the issue?

I want to deploy linkerd-viz with helm using external certificates, managed through cert-manager. Any way I try this, tap no longer works.

How can it be reproduced?

Deploy certificates:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: linkerd-viz-issuer
  namespace: linkerd-viz
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: tap
  namespace: linkerd-viz
spec:
  secretName: tap-k8s-tls
  duration: 2400h
  renewBefore: 1200h
  issuerRef:
    name: linkerd-viz-issuer
    kind: Issuer
  commonName: tap.linkerd-viz.svc
  dnsNames:
    - tap.linkerd-viz.svc
  isCA: false
  privateKey:
    rotationPolicy: Always
    algorithm: RSA
  usages:
    - server auth
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: tap-injector
  namespace: linkerd-viz
spec:
  secretName: tap-injector-k8s-tls
  duration: 2400h
  renewBefore: 1200h
  issuerRef:
    name: linkerd-viz-issuer
    kind: Issuer
  commonName: tap-injector.linkerd-viz.svc
  dnsNames:
    - tap-injector.linkerd-viz.svc
  isCA: false
  privateKey:
    rotationPolicy: Always
    algorithm: RSA
  usages:
    - server auth

Deploy linkerd-viz chart with the following values:

tap:
  injectCaFrom: tap
  externalSecret: true
tapInjector:
  injectCaFrom: tap-injector
  externalSecret: true

Using injectCaFromSecret does not work either and shows the same errors:

tap:
  injectCaFromSecret: tap-k8s-tls
  externalSecret: true
tapInjector:
  injectCaFromSecret: tap-injector-k8s-tls
  externalSecret: true

I've also tried to hardcode self-signed certificates using crtPEM and keyPEM. However, the caBundle is still the auto-generated ca which changes during each deploy. I cannot overwrite it; as soon as I set it, I must activate injectCaFromSecret. Effectively not being able to use crtPEM and keyPEM is probably a separate issue though.

Not setting these values above lets tap work properly. However, I really need to be able to specify my own certificate; either by hard-coding it through the values or injecting them with cert-manager.

Logs, error output, etc

The following is spammed in the tap logs:

time="2025-05-24T12:56:44Z" level=info msg="running version dev-undefined"
time="2025-05-24T12:56:44Z" level=info msg="starting admin server on :9998"
time="2025-05-24T12:56:44Z" level=info msg="Using trust domain: cluster.local"
time="2025-05-24T12:56:44Z" level=info msg="waiting for caches to sync"
time="2025-05-24T12:56:45Z" level=info msg="caches synced"
time="2025-05-24T12:56:45Z" level=info msg="starting tap API server on :8089" addr=":8089" component=tap
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45156: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45174: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45176: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45184: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45168: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45208: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45196: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45224: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45230: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45240: remote error: tls: bad certificate
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45250: EOF
2025/05/24 13:18:10 http: TLS handshake error from 10.2.8.12:45254: remote error: tls: bad certificate
2025/05/24 13:18:11 http: TLS handshake error from 10.2.8.12:47558: EOF
2025/05/24 13:18:11 http: TLS handshake error from 10.2.8.12:47566: remote error: tls: bad certificate

output of linkerd check -o short

linkerd-version
---------------
‼ cli is up-to-date
    is running version 25.4.4 but the latest edge version is 25.5.4
    see https://linkerd.io/2/checks/#l5d-version-cli for hints

control-plane-version
---------------------
‼ control plane is up-to-date
    is running version 25.4.4 but the latest edge version is 25.5.4
    see https://linkerd.io/2/checks/#l5d-version-control for hints

linkerd-control-plane-proxy
---------------------------
‼ control plane proxies are up-to-date
    some proxies are not running the current version:
        * linkerd-destination-5fcb7ff84d-5nn54 (edge-25.4.4)
        * linkerd-destination-5fcb7ff84d-9d7h8 (edge-25.4.4)
        * linkerd-destination-5fcb7ff84d-d472f (edge-25.4.4)
        * linkerd-identity-6c479bb57b-fp6td (edge-25.4.4)
        * linkerd-identity-6c479bb57b-mnst8 (edge-25.4.4)
        * linkerd-identity-6c479bb57b-xdv2s (edge-25.4.4)
        * linkerd-proxy-injector-6cf4d89d46-crdj9 (edge-25.4.4)
        * linkerd-proxy-injector-6cf4d89d46-nm8zs (edge-25.4.4)
        * linkerd-proxy-injector-6cf4d89d46-rcpjc (edge-25.4.4)
    see https://linkerd.io/2/checks/#l5d-cp-proxy-version for hints

linkerd-viz
-----------
× tap API server has valid cert
    cert is not issued by the trust anchor: x509: certificate signed by unknown authority
    see https://linkerd.io/2/checks/#l5d-tap-cert-valid for hints

Status check results are ×

The error is misleading, as the certificate generated by cert-manager is equivalent to the certificate generated with {{- $ca := genSelfSignedCert $host (list) (list $host) 365 }}.

Environment

  • Kubernetes Version: v1.32.2
  • Cluster environment: ovh
  • Host OS: arch linux
  • linkerd version: edge-25.4.4

Possible solution

Letting tap error and not using it in the dashboard.

Additional context

No response

Would you like to work on fixing this bug?

maybe

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0