calicoctl get
This sections describes the calicoctl get
command.
Read the calicoctl command line interface user reference for a full list of calicoctl commands.
The available actions for a specific resource type may be limited based on the datastore used for Calico (etcdv3 / Kubernetes API). Please refer to the Resources section for details about each resource type.
Displaying the help text for 'calicoctl get' command
Run calicoctl get --help
to display the following help menu for the
command.
Usage:
calicoctl get ( (<KIND> [<NAME...>]) |
--filename=<FILENAME>) [--recursive] [--skip-empty]
[--output=<OUTPUT>] [--config=<CONFIG>] [--namespace=<NS>] [--all-namespaces]
Examples:
# List all policy in default output format.
calicoctl get policy
# List specific policies in YAML format
calicoctl get -o yaml policy my-policy-1 my-policy-2
Options:
-h --help Show this screen.
-f --filename=<FILENAME> Filename to use to get the resource. If set to
"-" loads from stdin. If filename is a directory, this command is
invoked for each .json .yaml and .yml file within that directory,
terminating after the first failure.
-R --recursive Process the filename specified in -f or --filename recursively.
--skip-empty Do not error if any files or directory specified using -f or --filename contain no
data.
-o --output=<OUTPUT FORMAT> Output format. One of: yaml, json, ps, wide,
custom-columns=..., go-template=...,
go-template-file=... [Default: ps]
-c --config=<CONFIG> Path to the file containing connection
configuration in YAML or JSON format.
[default: /etc/calico/calicoctl.cfg]
-n --namespace=<NS> Namespace of the resource.
Only applicable to NetworkPolicy and WorkloadEndpoint.
Uses the default namespace if not specified.
-A --all-namespaces If present, list the requested object(s) across
all namespaces.
--export If present, returns the requested object(s) stripped of
cluster-specific information. This flag will be ignored
if <NAME> is not specified.
--context=<context> The name of the kubeconfig context to use.
Description:
The get command is used to display a set of resources by filename or stdin,
or by type and identifiers. JSON and YAML formats are accepted for file and
stdin format.
Valid resource types are:
- bgpconfiguration
- bgpfilter
- bgppeer
- clusterinformation
- felixconfiguration
- globalnetworkpolicy
- globalnetworkset
- hostendpoint
- ippool
- ipreservation
- kubecontrollersconfiguration
- networkpolicy
- networkset
- node
- profile
- tier
- workloadendpoint
The resource type is case-insensitive and may be pluralized.
Attempting to get resources that do not exist will simply return no results.
When getting resources by type, only a single type may be specified at a
time. The name and other identifiers (hostname, scope) are optional, and are
wildcarded when omitted. Thus if you specify no identifiers at all (other
than type), then all configured resources of the requested type will be
returned.
By default the results are output in a ps-style table output. There are
alternative ways to display the data using the --output option:
ps Display the results in ps-style output.
wide As per the ps option, but includes more headings.
custom-columns As per the ps option, but only display the columns
that are requested in the comma-separated list.
golang-template Display the results using the specified golang
template. This can be used to filter results, for
example to return a specific value.
golang-template-file Display the results using the golang template that is
contained in the specified file.
yaml Display the results in YAML output format.
json Display the results in JSON output format.
Note that the data output using YAML or JSON format is always valid to use as
input to all of the resource management commands (create, apply, replace,
delete, get).
Please refer to the docs at https://projectcalico.docs.tigera.io for more details on
the output formats, including example outputs, resource structure (required
for the golang template definitions) and the valid column names (required for
the custom-columns option).
Options
-h --help Show this screen.
-f --filename=<FILENAME> Filename to use to get the resource. If set to
"-" loads from stdin.
-o --output=<OUTPUT FORMAT> Output format. One of: yaml, json, ps, wide,
custom-columns=..., go-template=...,
go-template-file=... [Default: ps]
-n --namespace=<NS> Namespace of the resource.
Only applicable to NetworkPolicy, NetworkSet, and WorkloadEndpoint.
Uses the default namespace if not specified.
-A --all-namespaces If present, list the requested object(s) across
all namespaces.
--export If present, returns the requested object(s) stripped of
cluster-specific information. This flag will be ignored
if the resource name is not specified.
General options
-c --config=<CONFIG> Path to the file containing connection
configuration in YAML or JSON format.
[default: /etc/calico/calicoctl.cfg]
Output options
ps
This is the default output format. It displays output in ps-style table output with sufficient columns to uniquely identify the resource.
The headings displayed for each resource type is fixed. However, we wide
option for displaying additional
columns, and custom-columns
for selecting which columns to display.
Example:
calicoctl get hostEndpoint
Response:
NAME NODE
endpoint1 host1
myhost-eth0 myhost
wide
Similar to the ps
format, the wide
option displays output in ps-style table output but with additional columns.
The headings displayed for each resource type is fixed. See custom-columns
for selecting which columns to display.
Example:
calicoctl get hostEndpoint --output=wide
Response:
NAME NODE INTERFACE IPS PROFILES
endpoint1 host1 1.2.3.4,0:bb::aa prof1,prof2
myhost-eth0 myhost profile1
custom-columns
Similar to the ps
format, the custom-columns
option displays output in ps-style table output but allows the user
to specify and ordered, comma-separated list of columns to display in the output. The valid heading names for each
resource type is documented in the Resources guide.
Example:
calicoctl get hostEndpoint --output=custom-columns=NAME,IPS
Response:
NAME IPS
endpoint1 1.2.3.4,0:bb::aa
myhost-eth0
yaml / json
The yaml
and json
options display the output as a list of YAML documents or JSON dictionaries. The fields for
resource type are documented in the Resources guide.
The output from either of these formats may be used as input for all of the resource management commands.
Example:
calicoctl get hostEndpoint --output=yaml
Response:
- apiVersion: projectcalico.org/v3
kind: HostEndpoint
metadata:
labels:
type: database
name: endpoint1
spec:
node: host1
expectedIPs:
- 1.2.3.4
- 0:bb::aa
profiles:
- prof1
- prof2
- apiVersion: projectcalico.org/v3
kind: HostEndpoint
metadata:
name: myhost-eth0
spec:
node: myhost
profiles:
- profile1
go-template / go-template-file
The go-template
and go-template-file
options display the output using a golang template specified as a string
on the CLI, or defined in a separate file.
When writing a template, be aware that the data passed to the template is a golang slice of resource-lists. The
resource-lists are defined in the libcalico API and there is a resource-list defined for
each resource type. A resource-list contains an Items field which is itself a slice of resources. Thus, to output
the "Name" field from the supplied data, it is necessary to enumerate over the slice of resource-lists and the items
within that list.
Example:
bin/calicoctl get hostEndpoint --output=go-template="{{range .}}{{range .Items}}{{.ObjectMeta.Name}},{{end}}{{end}}"
endpoint1,eth0,
See also
- Installing calicoctl.
- Resources for details on all valid resources, including file format and schema
- NetworkPolicy for details on the Calico selector-based policy model