Resource Definitions

This section describes the set of valid resource types that can be managed through calicoctl.

While resources may be supplied in YAML or JSON format, this guide provides examples in YAML.

Overview of resource structure

The calicoctl commands for resource management (create, apply, delete, replace, get) all take resource manifests as input.

Each manifest may contain a single resource (e.g. a profile resource), or a list of multiple resources (e.g. a profile and two hostEndpoint resources).

The general structure of a single resource is as follows:

apiVersion: v1
kind: <type of resource>
metadata:
  # Identifying information
  name: <name of resource>
  ...
spec:
  # Specification of the resource
  ... 

Schema

Field Description Accepted Values Schema
apiVersion Indicates the version of the API that the data corresponds to. v1 string
kind Specifies the type of resource described by the YAML document.   kind
metadata Contains information used to uniquely identify the particular instance of the resource.   map
spec Contains the resource specification.   map

Supported Kinds

The following resources are supported:

Multiple resources in a single file

A file may contain multiple resource documents specified in a YAML list format. For example, the following is the contents of a file containing two hostEndpoint resources:

- apiVersion: v1
  kind: hostEndpoint
  metadata:
    name: endpoint1
    node: host1
    labels:
      type: database
  spec:
    interface: eth0
    profiles:
    - prof1
    - prof2
    expectedIPs:
    - 1.2.3.4
    - "00:bb::aa"
- apiVersion: v1
  kind: hostEndpoint
  metadata:
    name: endpoint2
    node: host1
    labels:
      type: frontend
  spec:
    interface: eth1
    profiles:
    - prof1
    - prof2
    expectedIPs:
    - 1.2.3.5