Skip to main content
Kubernetes Dashboard can be exposed externally using Kubernetes Ingress resources. The Helm chart supports automatic Ingress creation with TLS certificate management via cert-manager.

Enable Ingress

boolean
default:"false"
Enable Ingress resource creation.

Hosts Configuration

array
default:"[\"localhost\"]"
List of hostnames for the Ingress resource.
Default includes localhost for use with kubectl port-forward:
Remove localhost when exposing Dashboard externally.

Ingress Class

string
default:"internal-nginx"
IngressClass to use for the Ingress resource.
Common values:
  • nginx - For nginx-ingress-controller
  • traefik - For Traefik
  • alb - For AWS ALB Ingress Controller
  • gce - For GCE Ingress Controller
boolean
default:"false"
Use the cluster’s default IngressClass instead of specifying one.
When true, the ingressClassName field is omitted, and the cluster’s default IngressClass is used.

Path Configuration

string
default:"/"
URL path for accessing Dashboard.
Serving on a sub-path:
When path is not /, a nginx.ingress.kubernetes.io/rewrite-target: /$2 annotation is automatically added for proper routing.
Ensure the configured path doesn’t conflict with Kong gateway route configuration.
string
default:"ImplementationSpecific"
Ingress path type.
Options:
  • Prefix - Matches based on URL path prefix
  • Exact - Exact path matching
  • ImplementationSpecific - Interpretation depends on IngressClass
See Kubernetes Ingress documentation.

TLS Configuration

boolean
default:"true"
Enable TLS for Ingress.
TLS is highly recommended for production deployments to secure dashboard access.
string
default:""
Name of the TLS Secret containing certificate and key.
If empty (default), the secret name is auto-generated as kubernetes-dashboard-certs.The Secret must contain:
  • tls.crt - TLS certificate
  • tls.key - TLS private key

Cert-Manager Integration

The chart integrates with cert-manager for automatic certificate management.
string
default:"selfsigned"
Name of the cert-manager Issuer or ClusterIssuer.
string
default:"default"
Scope of the cert-manager issuer.
Options:
  • default - Adds cert-manager.io/issuer annotation (namespace-scoped Issuer)
  • cluster - Adds cert-manager.io/cluster-issuer annotation (cluster-scoped ClusterIssuer)
  • disabled - Disables cert-manager annotations
Resulting annotations:
  • For default: cert-manager.io/issuer: <issuer.name>
  • For cluster: cert-manager.io/cluster-issuer: <issuer.name>

Example: Let’s Encrypt with cert-manager

Prerequisites:
  1. cert-manager installed in cluster
  2. ClusterIssuer created:

Annotations

boolean
default:"true"
Append default nginx annotations required for Dashboard.
When true, adds:
These are required for proper HTTPS passthrough to Kong gateway.
object
default:"{}"
Additional custom annotations for the Ingress resource.
object
default:"{}"
Additional labels for the Ingress resource.

Example Configurations

Basic Public Ingress with nginx

Internal Ingress with Self-Signed Certificate

Create self-signed issuer:

AWS ALB Ingress

Traefik Ingress

Sub-Path Deployment

Access at: https://apps.example.com/dashboard

Multiple Hosts

All hosts will share the same TLS certificate (SAN certificate).

Accessing Dashboard Through Ingress

Once Ingress is configured and certificates are issued:
  1. Verify Ingress is created:
  2. Check certificate status:
  3. Access Dashboard:
  4. Verify TLS:

Troubleshooting

Certificate Not Issued

502 Bad Gateway

  • Verify Kong proxy is running:
  • Check if useDefaultAnnotations is enabled for nginx ingress
  • Verify backend protocol annotation:

SSL Passthrough Issues

If using nginx ingress with SSL passthrough:
  1. Ensure nginx ingress controller has --enable-ssl-passthrough flag
  2. Verify ssl-passthrough: "true" annotation is present
  3. Check Kong is listening on HTTPS (default: 8443)

Path-Based Routing Not Working

  • Verify rewrite-target annotation when using sub-paths
  • Check Kong gateway route configuration
  • Ensure pathType is set correctly (usually Prefix)

Security Considerations

  1. Always use TLS in production
  2. Use valid certificates from trusted CAs (e.g., Let’s Encrypt)
  3. Restrict access using Network Policies or Ingress rules
  4. Enable authentication - Dashboard doesn’t provide built-in auth; users authenticate with Kubernetes tokens
  5. Use internal Ingress for sensitive environments
  6. Set resource limits on Ingress controller