Repository navigation
Custom columns
A resource table can show your own columns next to the built-in ones: a label (team, app.kubernetes.io/version), an annotation, or a field of the object (.spec.nodeName, .status.phase, .spec.containers[0].image). Custom columns sort and search like the others, remember their width, and are saved per kind, for one cluster or for all.
Contents: Adding a column · Field paths · What a column shows · Removing a column · Saved views and export · Secrets · Limits
- Open the table of the kind (Pods, Deployments, a custom resource…).
- Open the Columns menu in the table header and choose Add column….
- Under Read from, choose Label, Annotation or Field path.
- Type the Key (a label or annotation key such as
app.kubernetes.io/name) or the Path (see below). A key or path that is not valid is explained under the field. - Optionally type a Header; without one the column is headed by its key or path.
- Under Show in, choose This cluster or All clusters, and press Add.
The column appears before Age. Where a column for this cluster and one for all clusters read the same thing, the one for this cluster is shown.
A path is a list of field names joined by dots, with [n] for an item of a list and ["key"] for a key that contains dots or slashes:
| Path | Reads |
|---|---|
.spec.nodeName |
the node a Pod runs on |
.status.phase |
a Pod's phase |
.spec.containers[0].image |
the image of the first container |
.spec.replicas |
a workload's desired replicas |
.metadata.labels["app.kubernetes.io/name"] |
a label whose key has dots (the same as a Label column) |
.metadata.ownerReferences[0].name |
the first owner's name |
This is deliberately not JSONPath: wildcards ([*]), filters (?(...)), recursive descent (..), $, {…} and functions are refused, so a value inside a list is reached only by its position. The leading dot is optional.
Some tables list only the objects' metadata (the dialog says so); there a path must start with .metadata.
- Strings, numbers and true/false as they are; a list as its items joined by commas; an object (or an object inside a list) as compact JSON; long texts cut at 200 characters. A missing value leaves the cell empty.
- Sorting works as on the other columns: numbers by value, text in natural order, empty cells last.
- Search: a plain word in the table's search box also matches the text of the custom columns.
- Width: drag the header edge; the width is remembered like the built-in columns'.
- The values come from the objects the table already has: a column adds no watch and no request to the cluster.
Custom columns are offered in the main table of a kind. The small tables inside details panels and the Events page do not have them.
The Columns menu lists the custom columns under Custom columns, each with where it applies (This cluster, All clusters or From the saved view). The × next to a column removes it. A custom column can also be hidden, like a built-in one, without removing it.
- A saved view keeps the custom columns its table showed. Opening the view shows them, marked From the saved view, even on a computer or cluster that does not have them; the pin button next to such a column (Keep column … for this cluster) adds it to the cluster's own columns, and × takes it off the table.
- Export… in Views and workspaces writes all your custom columns (export version 3), and each view's own columns. Files of version 1 and 2 still import, with no columns.
- Import… lists them in the preview under Custom columns: added, changed (only the header can differ; it is replaced only with Replace entries that differ from mine), unchanged, or skipped when the column belongs to a cluster that is not on this computer.
- When you rename a context in Sextant, its columns move with it; when you delete a context, its columns are deleted too (see Kubeconfig management).
Secret values never appear in a column. On the Secret kind, a path that starts with data or stringData is refused with a message saying why — in the dialog, when importing a file (the column, or a view carrying it, is left out) and when reading a hand-edited settings.json. Even another path could not reach a value: Sextant's tables hold Secrets with their values already removed.
- At most 20 custom columns per kind and scope (this cluster, or all clusters), and 1000 in all.
- A path of at most 256 characters, a list index of at most 6 digits; a label or annotation key in Kubernetes syntax; a header of at most 64 characters without control characters.
- Custom columns are kept in
settings.jsonundercustomColumns(see Settings). They are a window feature: AI agents and extensions do not see or change them.
Next: Views and workspaces, Using Sextant.
Sextant is licensed under MIT or Apache-2.0. Found a mistake in this wiki? Open an issue.
Sextant
- Home
- Why Sextant
- Installation
- Getting started
- Using Sextant
- YAML editor
- Terminal
- Views and workspaces
- Custom columns
- Kubeconfig management
- All clusters
- Set image
- Image files
- Safe apply (Preview changes)
- Upgrade readiness
- Security posture
- Best practices
- Storage
- Right-sizing
- Cost
- Resource map
- Request metrics and traffic
- Change timeline
- Cleanup
- Autoscaling
- Connectivity
- Traffic diagnosis
- Compare and drift
- RBAC: who can do what
- cert-manager and certificates
- Problems and notifications
- Argo Rollouts and Argo Workflows
- Ecosystem views
- Gateway API
- Service mesh
- Installing Flux and Argo CD
- MCP server
- Extensions
- Writing extensions
- Large clusters
- Accessibility
- Settings
- Troubleshooting
For contributors