Skip to main content

Dashboard Access

The Kymaros web dashboard is served by the kymaros-frontend pod on port 80. There are three ways to expose it depending on your environment.


Method 1 — Port-Forward (Development)

The fastest way to access the dashboard locally without any cluster-level configuration:

kubectl port-forward svc/kymaros-frontend \
-n kymaros-system \
8080:80

Then open http://localhost:8080 in your browser.

This method is suitable for one-off access or local development. The connection terminates when you stop kubectl port-forward.


Method 2 — Ingress (Production)

For persistent, shared access within your cluster, create an Ingress resource. The following example uses the nginx ingress controller with TLS termination:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kymaros-dashboard
namespace: kymaros-system
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
ingressClassName: nginx
tls:
- hosts:
- kymaros.example.com
# Reference a TLS secret in the same namespace.
# Create it with: kubectl create secret tls kymaros-tls \
# --cert=path/to/cert.pem --key=path/to/key.pem \
# -n kymaros-system
secretName: kymaros-tls
rules:
- host: kymaros.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kymaros-frontend
port:
number: 80

Apply:

kubectl apply -f kymaros-ingress.yaml

Adjust host and secretName to match your environment. If you use cert-manager, add the appropriate cert-manager.io/cluster-issuer annotation instead of creating the secret manually.


The Kymaros Helm chart includes built-in Ingress support. Pass the values at install time or in a values.yaml file.

Install or upgrade with ingress enabled:

helm upgrade --install kymaros kymaros/kymaros \
--namespace kymaros-system \
--create-namespace \
--set ingress.enabled=true \
--set ingress.dashboard.host=kymaros.example.com \
--set ingress.className=nginx \
--set ingress.tls.enabled=true \
--set ingress.tls.secretName=kymaros-tls

Equivalent values.yaml excerpt:

ingress:
enabled: true
className: nginx
dashboard:
host: kymaros.example.com
tls:
enabled: true
secretName: kymaros-tls

Apply with:

helm upgrade --install kymaros kymaros/kymaros \
--namespace kymaros-system \
--create-namespace \
-f values.yaml

Dashboard Pages

Overview

The landing page after login. Shows:

  • Score trend chart across all RestoreTest runs over the past 30 days
  • Table of all configured RestoreTest resources with their latest score, result, last run time, and next scheduled run
  • Quick-access links to each test's most recent report

Report Detail

Full breakdown of a single RestoreReport. Shows the score gauge, the six validation levels with their point contributions, individual health check pass/fail cards, RTO chart (measured vs. SLA), and the completeness table with per-resource-type counts.

Test Form

A form-based editor for creating or editing RestoreTest resources. Submits the manifest through the Kymaros API. Equivalent to kubectl apply but with field validation and inline documentation.

Compliance

Available on Team plan and above. Shows aggregated compliance data: percentage of tests passing, tests at risk (score 70–89), and tests failing, grouped by team or namespace label. Exportable as PDF.

Settings

Configure notification targets (webhook URLs, email addresses), Prometheus scrape settings, and API tokens for CI/CD integration.


Verify the API is Reachable

The frontend calls the Kymaros REST API. If the dashboard loads but shows no data, verify the API pod is healthy:

kubectl get pods -n kymaros-system -l app=kymaros-api
kubectl logs -n kymaros-system deploy/kymaros-api --tail=50

The API listens on port 8443 within the cluster. The frontend communicates with it via the kymaros-api Service in kymaros-system.