Skip to main content
Lumovi ships an add-on and views for the tools most clusters run. When a cluster serves one of a tool’s kinds:
  • Its add-on gives the tool an entry in the sidebar. It leads to everything of the tool’s kinds in one list, what’s failing first, with a tab for each kind. See Add-ons.
  • Its views give each kind the columns people look at first, a status that understands the tool, links to the objects it points to, tabs for the objects that belong to it, and the changes its own CLI offers, as actions.
Each section below names the add-on, where it sits in the sidebar, and its kinds in the order of their tabs, then what each kind’s view adds. A kind without a view shows the columns the API server prints, and a status read from the usual conventions. A related tab of pods takes its place as the detail panel’s Pods tab, under its own name, and comes with Logs and Metrics tabs for those pods. Like every change in Lumovi, a view’s actions check your permissions first: patch on the kind (or on its status), or create on the kind an action creates. They show the equivalent command, kubectl patch or kubectl create, and are refused in a read-only cluster. In the tables:
  • An action whose name ends in … asks first.
  • undo: it can be taken back from its notification.
  • asks: it asks for a value, like which instance becomes the primary.
  • creates: it creates an object, shown as YAML before it’s created.

Argo CD and Argo Rollouts

Argo CD applications, and Argo Rollouts. They’re two add-ons:
  • Argo CD, under Add-ons (argo-cd): Application, ApplicationSet, AppProject.
  • Argo Rollouts, under Add-ons (argo-rollouts): Rollout, AnalysisRun, AnalysisTemplate, ClusterAnalysisTemplate, Experiment.
Applications and rollouts have views; the other kinds don’t. Applications take their status from Argo CD’s own health: Healthy, Progressing, Degraded, Missing or Suspended. A rollout is Healthy, Paused, Degraded, Aborted, or in progress with its phase.
  • Sync starts a sync, like the Sync button in Argo CD. It’s offered when no operation is running.
  • Refresh asks Argo CD to compare the application with its source again.
  • An application’s Destination link opens the namespace it deploys to.
  • Promote moves a paused rollout past its pause. Resume unpauses one that was paused by hand.
  • Restart… replaces the rollout’s pods a few at a time, as its strategy says. It asks first.
  • Abort… stops a rollout in progress and sends traffic back to the stable version. It’s destructive, so it asks first.
Rollouts have the scale subresource, so you can also Scale them like a Deployment.

Argo Workflows

Argo Workflows: workflows, their templates and schedules. Argo Workflows, under Add-ons (argo-workflows): Workflow, CronWorkflow, WorkflowTemplate, ClusterWorkflowTemplate. A workflow is Succeeded, Suspended, Stopping, critical when it failed or hit an error, and otherwise in progress with its phase. A cron workflow is Scheduled, Suspended, Stopped, or Can’t submit when it couldn’t start a run.
  • Suspend pauses a running workflow, and Resume picks it up again.
  • Stop… stops the steps running now, and its exit handlers still run. Terminate… stops everything at once, exit handlers included; it’s destructive. Both are offered while a workflow is pending or running.
  • Resubmit… creates a new workflow with a finished one’s spec.
  • Submit now… creates a workflow from a cron workflow’s spec, without waiting for its schedule. Submit… creates one that runs a template.
  • Runs lists the workflows a cron workflow or a template started.

cert-manager

cert-manager: certificates, their requests, and issuers. cert-manager, under Add-ons (cert-manager): Certificate, CertificateRequest, Issuer, ClusterIssuer, Order, Challenge. Orders and challenges have no view. A certificate is Ready, Issuing, or critical with cert-manager’s reason. A request is Issued, Pending, Denied, or critical with the reason. Issuers are Ready, or critical with the reason. A certificate’s details add when it’s valid from, when it expires and renews, its lifetime and failed attempts. Expires reads like “in 30d”, and sorts by time.

Cilium

Cilium: network policies, endpoints and nodes of the cluster’s network. Cilium, under Network (cilium): CiliumNetworkPolicy, CiliumClusterwideNetworkPolicy, CiliumEndpoint, CiliumNode, CiliumLoadBalancerIPPool, CiliumEgressGatewayPolicy. Policies are Valid or Invalid. An endpoint, one for each pod Cilium manages, is Ready, critical when it’s not ready, disconnected or invalid, and otherwise in progress with its state. A load balancer IP pool is Ready, Conflicts when it overlaps another, or Disabled.

CloudNativePG

CloudNativePG: PostgreSQL clusters and their backups. CloudNativePG, under Add-ons (cloudnative-pg): Cluster, Pooler, Backup, ScheduledBackup, Database. Poolers and databases have no view. A cluster is Healthy, critical with its phase when that speaks of a failure or an error, and otherwise in progress with its phase. A backup is Completed, Failed, or in progress with its phase.
  • Instances lists the cluster’s instance pods, with their logs and usage. Volumes lists its volume claims.
  • Back up now… asks for the Method, barmanObjectStore or volumeSnapshot, and creates a Backup of the cluster.
  • Switch over… asks which instance is the New primary. The current primary becomes a replica, and connections to the primary drop for a moment. It’s offered when the cluster has two instances or more, and patches the cluster’s status, so it needs patch on its status.
  • Restart… restarts the instances one at a time, replicas first and the primary last, with a switchover. It asks first.
  • Backups lists the backups a scheduled backup made.

Cluster API

Cluster API: the clusters this one manages, and their machines. Cluster API, under Add-ons (cluster-api): Cluster, MachineDeployment, KubeadmControlPlane, Machine, MachineSet, MachinePool, MachineHealthCheck, ClusterClass. Statuses read both API versions, where v1beta2 says Available and v1beta1 says Ready. A cluster is Available, Not available, Paused, Failed, or in progress with its phase. Machine deployments, sets and pools are Available, Not available, Failed, or in progress. A control plane is Available, Not available or Initializing. A machine is Running, Failed, or in progress with its phase. A health check that may not remediate any more machines is Not remediating. Pause… stops Cluster API reconciling the cluster, its machines included, until it’s resumed. It asks first. Resume turns reconciling back on.

Crossplane

Crossplane: the packages that extend it. Crossplane, under Add-ons (crossplane): Provider, Configuration, Function, CompositeResourceDefinition, Composition. Composite resource definitions and compositions have no view. A package is Healthy, Installing, or critical with the reason it isn’t installed or healthy.

Elastic

Elastic Cloud on Kubernetes: Elasticsearch, Kibana and the rest of the Elastic Stack. Elastic, under Add-ons (eck): Elasticsearch, Kibana, Agent, Beat, ApmServer, Logstash, ElasticMapsServer. Each reports its health as a color: Green, Yellow or Red (Kibana has no yellow), and is in progress until it does. Elasticsearch can also be Invalid.

External Secrets

External Secrets: secrets kept in sync with a vault or a cloud’s secret store. External Secrets, under Add-ons (external-secrets): ExternalSecret, ClusterExternalSecret, SecretStore, ClusterSecretStore, PushSecret. Cluster external secrets and push secrets have no view. An external secret is Synced, or critical with the reason. A store is Valid, or critical with the reason. Sync now asks the operator to fetch the secret again right away.

Flux

Flux: what it applies, and where it fetches it from. Flux, under Add-ons (flux): Kustomization, HelmRelease, GitRepository, OCIRepository, HelmRepository, HelmChart, Bucket. Statuses follow Flux’s conditions: Suspended, Stalled, Reconciling or Ready, or critical with Flux’s reason. Every Flux kind has the same three actions, like the flux CLI’s:
  • Reconcile asks Flux to reconcile it now, like flux reconcile.
  • Suspend stops Flux reconciling it.
  • Resume turns reconciliation back on, and asks for one right away.
A Helm release that Flux manages links to its HelmRelease from Helm releases.

Gatekeeper

OPA Gatekeeper: constraint templates, the constraints made from them, and mutations. Gatekeeper, under Add-ons (gatekeeper): every kind in constraints.gatekeeper.sh, ConstraintTemplate, Assign, AssignMetadata, ModifySet, AssignImage, ExpansionTemplate, Config. Expansion templates and the config have no view. Gatekeeper makes a kind of constraint for each template, in the constraints.gatekeeper.sh group. The add-on and the view cover every one of them, whatever its name: the add-on has a tab for each, in order of their names. A constraint shows what the last audit found: 2 violations, No violations, or Not audited yet. A template is Created, Creating, or Errors; a mutation is Errors when Gatekeeper reports one.

Gateway API

Gateway API: gateways and the routes attached to them. Gateway API, under Network (gateway-api): Gateway, HTTPRoute, GRPCRoute, TLSRoute, TCPRoute, UDPRoute, GatewayClass, ReferenceGrant. Reference grants have no view. A gateway is Programmed once its controller has set it up. Routes are Accepted, or say why their gateway refused them, or why a backend can’t be resolved. A gateway class is Accepted, or critical with the reason.

Istio

Istio: traffic routing and security. Istio, under Add-ons (istio): VirtualService, DestinationRule, Gateway, ServiceEntry, PeerAuthentication, AuthorizationPolicy.

Karpenter

Karpenter: node pools, and the nodes it launched for them. Karpenter, under Add-ons (karpenter): NodePool, NodeClaim, EC2NodeClass, AKSNodeClass. AKS node classes have no view. Karpenter’s add-on opens on an overview of its own: its node pools against their limits, the nodes they launched and the ones launching, what’s being replaced, and the pods waiting for a node. See Karpenter’s overview. A node pool is Ready, or critical with Karpenter’s reason. A node claim is Ready, Launching until its node registers, Drifted when it no longer matches its node pool or node class, Terminating, critical with the reason when it couldn’t be launched, and otherwise Not ready. A node pool’s details add its node class, CPU and memory limits, consolidation settings, and when its nodes expire. A node claim’s add its node pool, instance type, capacity type, zone, image, provider ID and when it expires. An EC2 node class’s add its role, instance profile, AMIs, subnets and security groups.

KEDA

KEDA: event-driven autoscaling of workloads and jobs. KEDA, under Add-ons (keda): ScaledObject, ScaledJob, TriggerAuthentication, ClusterTriggerAuthentication. Trigger authentications have no view. A scaled object is Scaling or Idle, Paused, Paused at 2 with the replicas it’s held at, or critical with KEDA’s reason.
  • Pause sets KEDA’s autoscaling.keda.sh/paused annotation: autoscaling stops, and the target keeps its replicas.
  • Pause at… asks for the Replicas while paused, starting at the target’s replicas from before KEDA scaled it, and sets autoscaling.keda.sh/paused-replicas: KEDA scales the target to that count, and holds it there.
  • Resume removes both annotations. It has no undo: pause again instead.
  • Jobs lists the Jobs a scaled job started.

Knative Serving

Knative Serving: services that scale with requests, their revisions, and the routes that split traffic between them. Knative Serving, under Add-ons (knative-serving): Service, Revision, Route, Configuration, DomainMapping. Everything is Ready, critical with Knative’s reason, or in progress (Deploying, or the reason Knative gives).

KubeVirt

KubeVirt: virtual machines, their running instances and migrations, and the disks CDI imports for them. KubeVirt, under Add-ons (kubevirt): VirtualMachine, VirtualMachineInstance, VirtualMachineInstanceMigration, DataVolume, DataSource. A virtual machine is Running, Stopped or Paused, critical with its status when it’s an error (like ErrImagePull or Unschedulable), and otherwise in progress with its status. An instance is Running, Shut down, Failed, or in progress with its phase. Migrations are Migrated or Failed, data volumes Ready or Failed, both in progress until then, and data sources Ready or Not ready.
  • Start sets the run strategy to Always, for a stopped virtual machine.
  • Stop… sets it to Halted: the guest is shut down, and it stays stopped until it’s started again. It’s destructive, so it asks first.

Kyverno

Kyverno: policies, and what they found in the cluster’s resources. Kyverno, under Add-ons (kyverno): PolicyReport, ClusterPolicyReport, ClusterPolicy, Policy, ValidatingPolicy, PolicyException, ClusterCleanupPolicy, CleanupPolicy. A report, one for each resource, says how it did against every policy that applies to it: 2 errors, 3 failing, 2 warnings, Passing or Skipped. Policies and cleanup policies are Ready, or critical with the reason.

Linkerd

Linkerd: the mesh’s policy (servers, routes and who may reach them) and service profiles. Linkerd, under Network (linkerd): Server, AuthorizationPolicy, HTTPRoute, MeshTLSAuthentication, NetworkAuthentication, EgressNetwork, ServiceProfile, ServerAuthorization. Egress networks and server authorizations have no view. A route is Accepted or Not accepted.

Longhorn

Longhorn: replicated volumes, their snapshots and backups, and the nodes and disks they’re on. Longhorn, under Storage (longhorn): Volume, Node, Snapshot, Backup, BackupTarget, RecurringJob, Replica. A volume is Healthy, Degraded, Faulted, Detached, or in progress with its state. A node is Ready, Not ready, Unschedulable, or Not scheduling when scheduling is turned off. Snapshots and backups are Completed (or Ready), Failed, or in progress with their state. A backup target is Available or Unavailable, and a replica Running, Error, or in progress. Take a snapshot… creates a Snapshot of the volume, shown before it’s created.

Prometheus operator

The Prometheus operator’s kinds, as kube-prometheus-stack installs them. Prometheus Operator, under Add-ons (prometheus-operator): Prometheus, Alertmanager, ServiceMonitor, PodMonitor, PrometheusRule. Prometheus and Alertmanager are Available, Degraded or Unavailable, as the operator reports them, or critical with its reason when it couldn’t reconcile them.

Rook Ceph

Rook: Ceph clusters, and the pools, filesystems and object stores on them. Rook Ceph, under Storage (rook-ceph): CephCluster, CephBlockPool, CephFilesystem, CephObjectStore, CephObjectStoreUser, CephNFS, ObjectBucketClaim. A Ceph cluster shows Ceph’s own health: HEALTH_OK, HEALTH_WARN or HEALTH_ERR, or Failed, and is in progress with its phase until Ceph reports. Pools, filesystems, object stores and their users are Ready, Failed, or in progress with their phase. A bucket claim is Bound, Failed, or in progress.

Sealed Secrets

Sealed Secrets: secrets encrypted for the cluster’s controller, which unseals each into a Secret of the same name. Sealed Secrets, under Configuration (sealed-secrets): SealedSecret. A sealed secret is Unsealed, Can’t unseal, or Waiting for the controller.

Strimzi

Strimzi: Kafka clusters, their topics and users, and Kafka Connect. Strimzi, under Add-ons (strimzi): Kafka, KafkaNodePool, KafkaTopic, KafkaUser, KafkaConnect, KafkaConnector, KafkaMirrorMaker2, KafkaBridge, KafkaRebalance. A Kafka cluster is Ready, Ready, with warnings when Strimzi fixed or ignored something, critical with Strimzi’s reason, or Reconciling. Topics, users and Kafka Connect are Ready, or critical with the reason. A connector is Running, paused or stopped as its state says, or critical. A rebalance is Waiting for approval once Cruise Control has proposed one, Done, critical when it stopped or isn’t ready, and otherwise in progress.
  • Pause pauses a connector, and Resume runs it again. Restart… restarts the connector and its tasks.
  • Approve… lets Cruise Control start moving partitions as it proposed. It’s offered while a rebalance waits for approval.
  • Refresh asks Cruise Control for a new proposal.
  • Stop… stops a rebalance in progress; what it moved stays moved. It’s destructive, so it asks first.

Tekton

Tekton: pipelines and tasks, and their runs. Tekton, under Add-ons (tekton): PipelineRun, TaskRun, Pipeline, Task. Runs are Succeeded, Cancelled, critical with Tekton’s reason when they failed, and otherwise in progress with the reason. A pipeline run that’s waiting to start is Pending.
  • Stop… starts no more tasks: the running ones finish, and then its finally tasks run. Cancel… stops its running tasks at once, and its finally tasks don’t run. Both are offered while a run is running.
  • Run again… creates a new pipeline run with a finished one’s pipeline, parameters, workspaces and timeouts.
  • Run… creates a pipeline run of the pipeline, with no parameters or workspaces of its own.
  • Runs lists the runs of a pipeline or a task.

Traefik

Traefik: its routes, and what they pass requests through. Traefik, under Network (traefik): IngressRoute, Middleware, IngressRouteTCP, IngressRouteUDP, MiddlewareTCP, TraefikService, TLSOption, ServersTransport. Traefik services, TLS options and servers transports have no view. A middleware’s details say what it does: where it redirects to, the prefixes it strips, its rate limit, the sources it allows, where it forwards authentication, and the middlewares it chains.

Trivy

Trivy Operator: what it found scanning the cluster. Trivy, under Add-ons (trivy-operator): VulnerabilityReport, ConfigAuditReport, ExposedSecretReport, RbacAssessmentReport, ClusterRbacAssessmentReport, ClusterComplianceReport. Reports are 2 critical when they found critical issues, 5 high when the worst are high, and otherwise No critical or high. A compliance report is 3 failing or Compliant.

Velero

Velero: backups of cluster resources and volumes. Velero, under Add-ons (velero): Backup, Restore, Schedule, BackupStorageLocation. Backup storage locations have no view. Backups and restores are Completed, Partially failed, Deleting, critical with Velero’s phase when they failed, or in progress with it. A schedule is Enabled, Paused, or Failed validation.

Vertical Pod Autoscaler

The Vertical Pod Autoscaler: the requests it recommends for workloads, and whether it applies them. Vertical Pod Autoscaler, under Add-ons (vertical-pod-autoscaler): VerticalPodAutoscaler. An autoscaler is Recommending, Gathering data, Low confidence, No pods when no pods match it, or Unsupported. Change mode… asks for the Mode: Off only recommends, Initial sets requests on new pods, Recreate also evicts pods to update them, and InPlaceOrRecreate resizes them in place where it can. Undo puts the previous mode back.

VictoriaMetrics

The VictoriaMetrics operator: VictoriaMetrics and VictoriaLogs, what they scrape, and their alerting rules. VictoriaMetrics, under Add-ons (victoriametrics-operator): VMCluster, VMSingle, VMAgent, VMAlert, VMAlertmanager, VMAuth, VMServiceScrape, VMPodScrape, VMRule, VLSingle, VLCluster. Everything is Operational or Failed, as the operator reports it. Servers can also be Paused, or in progress while they’re created or updated.

Volume snapshots

Volume snapshots: point-in-time copies of volumes, taken by CSI drivers. Volume Snapshots, under Storage (volume-snapshots): VolumeSnapshot, VolumeSnapshotContent, VolumeSnapshotClass. A snapshot is Ready, Taking, or Failed.

CustomResourceDefinitions

CustomResourceDefinitions themselves get a view too: their list shows each one’s Kind, Group, Scope and Versions, and their details add the plural, short names and stored versions. They aren’t in an add-on: open them from API resources.

Changing a built-in view

Your own view of a kind replaces Lumovi’s for that kind, and your own add-on replaces Lumovi’s add-on with the same name: the one each section above gives after the add-on’s label, like flux. Copy the file you want to change from Lumovi’s views into ~/.lumovi/views, edit it, and press ⌘R (Ctrl+R on Windows and Linux). API resources then shows your file as the kind’s view. Views replace each other kind by kind: a view of yours for one of a tool’s kinds leaves Lumovi’s views of its other kinds in place. See Which view a kind uses.
In your cluster: put your views and add-ons in the chart’s views value. See Views for everyone.

Contributing a view

Adding a tool needs no code, and is a welcome first contribution. To ask for one instead, open a Support a tool issue. The contributing guide has the details; in short:
1

Pin the tool's CRDs

Add its release to tests/views/crds/sources.json, under the add-on’s name, with the URLs of its CRD manifests, and run npm run crds -- <name>. That keeps what the check needs of them in tests/views/crds/<name>.json. A chart’s templates work too, and for a tool whose operator creates its CRDs itself, the JSON Schema of each kind will do.
2

Write its add-on and views

Write src/renderer/src/views/<name>.yaml, with a comment linking to the tool: the AddOn, then a View for each kind (or group of kinds) worth more than the generic columns. Status rules are where views help most: say what healthy, in progress, failing and paused look like for this tool.
3

Check it

Run npm run views:check. It checks every kind, path, template, link, related list and action against the CRDs you pinned, so a misremembered field fails there rather than showing nothing. Labels and annotations aren’t in schemas, so check those against the tool’s documentation, or a real cluster.
4

Look at it

Put the file in ~/.lumovi/views while running npm run dev against a cluster with the tool installed, and press ⌘R after each change.
To check the views against a newer release of a tool, change its version in sources.json, and run npm run crds -- <name> and npm run views:check.

Add-ons

A tool’s entry in the sidebar, and its page.

View format

Every field a view or an add-on can have.