Files
k8s-apps/calico-config/crds.yaml
2025-09-01 21:12:31 +02:00

9338 lines
502 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CustomResourceDefinitions for Calico the Hard Way
---
# Source: crds/crd.projectcalico.org_bgpconfigurations.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: bgpconfigurations.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: BGPConfiguration
listKind: BGPConfigurationList
plural: bgpconfigurations
singular: bgpconfiguration
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: BGPConfiguration contains the configuration for any BGP routing.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: BGPConfigurationSpec contains the values of the BGP configuration.
properties:
asNumber:
description: 'ASNumber is the default AS number used by a node. [Default:
64512]'
format: int32
type: integer
bindMode:
description: |-
BindMode indicates whether to listen for BGP connections on all addresses (None)
or only on the node's canonical IP address Node.Spec.BGP.IPvXAddress (NodeIP).
Default behaviour is to listen for BGP connections on all addresses.
type: string
communities:
description: Communities is a list of BGP community values and their
arbitrary names for tagging routes.
items:
description: Community contains standard or large community value
and its name.
properties:
name:
description: Name given to community value.
type: string
value:
description: |-
Value must be of format `aa:nn` or `aa:nn:mm`.
For standard community use `aa:nn` format, where `aa` and `nn` are 16 bit number.
For large community use `aa:nn:mm` format, where `aa`, `nn` and `mm` are 32 bit number.
Where, `aa` is an AS Number, `nn` and `mm` are per-AS identifier.
pattern: ^(\d+):(\d+)$|^(\d+):(\d+):(\d+)$
type: string
type: object
type: array
ignoredInterfaces:
description: IgnoredInterfaces indicates the network interfaces that
needs to be excluded when reading device routes.
items:
type: string
type: array
listenPort:
description: ListenPort is the port where BGP protocol should listen.
Defaults to 179
maximum: 65535
minimum: 1
type: integer
localWorkloadPeeringIPV4:
description: |-
The virtual IPv4 address of the node with which its local workload is expected to peer.
It is recommended to use a link-local address.
type: string
localWorkloadPeeringIPV6:
description: |-
The virtual IPv6 address of the node with which its local workload is expected to peer.
It is recommended to use a link-local address.
type: string
logSeverityScreen:
description: 'LogSeverityScreen is the log severity above which logs
are sent to the stdout. [Default: INFO]'
type: string
nodeMeshMaxRestartTime:
description: |-
Time to allow for software restart for node-to-mesh peerings. When specified, this is configured
as the graceful restart timeout. When not specified, the BIRD default of 120s is used.
This field can only be set on the default BGPConfiguration instance and requires that NodeMesh is enabled
type: string
nodeMeshPassword:
description: |-
Optional BGP password for full node-to-mesh peerings.
This field can only be set on the default BGPConfiguration instance and requires that NodeMesh is enabled
properties:
secretKeyRef:
description: Selects a key of a secret in the node pod's namespace.
properties:
key:
description: The key of the secret to select from. Must be
a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must be
defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
type: object
nodeToNodeMeshEnabled:
description: 'NodeToNodeMeshEnabled sets whether full node to node
BGP mesh is enabled. [Default: true]'
type: boolean
prefixAdvertisements:
description: PrefixAdvertisements contains per-prefix advertisement
configuration.
items:
description: PrefixAdvertisement configures advertisement properties
for the specified CIDR.
properties:
cidr:
description: CIDR for which properties should be advertised.
type: string
communities:
description: |-
Communities can be list of either community names already defined in `Specs.Communities` or community value of format `aa:nn` or `aa:nn:mm`.
For standard community use `aa:nn` format, where `aa` and `nn` are 16 bit number.
For large community use `aa:nn:mm` format, where `aa`, `nn` and `mm` are 32 bit number.
Where,`aa` is an AS Number, `nn` and `mm` are per-AS identifier.
items:
type: string
type: array
type: object
type: array
serviceClusterIPs:
description: |-
ServiceClusterIPs are the CIDR blocks from which service cluster IPs are allocated.
If specified, Calico will advertise these blocks, as well as any cluster IPs within them.
items:
description: ServiceClusterIPBlock represents a single allowed ClusterIP
CIDR block.
properties:
cidr:
type: string
type: object
type: array
serviceExternalIPs:
description: |-
ServiceExternalIPs are the CIDR blocks for Kubernetes Service External IPs.
Kubernetes Service ExternalIPs will only be advertised if they are within one of these blocks.
items:
description: ServiceExternalIPBlock represents a single allowed
External IP CIDR block.
properties:
cidr:
type: string
type: object
type: array
serviceLoadBalancerIPs:
description: |-
ServiceLoadBalancerIPs are the CIDR blocks for Kubernetes Service LoadBalancer IPs.
Kubernetes Service status.LoadBalancer.Ingress IPs will only be advertised if they are within one of these blocks.
items:
description: ServiceLoadBalancerIPBlock represents a single allowed
LoadBalancer IP CIDR block.
properties:
cidr:
type: string
type: object
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_bgpfilters.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: bgpfilters.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: BGPFilter
listKind: BGPFilterList
plural: bgpfilters
singular: bgpfilter
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: BGPFilterSpec contains the IPv4 and IPv6 filter rules of
the BGP Filter.
properties:
exportV4:
description: The ordered set of IPv4 BGPFilter rules acting on exporting
routes to a peer.
items:
description: BGPFilterRuleV4 defines a BGP filter rule consisting
a single IPv4 CIDR block and a filter action for this CIDR.
properties:
action:
type: string
cidr:
type: string
interface:
type: string
matchOperator:
type: string
prefixLength:
properties:
max:
format: int32
maximum: 32
minimum: 0
type: integer
min:
format: int32
maximum: 32
minimum: 0
type: integer
type: object
source:
type: string
required:
- action
type: object
type: array
exportV6:
description: The ordered set of IPv6 BGPFilter rules acting on exporting
routes to a peer.
items:
description: BGPFilterRuleV6 defines a BGP filter rule consisting
a single IPv6 CIDR block and a filter action for this CIDR.
properties:
action:
type: string
cidr:
type: string
interface:
type: string
matchOperator:
type: string
prefixLength:
properties:
max:
format: int32
maximum: 128
minimum: 0
type: integer
min:
format: int32
maximum: 128
minimum: 0
type: integer
type: object
source:
type: string
required:
- action
type: object
type: array
importV4:
description: The ordered set of IPv4 BGPFilter rules acting on importing
routes from a peer.
items:
description: BGPFilterRuleV4 defines a BGP filter rule consisting
a single IPv4 CIDR block and a filter action for this CIDR.
properties:
action:
type: string
cidr:
type: string
interface:
type: string
matchOperator:
type: string
prefixLength:
properties:
max:
format: int32
maximum: 32
minimum: 0
type: integer
min:
format: int32
maximum: 32
minimum: 0
type: integer
type: object
source:
type: string
required:
- action
type: object
type: array
importV6:
description: The ordered set of IPv6 BGPFilter rules acting on importing
routes from a peer.
items:
description: BGPFilterRuleV6 defines a BGP filter rule consisting
a single IPv6 CIDR block and a filter action for this CIDR.
properties:
action:
type: string
cidr:
type: string
interface:
type: string
matchOperator:
type: string
prefixLength:
properties:
max:
format: int32
maximum: 128
minimum: 0
type: integer
min:
format: int32
maximum: 128
minimum: 0
type: integer
type: object
source:
type: string
required:
- action
type: object
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_bgppeers.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: bgppeers.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: BGPPeer
listKind: BGPPeerList
plural: bgppeers
singular: bgppeer
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: BGPPeerSpec contains the specification for a BGPPeer resource.
properties:
asNumber:
description: The AS Number of the peer.
format: int32
type: integer
filters:
description: The ordered set of BGPFilters applied on this BGP peer.
items:
type: string
type: array
keepOriginalNextHop:
description: |-
Option to keep the original nexthop field when routes are sent to a BGP Peer.
Setting "true" configures the selected BGP Peers node to use the "next hop keep;"
instead of "next hop self;"(default) in the specific branch of the Node on "bird.cfg".
Note: that this field is deprecated. Users should use the NextHopMode field to control
the next hop attribute for a BGP peer.
type: boolean
localWorkloadSelector:
description: |-
Selector for the local workload that the node should peer with. When this is set, the peerSelector and peerIP fields must be empty,
and the ASNumber must not be empty.
type: string
maxRestartTime:
description: |-
Time to allow for software restart. When specified, this is configured as the graceful
restart timeout. When not specified, the BIRD default of 120s is used.
type: string
nextHopMode:
allOf:
- enum:
- Auto
- Self
- Keep
- enum:
- Auto
- Self
- Keep
description: |-
NextHopMode defines the method of calculating the next hop attribute for received routes.
This replaces and expands the deprecated KeepOriginalNextHop field.
Users should use this setting to control the next hop attribute for a BGP peer.
When this is set, the value of the KeepOriginalNextHop field is ignored.
if neither keepOriginalNextHop or nextHopMode is specified, BGP's default behaviour is used.
Set it to “Auto” to apply BGPs default behaviour.
Set it to "Self" to configure "next hop self;" in "bird.cfg".
Set it to "Keep" to configure "next hop keep;" in "bird.cfg".
type: string
node:
description: |-
The node name identifying the Calico node instance that is targeted by this peer.
If this is not set, and no nodeSelector is specified, then this BGP peer selects all
nodes in the cluster.
type: string
nodeSelector:
description: |-
Selector for the nodes that should have this peering. When this is set, the Node
field must be empty.
type: string
numAllowedLocalASNumbers:
description: |-
Maximum number of local AS numbers that are allowed in the AS path for received routes.
This removes BGP loop prevention and should only be used if absolutely necessary.
format: int32
type: integer
password:
description: Optional BGP password for the peerings generated by this
BGPPeer resource.
properties:
secretKeyRef:
description: Selects a key of a secret in the node pod's namespace.
properties:
key:
description: The key of the secret to select from. Must be
a valid secret key.
type: string
name:
default: ""
description: |-
Name of the referent.
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
type: string
optional:
description: Specify whether the Secret or its key must be
defined
type: boolean
required:
- key
type: object
x-kubernetes-map-type: atomic
type: object
peerIP:
description: |-
The IP address of the peer followed by an optional port number to peer with.
If port number is given, format should be `[<IPv6>]:port` or `<IPv4>:<port>` for IPv4.
If optional port number is not set, and this peer IP and ASNumber belongs to a calico/node
with ListenPort set in BGPConfiguration, then we use that port to peer.
type: string
peerSelector:
description: |-
Selector for the remote nodes to peer with. When this is set, the PeerIP and
ASNumber fields must be empty. For each peering between the local node and
selected remote nodes, we configure an IPv4 peering if both ends have
NodeBGPSpec.IPv4Address specified, and an IPv6 peering if both ends have
NodeBGPSpec.IPv6Address specified. The remote AS number comes from the remote
node's NodeBGPSpec.ASNumber, or the global default if that is not set.
type: string
reachableBy:
description: |-
Add an exact, i.e. /32, static route toward peer IP in order to prevent route flapping.
ReachableBy contains the address of the gateway which peer can be reached by.
type: string
sourceAddress:
description: |-
Specifies whether and how to configure a source address for the peerings generated by
this BGPPeer resource. Default value "UseNodeIP" means to configure the node IP as the
source address. "None" means not to configure a source address.
type: string
ttlSecurity:
description: |-
TTLSecurity enables the generalized TTL security mechanism (GTSM) which protects against spoofed packets by
ignoring received packets with a smaller than expected TTL value. The provided value is the number of hops
(edges) between the peers.
type: integer
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_blockaffinities.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: blockaffinities.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: BlockAffinity
listKind: BlockAffinityList
plural: blockaffinities
singular: blockaffinity
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: BlockAffinitySpec contains the specification for a BlockAffinity
resource.
properties:
cidr:
type: string
deleted:
description: |-
Deleted indicates that this block affinity is being deleted.
This field is a string for compatibility with older releases that
mistakenly treat this field as a string.
type: string
node:
type: string
state:
type: string
type:
type: string
required:
- cidr
- deleted
- node
- state
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_caliconodestatuses.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: caliconodestatuses.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: CalicoNodeStatus
listKind: CalicoNodeStatusList
plural: caliconodestatuses
singular: caliconodestatus
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: CalicoNodeStatusSpec contains the specification for a CalicoNodeStatus
resource.
properties:
classes:
description: |-
Classes declares the types of information to monitor for this calico/node,
and allows for selective status reporting about certain subsets of information.
items:
type: string
type: array
node:
description: The node name identifies the Calico node instance for
node status.
type: string
updatePeriodSeconds:
description: |-
UpdatePeriodSeconds is the period at which CalicoNodeStatus should be updated.
Set to 0 to disable CalicoNodeStatus refresh. Maximum update period is one day.
format: int32
type: integer
type: object
status:
description: |-
CalicoNodeStatusStatus defines the observed state of CalicoNodeStatus.
No validation needed for status since it is updated by Calico.
properties:
agent:
description: Agent holds agent status on the node.
properties:
birdV4:
description: BIRDV4 represents the latest observed status of bird4.
properties:
lastBootTime:
description: LastBootTime holds the value of lastBootTime
from bird.ctl output.
type: string
lastReconfigurationTime:
description: LastReconfigurationTime holds the value of lastReconfigTime
from bird.ctl output.
type: string
routerID:
description: Router ID used by bird.
type: string
state:
description: The state of the BGP Daemon.
type: string
version:
description: Version of the BGP daemon
type: string
type: object
birdV6:
description: BIRDV6 represents the latest observed status of bird6.
properties:
lastBootTime:
description: LastBootTime holds the value of lastBootTime
from bird.ctl output.
type: string
lastReconfigurationTime:
description: LastReconfigurationTime holds the value of lastReconfigTime
from bird.ctl output.
type: string
routerID:
description: Router ID used by bird.
type: string
state:
description: The state of the BGP Daemon.
type: string
version:
description: Version of the BGP daemon
type: string
type: object
type: object
bgp:
description: BGP holds node BGP status.
properties:
numberEstablishedV4:
description: The total number of IPv4 established bgp sessions.
type: integer
numberEstablishedV6:
description: The total number of IPv6 established bgp sessions.
type: integer
numberNotEstablishedV4:
description: The total number of IPv4 non-established bgp sessions.
type: integer
numberNotEstablishedV6:
description: The total number of IPv6 non-established bgp sessions.
type: integer
peersV4:
description: PeersV4 represents IPv4 BGP peers status on the node.
items:
description: CalicoNodePeer contains the status of BGP peers
on the node.
properties:
peerIP:
description: IP address of the peer whose condition we are
reporting.
type: string
since:
description: Since the state or reason last changed.
type: string
state:
description: State is the BGP session state.
type: string
type:
description: |-
Type indicates whether this peer is configured via the node-to-node mesh,
or via en explicit global or per-node BGPPeer object.
type: string
type: object
type: array
peersV6:
description: PeersV6 represents IPv6 BGP peers status on the node.
items:
description: CalicoNodePeer contains the status of BGP peers
on the node.
properties:
peerIP:
description: IP address of the peer whose condition we are
reporting.
type: string
since:
description: Since the state or reason last changed.
type: string
state:
description: State is the BGP session state.
type: string
type:
description: |-
Type indicates whether this peer is configured via the node-to-node mesh,
or via en explicit global or per-node BGPPeer object.
type: string
type: object
type: array
required:
- numberEstablishedV4
- numberEstablishedV6
- numberNotEstablishedV4
- numberNotEstablishedV6
type: object
lastUpdated:
description: |-
LastUpdated is a timestamp representing the server time when CalicoNodeStatus object
last updated. It is represented in RFC3339 form and is in UTC.
format: date-time
nullable: true
type: string
routes:
description: Routes reports routes known to the Calico BGP daemon
on the node.
properties:
routesV4:
description: RoutesV4 represents IPv4 routes on the node.
items:
description: CalicoNodeRoute contains the status of BGP routes
on the node.
properties:
destination:
description: Destination of the route.
type: string
gateway:
description: Gateway for the destination.
type: string
interface:
description: Interface for the destination
type: string
learnedFrom:
description: LearnedFrom contains information regarding
where this route originated.
properties:
peerIP:
description: If sourceType is NodeMesh or BGPPeer, IP
address of the router that sent us this route.
type: string
sourceType:
description: Type of the source where a route is learned
from.
type: string
type: object
type:
description: Type indicates if the route is being used for
forwarding or not.
type: string
type: object
type: array
routesV6:
description: RoutesV6 represents IPv6 routes on the node.
items:
description: CalicoNodeRoute contains the status of BGP routes
on the node.
properties:
destination:
description: Destination of the route.
type: string
gateway:
description: Gateway for the destination.
type: string
interface:
description: Interface for the destination
type: string
learnedFrom:
description: LearnedFrom contains information regarding
where this route originated.
properties:
peerIP:
description: If sourceType is NodeMesh or BGPPeer, IP
address of the router that sent us this route.
type: string
sourceType:
description: Type of the source where a route is learned
from.
type: string
type: object
type:
description: Type indicates if the route is being used for
forwarding or not.
type: string
type: object
type: array
type: object
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_clusterinformations.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: clusterinformations.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: ClusterInformation
listKind: ClusterInformationList
plural: clusterinformations
singular: clusterinformation
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: ClusterInformation contains the cluster specific information.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: ClusterInformationSpec contains the values of describing
the cluster.
properties:
calicoVersion:
description: CalicoVersion is the version of Calico that the cluster
is running
type: string
clusterGUID:
description: ClusterGUID is the GUID of the cluster
type: string
clusterType:
description: ClusterType describes the type of the cluster
type: string
datastoreReady:
description: |-
DatastoreReady is used during significant datastore migrations to signal to components
such as Felix that it should wait before accessing the datastore.
type: boolean
variant:
description: Variant declares which variant of Calico should be active.
type: string
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_felixconfigurations.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: felixconfigurations.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: FelixConfiguration
listKind: FelixConfigurationList
plural: felixconfigurations
singular: felixconfiguration
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: Felix Configuration contains the configuration for Felix.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: FelixConfigurationSpec contains the values of the Felix configuration.
properties:
allowIPIPPacketsFromWorkloads:
description: |-
AllowIPIPPacketsFromWorkloads controls whether Felix will add a rule to drop IPIP encapsulated traffic
from workloads. [Default: false]
type: boolean
allowVXLANPacketsFromWorkloads:
description: |-
AllowVXLANPacketsFromWorkloads controls whether Felix will add a rule to drop VXLAN encapsulated traffic
from workloads. [Default: false]
type: boolean
awsSrcDstCheck:
description: |-
AWSSrcDstCheck controls whether Felix will try to change the "source/dest check" setting on the EC2 instance
on which it is running. A value of "Disable" will try to disable the source/dest check. Disabling the check
allows for sending workload traffic without encapsulation within the same AWS subnet.
[Default: DoNothing]
enum:
- DoNothing
- Enable
- Disable
type: string
bpfCTLBLogFilter:
description: |-
BPFCTLBLogFilter specifies, what is logged by connect time load balancer when BPFLogLevel is
debug. Currently has to be specified as 'all' when BPFLogFilters is set
to see CTLB logs.
[Default: unset - means logs are emitted when BPFLogLevel id debug and BPFLogFilters not set.]
type: string
bpfConnectTimeLoadBalancing:
description: |-
BPFConnectTimeLoadBalancing when in BPF mode, controls whether Felix installs the connect-time load
balancer. The connect-time load balancer is required for the host to be able to reach Kubernetes services
and it improves the performance of pod-to-service connections.When set to TCP, connect time load balancing
is available only for services with TCP ports. [Default: TCP]
enum:
- TCP
- Enabled
- Disabled
type: string
bpfConnectTimeLoadBalancingEnabled:
description: |-
BPFConnectTimeLoadBalancingEnabled when in BPF mode, controls whether Felix installs the connection-time load
balancer. The connect-time load balancer is required for the host to be able to reach Kubernetes services
and it improves the performance of pod-to-service connections. The only reason to disable it is for debugging
purposes.
Deprecated: Use BPFConnectTimeLoadBalancing [Default: true]
type: boolean
bpfConntrackLogLevel:
description: |-
BPFConntrackLogLevel controls the log level of the BPF conntrack cleanup program, which runs periodically
to clean up expired BPF conntrack entries.
[Default: Off].
enum:
- "Off"
- Debug
type: string
bpfConntrackMode:
description: |-
BPFConntrackCleanupMode controls how BPF conntrack entries are cleaned up. `Auto` will use a BPF program if supported,
falling back to userspace if not. `Userspace` will always use the userspace cleanup code. `BPFProgram` will
always use the BPF program (failing if not supported).
[Default: Auto]
enum:
- Auto
- Userspace
- BPFProgram
type: string
bpfConntrackTimeouts:
description: |-
BPFConntrackTimers overrides the default values for the specified conntrack timer if
set. Each value can be either a duration or `Auto` to pick the value from
a Linux conntrack timeout.
Configurable timers are: CreationGracePeriod, TCPSynSent,
TCPEstablished, TCPFinsSeen, TCPResetSeen, UDPTimeout, GenericTimeout,
ICMPTimeout.
Unset values are replaced by the default values with a warning log for
incorrect values.
properties:
creationGracePeriod:
description: |2-
CreationGracePeriod gives a generic grace period to new connection
before they are considered for cleanup [Default: 10s].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
genericTimeout:
description: |-
GenericTimeout controls how long it takes before considering this
entry for cleanup after the connection became idle. If set to 'Auto', the
value from nf_conntrack_generic_timeout is used. If nil, Calico uses its
own default value. [Default: 10m].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
icmpTimeout:
description: |-
ICMPTimeout controls how long it takes before considering this
entry for cleanup after the connection became idle. If set to 'Auto', the
value from nf_conntrack_icmp_timeout is used. If nil, Calico uses its
own default value. [Default: 5s].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
tcpEstablished:
description: |-
TCPEstablished controls how long it takes before considering this entry for
cleanup after the connection became idle. If set to 'Auto', the
value from nf_conntrack_tcp_timeout_established is used. If nil, Calico uses
its own default value. [Default: 1h].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
tcpFinsSeen:
description: |-
TCPFinsSeen controls how long it takes before considering this entry for
cleanup after the connection was closed gracefully. If set to 'Auto', the
value from nf_conntrack_tcp_timeout_time_wait is used. If nil, Calico uses
its own default value. [Default: Auto].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
tcpResetSeen:
description: |-
TCPResetSeen controls how long it takes before considering this entry for
cleanup after the connection was aborted. If nil, Calico uses its own
default value. [Default: 40s].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
tcpSynSent:
description: |-
TCPSynSent controls how long it takes before considering this entry for
cleanup after the last SYN without a response. If set to 'Auto', the
value from nf_conntrack_tcp_timeout_syn_sent is used. If nil, Calico uses
its own default value. [Default: 20s].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
udpTimeout:
description: |-
UDPTimeout controls how long it takes before considering this entry for
cleanup after the connection became idle. If nil, Calico uses its own
default value. [Default: 60s].
pattern: ^(([0-9]*(\.[0-9]*)?(ms|s|h|m|us)+)+|Auto)$
type: string
type: object
bpfDSROptoutCIDRs:
description: |-
BPFDSROptoutCIDRs is a list of CIDRs which are excluded from DSR. That is, clients
in those CIDRs will access service node ports as if BPFExternalServiceMode was set to
Tunnel.
items:
type: string
type: array
bpfDataIfacePattern:
description: |-
BPFDataIfacePattern is a regular expression that controls which interfaces Felix should attach BPF programs to
in order to catch traffic to/from the network. This needs to match the interfaces that Calico workload traffic
flows over as well as any interfaces that handle incoming traffic to nodeports and services from outside the
cluster. It should not match the workload interfaces (usually named cali...) or any other special device managed
by Calico itself (e.g., tunnels).
type: string
bpfDisableGROForIfaces:
description: |-
BPFDisableGROForIfaces is a regular expression that controls which interfaces Felix should disable the
Generic Receive Offload [GRO] option. It should not match the workload interfaces (usually named cali...).
type: string
bpfDisableUnprivileged:
description: |-
BPFDisableUnprivileged, if enabled, Felix sets the kernel.unprivileged_bpf_disabled sysctl to disable
unprivileged use of BPF. This ensures that unprivileged users cannot access Calico's BPF maps and
cannot insert their own BPF programs to interfere with Calico's. [Default: true]
type: boolean
bpfEnabled:
description: 'BPFEnabled, if enabled Felix will use the BPF dataplane.
[Default: false]'
type: boolean
bpfEnforceRPF:
description: |-
BPFEnforceRPF enforce strict RPF on all host interfaces with BPF programs regardless of
what is the per-interfaces or global setting. Possible values are Disabled, Strict
or Loose. [Default: Loose]
pattern: ^(?i)(Disabled|Strict|Loose)?$
type: string
bpfExcludeCIDRsFromNAT:
description: |-
BPFExcludeCIDRsFromNAT is a list of CIDRs that are to be excluded from NAT
resolution so that host can handle them. A typical usecase is node local
DNS cache.
items:
type: string
type: array
bpfExportBufferSizeMB:
description: |-
BPFExportBufferSizeMB in BPF mode, controls the buffer size used for sending BPF events to felix.
[Default: 1]
type: integer
bpfExtToServiceConnmark:
description: |-
BPFExtToServiceConnmark in BPF mode, controls a 32bit mark that is set on connections from an
external client to a local service. This mark allows us to control how packets of that
connection are routed within the host and how is routing interpreted by RPF check. [Default: 0]
type: integer
bpfExternalServiceMode:
description: |-
BPFExternalServiceMode in BPF mode, controls how connections from outside the cluster to services (node ports
and cluster IPs) are forwarded to remote workloads. If set to "Tunnel" then both request and response traffic
is tunneled to the remote node. If set to "DSR", the request traffic is tunneled but the response traffic
is sent directly from the remote node. In "DSR" mode, the remote node appears to use the IP of the ingress
node; this requires a permissive L2 network. [Default: Tunnel]
pattern: ^(?i)(Tunnel|DSR)?$
type: string
bpfForceTrackPacketsFromIfaces:
description: |-
BPFForceTrackPacketsFromIfaces in BPF mode, forces traffic from these interfaces
to skip Calico's iptables NOTRACK rule, allowing traffic from those interfaces to be
tracked by Linux conntrack. Should only be used for interfaces that are not used for
the Calico fabric. For example, a docker bridge device for non-Calico-networked
containers. [Default: docker+]
items:
type: string
type: array
bpfHostConntrackBypass:
description: |-
BPFHostConntrackBypass Controls whether to bypass Linux conntrack in BPF mode for
workloads and services. [Default: true - bypass Linux conntrack]
type: boolean
bpfHostNetworkedNATWithoutCTLB:
description: |-
BPFHostNetworkedNATWithoutCTLB when in BPF mode, controls whether Felix does a NAT without CTLB. This along with BPFConnectTimeLoadBalancing
determines the CTLB behavior. [Default: Enabled]
enum:
- Enabled
- Disabled
type: string
bpfKubeProxyEndpointSlicesEnabled:
description: |-
BPFKubeProxyEndpointSlicesEnabled is deprecated and has no effect. BPF
kube-proxy always accepts endpoint slices. This option will be removed in
the next release.
type: boolean
bpfKubeProxyIptablesCleanupEnabled:
description: |-
BPFKubeProxyIptablesCleanupEnabled, if enabled in BPF mode, Felix will proactively clean up the upstream
Kubernetes kube-proxy's iptables chains. Should only be enabled if kube-proxy is not running. [Default: true]
type: boolean
bpfKubeProxyMinSyncPeriod:
description: |-
BPFKubeProxyMinSyncPeriod, in BPF mode, controls the minimum time between updates to the dataplane for Felix's
embedded kube-proxy. Lower values give reduced set-up latency. Higher values reduce Felix CPU usage by
batching up more work. [Default: 1s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
bpfL3IfacePattern:
description: |-
BPFL3IfacePattern is a regular expression that allows to list tunnel devices like wireguard or vxlan (i.e., L3 devices)
in addition to BPFDataIfacePattern. That is, tunnel interfaces not created by Calico, that Calico workload traffic flows
over as well as any interfaces that handle incoming traffic to nodeports and services from outside the cluster.
type: string
bpfLogFilters:
additionalProperties:
type: string
description: |-
BPFLogFilters is a map of key=values where the value is
a pcap filter expression and the key is an interface name with 'all'
denoting all interfaces, 'weps' all workload endpoints and 'heps' all host
endpoints.
When specified as an env var, it accepts a comma-separated list of
key=values.
[Default: unset - means all debug logs are emitted]
type: object
bpfLogLevel:
description: |-
BPFLogLevel controls the log level of the BPF programs when in BPF dataplane mode. One of "Off", "Info", or
"Debug". The logs are emitted to the BPF trace pipe, accessible with the command `tc exec bpf debug`.
[Default: Off].
pattern: ^(?i)(Off|Info|Debug)?$
type: string
bpfMapSizeConntrack:
description: |-
BPFMapSizeConntrack sets the size for the conntrack map. This map must be large enough to hold
an entry for each active connection. Warning: changing the size of the conntrack map can cause disruption.
type: integer
bpfMapSizeConntrackCleanupQueue:
description: |-
BPFMapSizeConntrackCleanupQueue sets the size for the map used to hold NAT conntrack entries that are queued
for cleanup. This should be big enough to hold all the NAT entries that expire within one cleanup interval.
minimum: 1
type: integer
bpfMapSizeConntrackScaling:
description: |-
BPFMapSizeConntrackScaling controls whether and how we scale the conntrack map size depending
on its usage. 'Disabled' make the size stay at the default or whatever is set by
BPFMapSizeConntrack*. 'DoubleIfFull' doubles the size when the map is pretty much full even
after cleanups. [Default: DoubleIfFull]
pattern: ^(?i)(Disabled|DoubleIfFull)?$
type: string
bpfMapSizeIPSets:
description: |-
BPFMapSizeIPSets sets the size for ipsets map. The IP sets map must be large enough to hold an entry
for each endpoint matched by every selector in the source/destination matches in network policy. Selectors
such as "all()" can result in large numbers of entries (one entry per endpoint in that case).
type: integer
bpfMapSizeIfState:
description: |-
BPFMapSizeIfState sets the size for ifstate map. The ifstate map must be large enough to hold an entry
for each device (host + workloads) on a host.
type: integer
bpfMapSizeNATAffinity:
description: |-
BPFMapSizeNATAffinity sets the size of the BPF map that stores the affinity of a connection (for services that
enable that feature.
type: integer
bpfMapSizeNATBackend:
description: |-
BPFMapSizeNATBackend sets the size for NAT back end map.
This is the total number of endpoints. This is mostly
more than the size of the number of services.
type: integer
bpfMapSizeNATFrontend:
description: |-
BPFMapSizeNATFrontend sets the size for NAT front end map.
FrontendMap should be large enough to hold an entry for each nodeport,
external IP and each port in each service.
type: integer
bpfMapSizePerCpuConntrack:
description: |-
BPFMapSizePerCPUConntrack determines the size of conntrack map based on the number of CPUs. If set to a
non-zero value, overrides BPFMapSizeConntrack with `BPFMapSizePerCPUConntrack * (Number of CPUs)`.
This map must be large enough to hold an entry for each active connection. Warning: changing the size of the
conntrack map can cause disruption.
type: integer
bpfMapSizeRoute:
description: |-
BPFMapSizeRoute sets the size for the routes map. The routes map should be large enough
to hold one entry per workload and a handful of entries per host (enough to cover its own IPs and
tunnel IPs).
type: integer
bpfPSNATPorts:
anyOf:
- type: integer
- type: string
description: |-
BPFPSNATPorts sets the range from which we randomly pick a port if there is a source port
collision. This should be within the ephemeral range as defined by RFC 6056 (102465535) and
preferably outside the ephemeral ranges used by common operating systems. Linux uses
3276860999, while others mostly use the IANA defined range 4915265535. It is not necessarily
a problem if this range overlaps with the operating systems. Both ends of the range are
inclusive. [Default: 20000:29999]
pattern: ^.*
x-kubernetes-int-or-string: true
bpfPolicyDebugEnabled:
description: |-
BPFPolicyDebugEnabled when true, Felix records detailed information
about the BPF policy programs, which can be examined with the calico-bpf command-line tool.
type: boolean
bpfProfiling:
description: |-
BPFProfiling controls profiling of BPF programs. At the monent, it can be
Disabled or Enabled. [Default: Disabled]
enum:
- Enabled
- Disabled
type: string
bpfRedirectToPeer:
description: |-
BPFRedirectToPeer controls which whether it is allowed to forward straight to the
peer side of the workload devices. It is allowed for any host L2 devices by default
(L2Only), but it breaks TCP dump on the host side of workload device as it bypasses
it on ingress. Value of Enabled also allows redirection from L3 host devices like
IPIP tunnel or Wireguard directly to the peer side of the workload's device. This
makes redirection faster, however, it breaks tools like tcpdump on the peer side.
Use Enabled with caution. [Default: L2Only]
enum:
- Enabled
- Disabled
- L2Only
type: string
chainInsertMode:
description: |-
ChainInsertMode controls whether Felix hooks the kernel's top-level iptables chains by inserting a rule
at the top of the chain or by appending a rule at the bottom. insert is the safe default since it prevents
Calico's rules from being bypassed. If you switch to append mode, be sure that the other rules in the chains
signal acceptance by falling through to the Calico rules, otherwise the Calico policy will be bypassed.
[Default: insert]
pattern: ^(?i)(Insert|Append)?$
type: string
dataplaneDriver:
description: |-
DataplaneDriver filename of the external dataplane driver to use. Only used if UseInternalDataplaneDriver
is set to false.
type: string
dataplaneWatchdogTimeout:
description: |-
DataplaneWatchdogTimeout is the readiness/liveness timeout used for Felix's (internal) dataplane driver.
Deprecated: replaced by the generic HealthTimeoutOverrides.
type: string
debugDisableLogDropping:
description: |-
DebugDisableLogDropping disables the dropping of log messages when the log buffer is full. This can
significantly impact performance if log write-out is a bottleneck. [Default: false]
type: boolean
debugHost:
description: |-
DebugHost is the host IP or hostname to bind the debug port to. Only used
if DebugPort is set. [Default:localhost]
type: string
debugMemoryProfilePath:
description: DebugMemoryProfilePath is the path to write the memory
profile to when triggered by signal.
type: string
debugPort:
description: |-
DebugPort if set, enables Felix's debug HTTP port, which allows memory and CPU profiles
to be retrieved. The debug port is not secure, it should not be exposed to the internet.
type: integer
debugSimulateCalcGraphHangAfter:
description: |-
DebugSimulateCalcGraphHangAfter is used to simulate a hang in the calculation graph after the specified duration.
This is useful in tests of the watchdog system only!
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
debugSimulateDataplaneApplyDelay:
description: |-
DebugSimulateDataplaneApplyDelay adds an artificial delay to every dataplane operation. This is useful for
simulating a heavily loaded system for test purposes only.
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
debugSimulateDataplaneHangAfter:
description: |-
DebugSimulateDataplaneHangAfter is used to simulate a hang in the dataplane after the specified duration.
This is useful in tests of the watchdog system only!
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
defaultEndpointToHostAction:
description: |-
DefaultEndpointToHostAction controls what happens to traffic that goes from a workload endpoint to the host
itself (after the endpoint's egress policy is applied). By default, Calico blocks traffic from workload
endpoints to the host itself with an iptables "DROP" action. If you want to allow some or all traffic from
endpoint to host, set this parameter to RETURN or ACCEPT. Use RETURN if you have your own rules in the iptables
"INPUT" chain; Calico will insert its rules at the top of that chain, then "RETURN" packets to the "INPUT" chain
once it has completed processing workload endpoint egress policy. Use ACCEPT to unconditionally accept packets
from workloads after processing workload endpoint egress policy. [Default: Drop]
pattern: ^(?i)(Drop|Accept|Return)?$
type: string
deviceRouteProtocol:
description: |-
DeviceRouteProtocol controls the protocol to set on routes programmed by Felix. The protocol is an 8-bit label
used to identify the owner of the route.
type: integer
deviceRouteSourceAddress:
description: |-
DeviceRouteSourceAddress IPv4 address to set as the source hint for routes programmed by Felix. When not set
the source address for local traffic from host to workload will be determined by the kernel.
type: string
deviceRouteSourceAddressIPv6:
description: |-
DeviceRouteSourceAddressIPv6 IPv6 address to set as the source hint for routes programmed by Felix. When not set
the source address for local traffic from host to workload will be determined by the kernel.
type: string
disableConntrackInvalidCheck:
description: |-
DisableConntrackInvalidCheck disables the check for invalid connections in conntrack. While the conntrack
invalid check helps to detect malicious traffic, it can also cause issues with certain multi-NIC scenarios.
type: boolean
endpointReportingDelay:
description: |-
EndpointReportingDelay is the delay before Felix reports endpoint status to the datastore. This is only used
by the OpenStack integration. [Default: 1s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
endpointReportingEnabled:
description: |-
EndpointReportingEnabled controls whether Felix reports endpoint status to the datastore. This is only used
by the OpenStack integration. [Default: false]
type: boolean
endpointStatusPathPrefix:
description: |-
EndpointStatusPathPrefix is the path to the directory where endpoint status will be written. Endpoint status
file reporting is disabled if field is left empty.
Chosen directory should match the directory used by the CNI plugin for PodStartupDelay.
[Default: /var/run/calico]
type: string
externalNodesList:
description: |-
ExternalNodesCIDRList is a list of CIDR's of external, non-Calico nodes from which VXLAN/IPIP overlay traffic
will be allowed. By default, external tunneled traffic is blocked to reduce attack surface.
items:
type: string
type: array
failsafeInboundHostPorts:
description: |-
FailsafeInboundHostPorts is a list of ProtoPort struct objects including UDP/TCP/SCTP ports and CIDRs that Felix will
allow incoming traffic to host endpoints on irrespective of the security policy. This is useful to avoid accidentally
cutting off a host with incorrect configuration. For backwards compatibility, if the protocol is not specified,
it defaults to "tcp". If a CIDR is not specified, it will allow traffic from all addresses. To disable all inbound host ports,
use the value "[]". The default value allows ssh access, DHCP, BGP, etcd and the Kubernetes API.
[Default: tcp:22, udp:68, tcp:179, tcp:2379, tcp:2380, tcp:5473, tcp:6443, tcp:6666, tcp:6667 ]
items:
description: ProtoPort is combination of protocol, port, and CIDR.
Protocol and port must be specified.
properties:
net:
type: string
port:
type: integer
protocol:
type: string
required:
- port
type: object
type: array
failsafeOutboundHostPorts:
description: |-
FailsafeOutboundHostPorts is a list of PortProto struct objects including UDP/TCP/SCTP ports and CIDRs that Felix
will allow outgoing traffic from host endpoints to irrespective of the security policy. This is useful to avoid accidentally
cutting off a host with incorrect configuration. For backwards compatibility, if the protocol is not specified, it defaults
to "tcp". If a CIDR is not specified, it will allow traffic from all addresses. To disable all outbound host ports,
use the value "[]". The default value opens etcd's standard ports to ensure that Felix does not get cut off from etcd
as well as allowing DHCP, DNS, BGP and the Kubernetes API.
[Default: udp:53, udp:67, tcp:179, tcp:2379, tcp:2380, tcp:5473, tcp:6443, tcp:6666, tcp:6667 ]
items:
description: ProtoPort is combination of protocol, port, and CIDR.
Protocol and port must be specified.
properties:
net:
type: string
port:
type: integer
protocol:
type: string
required:
- port
type: object
type: array
featureDetectOverride:
description: |-
FeatureDetectOverride is used to override feature detection based on auto-detected platform
capabilities. Values are specified in a comma separated list with no spaces, example;
"SNATFullyRandom=true,MASQFullyRandom=false,RestoreSupportsLock=". A value of "true" or "false" will
force enable/disable feature, empty or omitted values fall back to auto-detection.
pattern: ^([a-zA-Z0-9-_]+=(true|false|),)*([a-zA-Z0-9-_]+=(true|false|))?$
type: string
featureGates:
description: |-
FeatureGates is used to enable or disable tech-preview Calico features.
Values are specified in a comma separated list with no spaces, example;
"BPFConnectTimeLoadBalancingWorkaround=enabled,XyZ=false". This is
used to enable features that are not fully production ready.
pattern: ^([a-zA-Z0-9-_]+=([^=]+),)*([a-zA-Z0-9-_]+=([^=]+))?$
type: string
floatingIPs:
description: |-
FloatingIPs configures whether or not Felix will program non-OpenStack floating IP addresses. (OpenStack-derived
floating IPs are always programmed, regardless of this setting.)
enum:
- Enabled
- Disabled
type: string
flowLogsCollectorDebugTrace:
description: |-
When FlowLogsCollectorDebugTrace is set to true, enables the logs in the collector to be
printed in their entirety.
type: boolean
flowLogsFlushInterval:
description: FlowLogsFlushInterval configures the interval at which
Felix exports flow logs.
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
flowLogsGoldmaneServer:
description: FlowLogGoldmaneServer is the flow server endpoint to
which flow data should be published.
type: string
flowLogsLocalReporter:
description: 'FlowLogsLocalReporter configures local unix socket for
reporting flow data from each node. [Default: Disabled]'
enum:
- Disabled
- Enabled
type: string
flowLogsPolicyEvaluationMode:
description: |-
Continuous - Felix evaluates active flows on a regular basis to determine the rule
traces in the flow logs. Any policy updates that impact a flow will be reflected in the
pending_policies field, offering a near-real-time view of policy changes across flows.
None - Felix stops evaluating pending traces.
[Default: Continuous]
enum:
- None
- Continuous
type: string
genericXDPEnabled:
description: |-
GenericXDPEnabled enables Generic XDP so network cards that don't support XDP offload or driver
modes can use XDP. This is not recommended since it doesn't provide better performance than
iptables. [Default: false]
type: boolean
goGCThreshold:
description: |-
GoGCThreshold Sets the Go runtime's garbage collection threshold. I.e. the percentage that the heap is
allowed to grow before garbage collection is triggered. In general, doubling the value halves the CPU time
spent doing GC, but it also doubles peak GC memory overhead. A special value of -1 can be used
to disable GC entirely; this should only be used in conjunction with the GoMemoryLimitMB setting.
This setting is overridden by the GOGC environment variable.
[Default: 40]
type: integer
goMaxProcs:
description: |-
GoMaxProcs sets the maximum number of CPUs that the Go runtime will use concurrently. A value of -1 means
"use the system default"; typically the number of real CPUs on the system.
this setting is overridden by the GOMAXPROCS environment variable.
[Default: -1]
type: integer
goMemoryLimitMB:
description: |-
GoMemoryLimitMB sets a (soft) memory limit for the Go runtime in MB. The Go runtime will try to keep its memory
usage under the limit by triggering GC as needed. To avoid thrashing, it will exceed the limit if GC starts to
take more than 50% of the process's CPU time. A value of -1 disables the memory limit.
Note that the memory limit, if used, must be considerably less than any hard resource limit set at the container
or pod level. This is because felix is not the only process that must run in the container or pod.
This setting is overridden by the GOMEMLIMIT environment variable.
[Default: -1]
type: integer
healthEnabled:
description: |-
HealthEnabled if set to true, enables Felix's health port, which provides readiness and liveness endpoints.
[Default: false]
type: boolean
healthHost:
description: 'HealthHost is the host that the health server should
bind to. [Default: localhost]'
type: string
healthPort:
description: 'HealthPort is the TCP port that the health server should
bind to. [Default: 9099]'
type: integer
healthTimeoutOverrides:
description: |-
HealthTimeoutOverrides allows the internal watchdog timeouts of individual subcomponents to be
overridden. This is useful for working around "false positive" liveness timeouts that can occur
in particularly stressful workloads or if CPU is constrained. For a list of active
subcomponents, see Felix's logs.
items:
properties:
name:
type: string
timeout:
type: string
required:
- name
- timeout
type: object
type: array
interfaceExclude:
description: |-
InterfaceExclude A comma-separated list of interface names that should be excluded when Felix is resolving
host endpoints. The default value ensures that Felix ignores Kubernetes' internal `kube-ipvs0` device. If you
want to exclude multiple interface names using a single value, the list supports regular expressions. For
regular expressions you must wrap the value with `/`. For example having values `/^kube/,veth1` will exclude
all interfaces that begin with `kube` and also the interface `veth1`. [Default: kube-ipvs0]
type: string
interfacePrefix:
description: |-
InterfacePrefix is the interface name prefix that identifies workload endpoints and so distinguishes
them from host endpoint interfaces. Note: in environments other than bare metal, the orchestrators
configure this appropriately. For example our Kubernetes and Docker integrations set the 'cali' value,
and our OpenStack integration sets the 'tap' value. [Default: cali]
type: string
interfaceRefreshInterval:
description: |-
InterfaceRefreshInterval is the period at which Felix rescans local interfaces to verify their state.
The rescan can be disabled by setting the interval to 0.
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
ipForwarding:
description: |-
IPForwarding controls whether Felix sets the host sysctls to enable IP forwarding. IP forwarding is required
when using Calico for workload networking. This should be disabled only on hosts where Calico is used solely for
host protection. In BPF mode, due to a kernel interaction, either IPForwarding must be enabled or BPFEnforceRPF
must be disabled. [Default: Enabled]
enum:
- Enabled
- Disabled
type: string
ipipEnabled:
description: |-
IPIPEnabled overrides whether Felix should configure an IPIP interface on the host. Optional as Felix
determines this based on the existing IP pools. [Default: nil (unset)]
type: boolean
ipipMTU:
description: |-
IPIPMTU controls the MTU to set on the IPIP tunnel device. Optional as Felix auto-detects the MTU based on the
MTU of the host's interfaces. [Default: 0 (auto-detect)]
type: integer
ipsetsRefreshInterval:
description: |-
IpsetsRefreshInterval controls the period at which Felix re-checks all IP sets to look for discrepancies.
Set to 0 to disable the periodic refresh. [Default: 90s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
iptablesBackend:
description: |-
IptablesBackend controls which backend of iptables will be used. The default is `Auto`.
Warning: changing this on a running system can leave "orphaned" rules in the "other" backend. These
should be cleaned up to avoid confusing interactions.
pattern: ^(?i)(Auto|Legacy|NFT)?$
type: string
iptablesFilterAllowAction:
description: |-
IptablesFilterAllowAction controls what happens to traffic that is accepted by a Felix policy chain in the
iptables filter table (which is used for "normal" policy). The default will immediately `Accept` the traffic. Use
`Return` to send the traffic back up to the system chains for further processing.
pattern: ^(?i)(Accept|Return)?$
type: string
iptablesFilterDenyAction:
description: |-
IptablesFilterDenyAction controls what happens to traffic that is denied by network policy. By default Calico blocks traffic
with an iptables "DROP" action. If you want to use "REJECT" action instead you can configure it in here.
pattern: ^(?i)(Drop|Reject)?$
type: string
iptablesLockFilePath:
description: |-
IptablesLockFilePath is the location of the iptables lock file. You may need to change this
if the lock file is not in its standard location (for example if you have mapped it into Felix's
container at a different path). [Default: /run/xtables.lock]
type: string
iptablesLockProbeInterval:
description: |-
IptablesLockProbeInterval when IptablesLockTimeout is enabled: the time that Felix will wait between
attempts to acquire the iptables lock if it is not available. Lower values make Felix more
responsive when the lock is contended, but use more CPU. [Default: 50ms]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
iptablesLockTimeout:
description: |-
IptablesLockTimeout is the time that Felix itself will wait for the iptables lock (rather than delegating the
lock handling to the `iptables` command).
Deprecated: `iptables-restore` v1.8+ always takes the lock, so enabling this feature results in deadlock.
[Default: 0s disabled]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
iptablesMangleAllowAction:
description: |-
IptablesMangleAllowAction controls what happens to traffic that is accepted by a Felix policy chain in the
iptables mangle table (which is used for "pre-DNAT" policy). The default will immediately `Accept` the traffic.
Use `Return` to send the traffic back up to the system chains for further processing.
pattern: ^(?i)(Accept|Return)?$
type: string
iptablesMarkMask:
description: |-
IptablesMarkMask is the mask that Felix selects its IPTables Mark bits from. Should be a 32 bit hexadecimal
number with at least 8 bits set, none of which clash with any other mark bits in use on the system.
[Default: 0xffff0000]
format: int32
type: integer
iptablesNATOutgoingInterfaceFilter:
description: |-
This parameter can be used to limit the host interfaces on which Calico will apply SNAT to traffic leaving a
Calico IPAM pool with "NAT outgoing" enabled. This can be useful if you have a main data interface, where
traffic should be SNATted and a secondary device (such as the docker bridge) which is local to the host and
doesn't require SNAT. This parameter uses the iptables interface matching syntax, which allows + as a
wildcard. Most users will not need to set this. Example: if your data interfaces are eth0 and eth1 and you
want to exclude the docker bridge, you could set this to eth+
type: string
iptablesPostWriteCheckInterval:
description: |-
IptablesPostWriteCheckInterval is the period after Felix has done a write
to the dataplane that it schedules an extra read back in order to check the write was not
clobbered by another process. This should only occur if another application on the system
doesn't respect the iptables lock. [Default: 1s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
iptablesRefreshInterval:
description: |-
IptablesRefreshInterval is the period at which Felix re-checks the IP sets
in the dataplane to ensure that no other process has accidentally broken Calico's rules.
Set to 0 to disable IP sets refresh. Note: the default for this value is lower than the
other refresh intervals as a workaround for a Linux kernel bug that was fixed in kernel
version 4.11. If you are using v4.11 or greater you may want to set this to, a higher value
to reduce Felix CPU usage. [Default: 10s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
ipv6Support:
description: IPv6Support controls whether Felix enables support for
IPv6 (if supported by the in-use dataplane).
type: boolean
kubeNodePortRanges:
description: |-
KubeNodePortRanges holds list of port ranges used for service node ports. Only used if felix detects kube-proxy running in ipvs mode.
Felix uses these ranges to separate host and workload traffic. [Default: 30000:32767].
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
logDebugFilenameRegex:
description: |-
LogDebugFilenameRegex controls which source code files have their Debug log output included in the logs.
Only logs from files with names that match the given regular expression are included. The filter only applies
to Debug level logs.
type: string
logFilePath:
description: 'LogFilePath is the full path to the Felix log. Set to
none to disable file logging. [Default: /var/log/calico/felix.log]'
type: string
logPrefix:
description: 'LogPrefix is the log prefix that Felix uses when rendering
LOG rules. [Default: calico-packet]'
type: string
logSeverityFile:
description: 'LogSeverityFile is the log severity above which logs
are sent to the log file. [Default: Info]'
pattern: ^(?i)(Trace|Debug|Info|Warning|Error|Fatal)?$
type: string
logSeverityScreen:
description: 'LogSeverityScreen is the log severity above which logs
are sent to the stdout. [Default: Info]'
pattern: ^(?i)(Trace|Debug|Info|Warning|Error|Fatal)?$
type: string
logSeveritySys:
description: |-
LogSeveritySys is the log severity above which logs are sent to the syslog. Set to None for no logging to syslog.
[Default: Info]
pattern: ^(?i)(Trace|Debug|Info|Warning|Error|Fatal)?$
type: string
maxIpsetSize:
description: |-
MaxIpsetSize is the maximum number of IP addresses that can be stored in an IP set. Not applicable
if using the nftables backend.
type: integer
metadataAddr:
description: |-
MetadataAddr is the IP address or domain name of the server that can answer VM queries for
cloud-init metadata. In OpenStack, this corresponds to the machine running nova-api (or in
Ubuntu, nova-api-metadata). A value of none (case-insensitive) means that Felix should not
set up any NAT rule for the metadata path. [Default: 127.0.0.1]
type: string
metadataPort:
description: |-
MetadataPort is the port of the metadata server. This, combined with global.MetadataAddr (if
not 'None'), is used to set up a NAT rule, from 169.254.169.254:80 to MetadataAddr:MetadataPort.
In most cases this should not need to be changed [Default: 8775].
type: integer
mtuIfacePattern:
description: |-
MTUIfacePattern is a regular expression that controls which interfaces Felix should scan in order
to calculate the host's MTU.
This should not match workload interfaces (usually named cali...).
type: string
natOutgoingAddress:
description: |-
NATOutgoingAddress specifies an address to use when performing source NAT for traffic in a natOutgoing pool that
is leaving the network. By default the address used is an address on the interface the traffic is leaving on
(i.e. it uses the iptables MASQUERADE target).
type: string
natPortRange:
anyOf:
- type: integer
- type: string
description: |-
NATPortRange specifies the range of ports that is used for port mapping when doing outgoing NAT. When unset the default behavior of the
network stack is used.
pattern: ^.*
x-kubernetes-int-or-string: true
netlinkTimeout:
description: |-
NetlinkTimeout is the timeout when talking to the kernel over the netlink protocol, used for programming
routes, rules, and other kernel objects. [Default: 10s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
nftablesFilterAllowAction:
description: |-
NftablesFilterAllowAction controls the nftables action that Felix uses to represent the "allow" policy verdict
in the filter table. The default is to `ACCEPT` the traffic, which is a terminal action. Alternatively,
`RETURN` can be used to return the traffic back to the top-level chain for further processing by your rules.
pattern: ^(?i)(Accept|Return)?$
type: string
nftablesFilterDenyAction:
description: |-
NftablesFilterDenyAction controls what happens to traffic that is denied by network policy. By default, Calico
blocks traffic with a "drop" action. If you want to use a "reject" action instead you can configure it here.
pattern: ^(?i)(Drop|Reject)?$
type: string
nftablesMangleAllowAction:
description: |-
NftablesMangleAllowAction controls the nftables action that Felix uses to represent the "allow" policy verdict
in the mangle table. The default is to `ACCEPT` the traffic, which is a terminal action. Alternatively,
`RETURN` can be used to return the traffic back to the top-level chain for further processing by your rules.
pattern: ^(?i)(Accept|Return)?$
type: string
nftablesMarkMask:
description: |-
NftablesMarkMask is the mask that Felix selects its nftables Mark bits from. Should be a 32 bit hexadecimal
number with at least 8 bits set, none of which clash with any other mark bits in use on the system.
[Default: 0xffff0000]
format: int32
type: integer
nftablesMode:
description: 'NFTablesMode configures nftables support in Felix. [Default:
Disabled]'
enum:
- Disabled
- Enabled
- Auto
type: string
nftablesRefreshInterval:
description: 'NftablesRefreshInterval controls the interval at which
Felix periodically refreshes the nftables rules. [Default: 90s]'
type: string
openstackRegion:
description: |-
OpenstackRegion is the name of the region that a particular Felix belongs to. In a multi-region
Calico/OpenStack deployment, this must be configured somehow for each Felix (here in the datamodel,
or in felix.cfg or the environment on each compute node), and must match the [calico]
openstack_region value configured in neutron.conf on each node. [Default: Empty]
type: string
policySyncPathPrefix:
description: |-
PolicySyncPathPrefix is used to by Felix to communicate policy changes to external services,
like Application layer policy. [Default: Empty]
type: string
prometheusGoMetricsEnabled:
description: |-
PrometheusGoMetricsEnabled disables Go runtime metrics collection, which the Prometheus client does by default, when
set to false. This reduces the number of metrics reported, reducing Prometheus load. [Default: true]
type: boolean
prometheusMetricsEnabled:
description: 'PrometheusMetricsEnabled enables the Prometheus metrics
server in Felix if set to true. [Default: false]'
type: boolean
prometheusMetricsHost:
description: 'PrometheusMetricsHost is the host that the Prometheus
metrics server should bind to. [Default: empty]'
type: string
prometheusMetricsPort:
description: 'PrometheusMetricsPort is the TCP port that the Prometheus
metrics server should bind to. [Default: 9091]'
type: integer
prometheusProcessMetricsEnabled:
description: |-
PrometheusProcessMetricsEnabled disables process metrics collection, which the Prometheus client does by default, when
set to false. This reduces the number of metrics reported, reducing Prometheus load. [Default: true]
type: boolean
prometheusWireGuardMetricsEnabled:
description: |-
PrometheusWireGuardMetricsEnabled disables wireguard metrics collection, which the Prometheus client does by default, when
set to false. This reduces the number of metrics reported, reducing Prometheus load. [Default: true]
type: boolean
removeExternalRoutes:
description: |-
RemoveExternalRoutes Controls whether Felix will remove unexpected routes to workload interfaces. Felix will
always clean up expected routes that use the configured DeviceRouteProtocol. To add your own routes, you must
use a distinct protocol (in addition to setting this field to false).
type: boolean
reportingInterval:
description: |-
ReportingInterval is the interval at which Felix reports its status into the datastore or 0 to disable.
Must be non-zero in OpenStack deployments. [Default: 30s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
reportingTTL:
description: 'ReportingTTL is the time-to-live setting for process-wide
status reports. [Default: 90s]'
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
routeRefreshInterval:
description: |-
RouteRefreshInterval is the period at which Felix re-checks the routes
in the dataplane to ensure that no other process has accidentally broken Calico's rules.
Set to 0 to disable route refresh. [Default: 90s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
routeSource:
description: |-
RouteSource configures where Felix gets its routing information.
- WorkloadIPs: use workload endpoints to construct routes.
- CalicoIPAM: the default - use IPAM data to construct routes.
pattern: ^(?i)(WorkloadIPs|CalicoIPAM)?$
type: string
routeSyncDisabled:
description: |-
RouteSyncDisabled will disable all operations performed on the route table. Set to true to
run in network-policy mode only.
type: boolean
routeTableRange:
description: |-
Deprecated in favor of RouteTableRanges.
Calico programs additional Linux route tables for various purposes.
RouteTableRange specifies the indices of the route tables that Calico should use.
properties:
max:
type: integer
min:
type: integer
required:
- max
- min
type: object
routeTableRanges:
description: |-
Calico programs additional Linux route tables for various purposes.
RouteTableRanges specifies a set of table index ranges that Calico should use.
Deprecates`RouteTableRange`, overrides `RouteTableRange`.
items:
properties:
max:
type: integer
min:
type: integer
required:
- max
- min
type: object
type: array
serviceLoopPrevention:
description: |-
When service IP advertisement is enabled, prevent routing loops to service IPs that are
not in use, by dropping or rejecting packets that do not get DNAT'd by kube-proxy.
Unless set to "Disabled", in which case such routing loops continue to be allowed.
[Default: Drop]
pattern: ^(?i)(Drop|Reject|Disabled)?$
type: string
sidecarAccelerationEnabled:
description: 'SidecarAccelerationEnabled enables experimental sidecar
acceleration [Default: false]'
type: boolean
usageReportingEnabled:
description: |-
UsageReportingEnabled reports anonymous Calico version number and cluster size to projectcalico.org. Logs warnings returned by the usage
server. For example, if a significant security vulnerability has been discovered in the version of Calico being used. [Default: true]
type: boolean
usageReportingInitialDelay:
description: 'UsageReportingInitialDelay controls the minimum delay
before Felix makes a report. [Default: 300s]'
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
usageReportingInterval:
description: 'UsageReportingInterval controls the interval at which
Felix makes reports. [Default: 86400s]'
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
useInternalDataplaneDriver:
description: |-
UseInternalDataplaneDriver, if true, Felix will use its internal dataplane programming logic. If false, it
will launch an external dataplane driver and communicate with it over protobuf.
type: boolean
vxlanEnabled:
description: |-
VXLANEnabled overrides whether Felix should create the VXLAN tunnel device for IPv4 VXLAN networking.
Optional as Felix determines this based on the existing IP pools. [Default: nil (unset)]
type: boolean
vxlanMTU:
description: |-
VXLANMTU is the MTU to set on the IPv4 VXLAN tunnel device. Optional as Felix auto-detects the MTU based on the
MTU of the host's interfaces. [Default: 0 (auto-detect)]
type: integer
vxlanMTUV6:
description: |-
VXLANMTUV6 is the MTU to set on the IPv6 VXLAN tunnel device. Optional as Felix auto-detects the MTU based on the
MTU of the host's interfaces. [Default: 0 (auto-detect)]
type: integer
vxlanPort:
description: 'VXLANPort is the UDP port number to use for VXLAN traffic.
[Default: 4789]'
type: integer
vxlanVNI:
description: |-
VXLANVNI is the VXLAN VNI to use for VXLAN traffic. You may need to change this if the default value is
in use on your system. [Default: 4096]
type: integer
windowsManageFirewallRules:
description: 'WindowsManageFirewallRules configures whether or not
Felix will program Windows Firewall rules (to allow inbound access
to its own metrics ports). [Default: Disabled]'
enum:
- Enabled
- Disabled
type: string
wireguardEnabled:
description: 'WireguardEnabled controls whether Wireguard is enabled
for IPv4 (encapsulating IPv4 traffic over an IPv4 underlay network).
[Default: false]'
type: boolean
wireguardEnabledV6:
description: 'WireguardEnabledV6 controls whether Wireguard is enabled
for IPv6 (encapsulating IPv6 traffic over an IPv6 underlay network).
[Default: false]'
type: boolean
wireguardHostEncryptionEnabled:
description: 'WireguardHostEncryptionEnabled controls whether Wireguard
host-to-host encryption is enabled. [Default: false]'
type: boolean
wireguardInterfaceName:
description: 'WireguardInterfaceName specifies the name to use for
the IPv4 Wireguard interface. [Default: wireguard.cali]'
type: string
wireguardInterfaceNameV6:
description: 'WireguardInterfaceNameV6 specifies the name to use for
the IPv6 Wireguard interface. [Default: wg-v6.cali]'
type: string
wireguardKeepAlive:
description: 'WireguardPersistentKeepAlive controls Wireguard PersistentKeepalive
option. Set 0 to disable. [Default: 0]'
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
wireguardListeningPort:
description: 'WireguardListeningPort controls the listening port used
by IPv4 Wireguard. [Default: 51820]'
type: integer
wireguardListeningPortV6:
description: 'WireguardListeningPortV6 controls the listening port
used by IPv6 Wireguard. [Default: 51821]'
type: integer
wireguardMTU:
description: 'WireguardMTU controls the MTU on the IPv4 Wireguard
interface. See Configuring MTU [Default: 1440]'
type: integer
wireguardMTUV6:
description: 'WireguardMTUV6 controls the MTU on the IPv6 Wireguard
interface. See Configuring MTU [Default: 1420]'
type: integer
wireguardRoutingRulePriority:
description: 'WireguardRoutingRulePriority controls the priority value
to use for the Wireguard routing rule. [Default: 99]'
type: integer
wireguardThreadingEnabled:
description: |-
WireguardThreadingEnabled controls whether Wireguard has Threaded NAPI enabled. [Default: false]
This increases the maximum number of packets a Wireguard interface can process.
Consider threaded NAPI only if you have high packets per second workloads that are causing dropping packets due to a saturated `softirq` CPU core.
There is a [known issue](https://lore.kernel.org/netdev/CALrw=nEoT2emQ0OAYCjM1d_6Xe_kNLSZ6dhjb5FxrLFYh4kozA@mail.gmail.com/T/) with this setting
that may cause NAPI to get stuck holding the global `rtnl_mutex` when a peer is removed.
Workaround: Make sure your Linux kernel [includes this patch](https://github.com/torvalds/linux/commit/56364c910691f6d10ba88c964c9041b9ab777bd6) to unwedge NAPI.
type: boolean
workloadSourceSpoofing:
description: |-
WorkloadSourceSpoofing controls whether pods can use the allowedSourcePrefixes annotation to send traffic with a source IP
address that is not theirs. This is disabled by default. When set to "Any", pods can request any prefix.
pattern: ^(?i)(Disabled|Any)?$
type: string
xdpEnabled:
description: 'XDPEnabled enables XDP acceleration for suitable untracked
incoming deny rules. [Default: true]'
type: boolean
xdpRefreshInterval:
description: |-
XDPRefreshInterval is the period at which Felix re-checks all XDP state to ensure that no
other process has accidentally broken Calico's BPF maps or attached programs. Set to 0 to
disable XDP refresh. [Default: 90s]
pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
type: string
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_globalnetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: globalnetworkpolicies.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: GlobalNetworkPolicy
listKind: GlobalNetworkPolicyList
plural: globalnetworkpolicies
singular: globalnetworkpolicy
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
applyOnForward:
description: ApplyOnForward indicates to apply the rules in this policy
on forward traffic.
type: boolean
doNotTrack:
description: |-
DoNotTrack indicates whether packets matched by the rules in this policy should go through
the data plane's connection tracking, such as Linux conntrack. If True, the rules in
this policy are applied before any data plane connection tracking, and packets allowed by
this policy are marked as not to be tracked.
type: boolean
egress:
description: |-
The ordered set of egress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
ingress:
description: |-
The ordered set of ingress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
namespaceSelector:
description: NamespaceSelector is an optional field for an expression
used to select a pod based on namespaces.
type: string
order:
description: |-
Order is an optional field that specifies the order in which the policy is applied.
Policies with higher "order" are applied after those with lower
order within the same tier. If the order is omitted, it may be considered to be "infinite" - i.e. the
policy will be applied last. Policies with identical order will be applied in
alphanumerical order based on the Policy "Name" within the tier.
type: number
performanceHints:
description: |-
PerformanceHints contains a list of hints to Calico's policy engine to
help process the policy more efficiently. Hints never change the
enforcement behaviour of the policy.
Currently, the only available hint is "AssumeNeededOnEveryNode". When
that hint is set on a policy, Felix will act as if the policy matches
a local endpoint even if it does not. This is useful for "preloading"
any large static policies that are known to be used on every node.
If the policy is _not_ used on a particular node then the work
done to preload the policy (and to maintain it) is wasted.
items:
type: string
type: array
preDNAT:
description: PreDNAT indicates to apply the rules in this policy before
any DNAT.
type: boolean
selector:
description: "The selector is an expression used to pick out the endpoints
that the policy should\nbe applied to.\n\nSelector expressions follow
this syntax:\n\n\tlabel == \"string_literal\" -> comparison, e.g.
my_label == \"foo bar\"\n\tlabel != \"string_literal\" -> not
equal; also matches if label is not present\n\tlabel in { \"a\",
\"b\", \"c\", ... } -> true if the value of label X is one of
\"a\", \"b\", \"c\"\n\tlabel not in { \"a\", \"b\", \"c\", ... }
\ -> true if the value of label X is not one of \"a\", \"b\", \"c\"\n\thas(label_name)
\ -> True if that label is present\n\t! expr -> negation of expr\n\texpr
&& expr -> Short-circuit and\n\texpr || expr -> Short-circuit
or\n\t( expr ) -> parens for grouping\n\tall() or the empty selector
-> matches all endpoints.\n\nLabel names are allowed to contain
alphanumerics, -, _ and /. String literals are more permissive\nbut
they do not support escape characters.\n\nExamples (with made-up
labels):\n\n\ttype == \"webserver\" && deployment == \"prod\"\n\ttype
in {\"frontend\", \"backend\"}\n\tdeployment != \"dev\"\n\t! has(label_name)"
type: string
serviceAccountSelector:
description: ServiceAccountSelector is an optional field for an expression
used to select a pod based on service accounts.
type: string
tier:
description: |-
The name of the tier that this policy belongs to. If this is omitted, the default
tier (name is "default") is assumed. The specified tier must exist in order to create
security policies within the tier, the "default" tier is created automatically if it
does not exist, this means for deployments requiring only a single Tier, the tier name
may be omitted on all policy management requests.
type: string
types:
description: |-
Types indicates whether this policy applies to ingress, or to egress, or to both. When
not explicitly specified (and so the value on creation is empty or nil), Calico defaults
Types according to what Ingress and Egress rules are present in the policy. The
default is:
- [ PolicyTypeIngress ], if there are no Egress rules (including the case where there are
also no Ingress rules)
- [ PolicyTypeEgress ], if there are Egress rules but no Ingress rules
- [ PolicyTypeIngress, PolicyTypeEgress ], if there are both Ingress and Egress rules.
When the policy is read back again, Types will always be one of these values, never empty
or nil.
items:
description: PolicyType enumerates the possible values of the PolicySpec
Types field.
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_globalnetworksets.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: globalnetworksets.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: GlobalNetworkSet
listKind: GlobalNetworkSetList
plural: globalnetworksets
singular: globalnetworkset
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
description: |-
GlobalNetworkSet contains a set of arbitrary IP sub-networks/CIDRs that share labels to
allow rules to refer to them via selectors. The labels of GlobalNetworkSet are not namespaced.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: GlobalNetworkSetSpec contains the specification for a NetworkSet
resource.
properties:
nets:
description: The list of IP networks that belong to this set.
items:
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_hostendpoints.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: hostendpoints.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: HostEndpoint
listKind: HostEndpointList
plural: hostendpoints
singular: hostendpoint
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: HostEndpointSpec contains the specification for a HostEndpoint
resource.
properties:
expectedIPs:
description: "The expected IP addresses (IPv4 and IPv6) of the endpoint.\nIf
\"InterfaceName\" is not present, Calico will look for an interface
matching any\nof the IPs in the list and apply policy to that.\nNote:\n\tWhen
using the selector match criteria in an ingress or egress security
Policy\n\tor Profile, Calico converts the selector into a set of
IP addresses. For host\n\tendpoints, the ExpectedIPs field is used
for that purpose. (If only the interface\n\tname is specified, Calico
does not learn the IPs of the interface for use in match\n\tcriteria.)"
items:
type: string
type: array
interfaceName:
description: |-
Either "*", or the name of a specific Linux interface to apply policy to; or empty. "*"
indicates that this HostEndpoint governs all traffic to, from or through the default
network namespace of the host named by the "Node" field; entering and leaving that
namespace via any interface, including those from/to non-host-networked local workloads.
If InterfaceName is not "*", this HostEndpoint only governs traffic that enters or leaves
the host through the specific interface named by InterfaceName, or - when InterfaceName
is empty - through the specific interface that has one of the IPs in ExpectedIPs.
Therefore, when InterfaceName is empty, at least one expected IP must be specified. Only
external interfaces (such as "eth0") are supported here; it isn't possible for a
HostEndpoint to protect traffic through a specific local workload interface.
Note: Only some kinds of policy are implemented for "*" HostEndpoints; initially just
pre-DNAT policy. Please check Calico documentation for the latest position.
type: string
node:
description: The node name identifying the Calico node instance.
type: string
ports:
description: Ports contains the endpoint's named ports, which may
be referenced in security policy rules.
items:
properties:
name:
type: string
port:
type: integer
protocol:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
required:
- name
- port
- protocol
type: object
type: array
profiles:
description: |-
A list of identifiers of security Profile objects that apply to this endpoint. Each
profile is applied in the order that they appear in this list. Profile rules are applied
after the selector-based security policy.
items:
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_ipamblocks.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: ipamblocks.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: IPAMBlock
listKind: IPAMBlockList
plural: ipamblocks
singular: ipamblock
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: IPAMBlockSpec contains the specification for an IPAMBlock
resource.
properties:
affinity:
description: |-
Affinity of the block, if this block has one. If set, it will be of the form
"host:<hostname>". If not set, this block is not affine to a host.
type: string
allocations:
description: |-
Array of allocations in-use within this block. nil entries mean the allocation is free.
For non-nil entries at index i, the index is the ordinal of the allocation within this block
and the value is the index of the associated attributes in the Attributes array.
items:
type: integer
# TODO: This nullable is manually added in. We should update controller-gen
# to handle []*int properly itself.
nullable: true
type: array
attributes:
description: |-
Attributes is an array of arbitrary metadata associated with allocations in the block. To find
attributes for a given allocation, use the value of the allocation's entry in the Allocations array
as the index of the element in this array.
items:
properties:
handle_id:
type: string
secondary:
additionalProperties:
type: string
type: object
type: object
type: array
cidr:
description: The block's CIDR.
type: string
deleted:
description: |-
Deleted is an internal boolean used to workaround a limitation in the Kubernetes API whereby
deletion will not return a conflict error if the block has been updated. It should not be set manually.
type: boolean
sequenceNumber:
default: 0
description: |-
We store a sequence number that is updated each time the block is written.
Each allocation will also store the sequence number of the block at the time of its creation.
When releasing an IP, passing the sequence number associated with the allocation allows us
to protect against a race condition and ensure the IP hasn't been released and re-allocated
since the release request.
format: int64
type: integer
sequenceNumberForAllocation:
additionalProperties:
format: int64
type: integer
description: |-
Map of allocated ordinal within the block to sequence number of the block at
the time of allocation. Kubernetes does not allow numerical keys for maps, so
the key is cast to a string.
type: object
strictAffinity:
description: StrictAffinity on the IPAMBlock is deprecated and no
longer used by the code. Use IPAMConfig StrictAffinity instead.
type: boolean
unallocated:
description: Unallocated is an ordered list of allocations which are
free in the block.
items:
type: integer
type: array
required:
- allocations
- attributes
- cidr
- strictAffinity
- unallocated
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_ipamconfigs.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: ipamconfigs.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: IPAMConfig
listKind: IPAMConfigList
plural: ipamconfigs
singular: ipamconfig
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: IPAMConfigSpec contains the specification for an IPAMConfig
resource.
properties:
autoAllocateBlocks:
type: boolean
maxBlocksPerHost:
description: |-
MaxBlocksPerHost, if non-zero, is the max number of blocks that can be
affine to each host.
maximum: 2147483647
minimum: 0
type: integer
strictAffinity:
type: boolean
required:
- autoAllocateBlocks
- strictAffinity
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_ipamhandles.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: ipamhandles.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: IPAMHandle
listKind: IPAMHandleList
plural: ipamhandles
singular: ipamhandle
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: IPAMHandleSpec contains the specification for an IPAMHandle
resource.
properties:
block:
additionalProperties:
type: integer
type: object
deleted:
type: boolean
handleID:
type: string
required:
- block
- handleID
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_ippools.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: ippools.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: IPPool
listKind: IPPoolList
plural: ippools
singular: ippool
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: IPPoolSpec contains the specification for an IPPool resource.
properties:
allowedUses:
description: |-
AllowedUse controls what the IP pool will be used for. If not specified or empty, defaults to
["Tunnel", "Workload"] for back-compatibility
items:
type: string
type: array
assignmentMode:
description: Determines the mode how IP addresses should be assigned
from this pool
enum:
- Automatic
- Manual
type: string
blockSize:
description: The block size to use for IP address assignments from
this pool. Defaults to 26 for IPv4 and 122 for IPv6.
type: integer
cidr:
description: The pool CIDR.
type: string
disableBGPExport:
description: 'Disable exporting routes from this IP Pool''s CIDR over
BGP. [Default: false]'
type: boolean
disabled:
description: When disabled is true, Calico IPAM will not assign addresses
from this pool.
type: boolean
ipip:
description: |-
Deprecated: this field is only used for APIv1 backwards compatibility.
Setting this field is not allowed, this field is for internal use only.
properties:
enabled:
description: |-
When enabled is true, ipip tunneling will be used to deliver packets to
destinations within this pool.
type: boolean
mode:
description: |-
The IPIP mode. This can be one of "always" or "cross-subnet". A mode
of "always" will also use IPIP tunneling for routing to destination IP
addresses within this pool. A mode of "cross-subnet" will only use IPIP
tunneling when the destination node is on a different subnet to the
originating node. The default value (if not specified) is "always".
type: string
type: object
ipipMode:
description: |-
Contains configuration for IPIP tunneling for this pool. If not specified,
then this is defaulted to "Never" (i.e. IPIP tunneling is disabled).
type: string
nat-outgoing:
description: |-
Deprecated: this field is only used for APIv1 backwards compatibility.
Setting this field is not allowed, this field is for internal use only.
type: boolean
natOutgoing:
description: |-
When natOutgoing is true, packets sent from Calico networked containers in
this pool to destinations outside of this pool will be masqueraded.
type: boolean
nodeSelector:
description: Allows IPPool to allocate for a specific node by label
selector.
type: string
vxlanMode:
description: |-
Contains configuration for VXLAN tunneling for this pool. If not specified,
then this is defaulted to "Never" (i.e. VXLAN tunneling is disabled).
type: string
required:
- cidr
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_ipreservations.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: ipreservations.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: IPReservation
listKind: IPReservationList
plural: ipreservations
singular: ipreservation
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: IPReservationSpec contains the specification for an IPReservation
resource.
properties:
reservedCIDRs:
description: ReservedCIDRs is a list of CIDRs and/or IP addresses
that Calico IPAM will exclude from new allocations.
items:
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_kubecontrollersconfigurations.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: kubecontrollersconfigurations.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: KubeControllersConfiguration
listKind: KubeControllersConfigurationList
plural: kubecontrollersconfigurations
singular: kubecontrollersconfiguration
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: KubeControllersConfigurationSpec contains the values of the
Kubernetes controllers configuration.
properties:
controllers:
description: Controllers enables and configures individual Kubernetes
controllers
properties:
loadBalancer:
description: LoadBalancer enables and configures the LoadBalancer
controller. Enabled by default, set to nil to disable.
properties:
assignIPs:
type: string
type: object
namespace:
description: Namespace enables and configures the namespace controller.
Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform reconciliation
with the Calico datastore. [Default: 5m]'
type: string
type: object
node:
description: Node enables and configures the node controller.
Enabled by default, set to nil to disable.
properties:
hostEndpoint:
description: HostEndpoint controls syncing nodes to host endpoints.
Disabled by default, set to nil to disable.
properties:
autoCreate:
description: 'AutoCreate enables automatic creation of
host endpoints for every node. [Default: Disabled]'
type: string
createDefaultHostEndpoint:
type: string
templates:
description: Templates contains definition for creating
AutoHostEndpoints
items:
properties:
generateName:
description: GenerateName is appended to the end
of the generated AutoHostEndpoint name
type: string
interfaceCIDRs:
description: InterfaceCIDRs contains a list of CIRDs
used for matching nodeIPs to the AutoHostEndpoint
items:
type: string
type: array
labels:
additionalProperties:
type: string
description: Labels adds the specified labels to
the generated AutoHostEndpoint, labels from node
with the same name will be overwritten by values
from the template label
type: object
nodeSelector:
description: NodeSelector allows the AutoHostEndpoint
to be created only for specific nodes
type: string
type: object
type: array
type: object
leakGracePeriod:
description: |-
LeakGracePeriod is the period used by the controller to determine if an IP address has been leaked.
Set to 0 to disable IP garbage collection. [Default: 15m]
type: string
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform reconciliation
with the Calico datastore. [Default: 5m]'
type: string
syncLabels:
description: 'SyncLabels controls whether to copy Kubernetes
node labels to Calico nodes. [Default: Enabled]'
type: string
type: object
policy:
description: Policy enables and configures the policy controller.
Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform reconciliation
with the Calico datastore. [Default: 5m]'
type: string
type: object
serviceAccount:
description: ServiceAccount enables and configures the service
account controller. Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform reconciliation
with the Calico datastore. [Default: 5m]'
type: string
type: object
workloadEndpoint:
description: WorkloadEndpoint enables and configures the workload
endpoint controller. Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform reconciliation
with the Calico datastore. [Default: 5m]'
type: string
type: object
type: object
debugProfilePort:
description: |-
DebugProfilePort configures the port to serve memory and cpu profiles on. If not specified, profiling
is disabled.
format: int32
type: integer
etcdV3CompactionPeriod:
description: 'EtcdV3CompactionPeriod is the period between etcdv3
compaction requests. Set to 0 to disable. [Default: 10m]'
type: string
healthChecks:
description: 'HealthChecks enables or disables support for health
checks [Default: Enabled]'
type: string
logSeverityScreen:
description: 'LogSeverityScreen is the log severity above which logs
are sent to the stdout. [Default: Info]'
type: string
prometheusMetricsPort:
description: 'PrometheusMetricsPort is the TCP port that the Prometheus
metrics server should bind to. Set to 0 to disable. [Default: 9094]'
type: integer
required:
- controllers
type: object
status:
description: |-
KubeControllersConfigurationStatus represents the status of the configuration. It's useful for admins to
be able to see the actual config that was applied, which can be modified by environment variables on the
kube-controllers process.
properties:
environmentVars:
additionalProperties:
type: string
description: |-
EnvironmentVars contains the environment variables on the kube-controllers that influenced
the RunningConfig.
type: object
runningConfig:
description: |-
RunningConfig contains the effective config that is running in the kube-controllers pod, after
merging the API resource with any environment variables.
properties:
controllers:
description: Controllers enables and configures individual Kubernetes
controllers
properties:
loadBalancer:
description: LoadBalancer enables and configures the LoadBalancer
controller. Enabled by default, set to nil to disable.
properties:
assignIPs:
type: string
type: object
namespace:
description: Namespace enables and configures the namespace
controller. Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform
reconciliation with the Calico datastore. [Default:
5m]'
type: string
type: object
node:
description: Node enables and configures the node controller.
Enabled by default, set to nil to disable.
properties:
hostEndpoint:
description: HostEndpoint controls syncing nodes to host
endpoints. Disabled by default, set to nil to disable.
properties:
autoCreate:
description: 'AutoCreate enables automatic creation
of host endpoints for every node. [Default: Disabled]'
type: string
createDefaultHostEndpoint:
type: string
templates:
description: Templates contains definition for creating
AutoHostEndpoints
items:
properties:
generateName:
description: GenerateName is appended to the
end of the generated AutoHostEndpoint name
type: string
interfaceCIDRs:
description: InterfaceCIDRs contains a list
of CIRDs used for matching nodeIPs to the
AutoHostEndpoint
items:
type: string
type: array
labels:
additionalProperties:
type: string
description: Labels adds the specified labels
to the generated AutoHostEndpoint, labels
from node with the same name will be overwritten
by values from the template label
type: object
nodeSelector:
description: NodeSelector allows the AutoHostEndpoint
to be created only for specific nodes
type: string
type: object
type: array
type: object
leakGracePeriod:
description: |-
LeakGracePeriod is the period used by the controller to determine if an IP address has been leaked.
Set to 0 to disable IP garbage collection. [Default: 15m]
type: string
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform
reconciliation with the Calico datastore. [Default:
5m]'
type: string
syncLabels:
description: 'SyncLabels controls whether to copy Kubernetes
node labels to Calico nodes. [Default: Enabled]'
type: string
type: object
policy:
description: Policy enables and configures the policy controller.
Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform
reconciliation with the Calico datastore. [Default:
5m]'
type: string
type: object
serviceAccount:
description: ServiceAccount enables and configures the service
account controller. Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform
reconciliation with the Calico datastore. [Default:
5m]'
type: string
type: object
workloadEndpoint:
description: WorkloadEndpoint enables and configures the workload
endpoint controller. Enabled by default, set to nil to disable.
properties:
reconcilerPeriod:
description: 'ReconcilerPeriod is the period to perform
reconciliation with the Calico datastore. [Default:
5m]'
type: string
type: object
type: object
debugProfilePort:
description: |-
DebugProfilePort configures the port to serve memory and cpu profiles on. If not specified, profiling
is disabled.
format: int32
type: integer
etcdV3CompactionPeriod:
description: 'EtcdV3CompactionPeriod is the period between etcdv3
compaction requests. Set to 0 to disable. [Default: 10m]'
type: string
healthChecks:
description: 'HealthChecks enables or disables support for health
checks [Default: Enabled]'
type: string
logSeverityScreen:
description: 'LogSeverityScreen is the log severity above which
logs are sent to the stdout. [Default: Info]'
type: string
prometheusMetricsPort:
description: 'PrometheusMetricsPort is the TCP port that the Prometheus
metrics server should bind to. Set to 0 to disable. [Default:
9094]'
type: integer
required:
- controllers
type: object
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_networkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: networkpolicies.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: NetworkPolicy
listKind: NetworkPolicyList
plural: networkpolicies
singular: networkpolicy
preserveUnknownFields: false
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
egress:
description: |-
The ordered set of egress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
ingress:
description: |-
The ordered set of ingress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
order:
description: |-
Order is an optional field that specifies the order in which the policy is applied.
Policies with higher "order" are applied after those with lower
order within the same tier. If the order is omitted, it may be considered to be "infinite" - i.e. the
policy will be applied last. Policies with identical order will be applied in
alphanumerical order based on the Policy "Name" within the tier.
type: number
performanceHints:
description: |-
PerformanceHints contains a list of hints to Calico's policy engine to
help process the policy more efficiently. Hints never change the
enforcement behaviour of the policy.
Currently, the only available hint is "AssumeNeededOnEveryNode". When
that hint is set on a policy, Felix will act as if the policy matches
a local endpoint even if it does not. This is useful for "preloading"
any large static policies that are known to be used on every node.
If the policy is _not_ used on a particular node then the work
done to preload the policy (and to maintain it) is wasted.
items:
type: string
type: array
selector:
description: "The selector is an expression used to pick out the endpoints
that the policy should\nbe applied to.\n\nSelector expressions follow
this syntax:\n\n\tlabel == \"string_literal\" -> comparison, e.g.
my_label == \"foo bar\"\n\tlabel != \"string_literal\" -> not
equal; also matches if label is not present\n\tlabel in { \"a\",
\"b\", \"c\", ... } -> true if the value of label X is one of
\"a\", \"b\", \"c\"\n\tlabel not in { \"a\", \"b\", \"c\", ... }
\ -> true if the value of label X is not one of \"a\", \"b\", \"c\"\n\thas(label_name)
\ -> True if that label is present\n\t! expr -> negation of expr\n\texpr
&& expr -> Short-circuit and\n\texpr || expr -> Short-circuit
or\n\t( expr ) -> parens for grouping\n\tall() or the empty selector
-> matches all endpoints.\n\nLabel names are allowed to contain
alphanumerics, -, _ and /. String literals are more permissive\nbut
they do not support escape characters.\n\nExamples (with made-up
labels):\n\n\ttype == \"webserver\" && deployment == \"prod\"\n\ttype
in {\"frontend\", \"backend\"}\n\tdeployment != \"dev\"\n\t! has(label_name)"
type: string
serviceAccountSelector:
description: ServiceAccountSelector is an optional field for an expression
used to select a pod based on service accounts.
type: string
tier:
description: |-
The name of the tier that this policy belongs to. If this is omitted, the default
tier (name is "default") is assumed. The specified tier must exist in order to create
security policies within the tier, the "default" tier is created automatically if it
does not exist, this means for deployments requiring only a single Tier, the tier name
may be omitted on all policy management requests.
type: string
types:
description: |-
Types indicates whether this policy applies to ingress, or to egress, or to both. When
not explicitly specified (and so the value on creation is empty or nil), Calico defaults
Types according to what Ingress and Egress are present in the policy. The
default is:
- [ PolicyTypeIngress ], if there are no Egress rules (including the case where there are
also no Ingress rules)
- [ PolicyTypeEgress ], if there are Egress rules but no Ingress rules
- [ PolicyTypeIngress, PolicyTypeEgress ], if there are both Ingress and Egress rules.
When the policy is read back again, Types will always be one of these values, never empty
or nil.
items:
description: PolicyType enumerates the possible values of the PolicySpec
Types field.
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_networksets.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: networksets.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: NetworkSet
listKind: NetworkSetList
plural: networksets
singular: networkset
preserveUnknownFields: false
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
description: NetworkSet is the Namespaced-equivalent of the GlobalNetworkSet.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: NetworkSetSpec contains the specification for a NetworkSet
resource.
properties:
nets:
description: The list of IP networks that belong to this set.
items:
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_stagedglobalnetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: stagedglobalnetworkpolicies.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: StagedGlobalNetworkPolicy
listKind: StagedGlobalNetworkPolicyList
plural: stagedglobalnetworkpolicies
singular: stagedglobalnetworkpolicy
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
applyOnForward:
description: ApplyOnForward indicates to apply the rules in this policy
on forward traffic.
type: boolean
doNotTrack:
description: |-
DoNotTrack indicates whether packets matched by the rules in this policy should go through
the data plane's connection tracking, such as Linux conntrack. If True, the rules in
this policy are applied before any data plane connection tracking, and packets allowed by
this policy are marked as not to be tracked.
type: boolean
egress:
description: |-
The ordered set of egress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
ingress:
description: |-
The ordered set of ingress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
namespaceSelector:
description: NamespaceSelector is an optional field for an expression
used to select a pod based on namespaces.
type: string
order:
description: |-
Order is an optional field that specifies the order in which the policy is applied.
Policies with higher "order" are applied after those with lower
order within the same tier. If the order is omitted, it may be considered to be "infinite" - i.e. the
policy will be applied last. Policies with identical order will be applied in
alphanumerical order based on the Policy "Name" within the tier.
type: number
performanceHints:
description: |-
PerformanceHints contains a list of hints to Calico's policy engine to
help process the policy more efficiently. Hints never change the
enforcement behaviour of the policy.
Currently, the only available hint is "AssumeNeededOnEveryNode". When
that hint is set on a policy, Felix will act as if the policy matches
a local endpoint even if it does not. This is useful for "preloading"
any large static policies that are known to be used on every node.
If the policy is _not_ used on a particular node then the work
done to preload the policy (and to maintain it) is wasted.
items:
type: string
type: array
preDNAT:
description: PreDNAT indicates to apply the rules in this policy before
any DNAT.
type: boolean
selector:
description: "The selector is an expression used to pick pick out
the endpoints that the policy should\nbe applied to.\n\nSelector
expressions follow this syntax:\n\n\tlabel == \"string_literal\"
\ -> comparison, e.g. my_label == \"foo bar\"\n\tlabel != \"string_literal\"
\ -> not equal; also matches if label is not present\n\tlabel
in { \"a\", \"b\", \"c\", ... } -> true if the value of label
X is one of \"a\", \"b\", \"c\"\n\tlabel not in { \"a\", \"b\",
\"c\", ... } -> true if the value of label X is not one of \"a\",
\"b\", \"c\"\n\thas(label_name) -> True if that label is present\n\t!
expr -> negation of expr\n\texpr && expr -> Short-circuit and\n\texpr
|| expr -> Short-circuit or\n\t( expr ) -> parens for grouping\n\tall()
or the empty selector -> matches all endpoints.\n\nLabel names are
allowed to contain alphanumerics, -, _ and /. String literals are
more permissive\nbut they do not support escape characters.\n\nExamples
(with made-up labels):\n\n\ttype == \"webserver\" && deployment
== \"prod\"\n\ttype in {\"frontend\", \"backend\"}\n\tdeployment
!= \"dev\"\n\t! has(label_name)"
type: string
serviceAccountSelector:
description: ServiceAccountSelector is an optional field for an expression
used to select a pod based on service accounts.
type: string
stagedAction:
description: The staged action. If this is omitted, the default is
Set.
type: string
tier:
description: |-
The name of the tier that this policy belongs to. If this is omitted, the default
tier (name is "default") is assumed. The specified tier must exist in order to create
security policies within the tier, the "default" tier is created automatically if it
does not exist, this means for deployments requiring only a single Tier, the tier name
may be omitted on all policy management requests.
type: string
types:
description: |-
Types indicates whether this policy applies to ingress, or to egress, or to both. When
not explicitly specified (and so the value on creation is empty or nil), Calico defaults
Types according to what Ingress and Egress rules are present in the policy. The
default is:
- [ PolicyTypeIngress ], if there are no Egress rules (including the case where there are
also no Ingress rules)
- [ PolicyTypeEgress ], if there are Egress rules but no Ingress rules
- [ PolicyTypeIngress, PolicyTypeEgress ], if there are both Ingress and Egress rules.
When the policy is read back again, Types will always be one of these values, never empty
or nil.
items:
description: PolicyType enumerates the possible values of the PolicySpec
Types field.
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_stagedkubernetesnetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: stagedkubernetesnetworkpolicies.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: StagedKubernetesNetworkPolicy
listKind: StagedKubernetesNetworkPolicyList
plural: stagedkubernetesnetworkpolicies
singular: stagedkubernetesnetworkpolicy
preserveUnknownFields: false
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
egress:
description: |-
List of egress rules to be applied to the selected pods. Outgoing traffic is
allowed if there are no NetworkPolicies selecting the pod (and cluster policy
otherwise allows the traffic), OR if the traffic matches at least one egress rule
across all of the NetworkPolicy objects whose podSelector matches the pod. If
this field is empty then this NetworkPolicy limits all outgoing traffic (and serves
solely to ensure that the pods it selects are isolated by default).
This field is beta-level in 1.8
items:
description: |-
NetworkPolicyEgressRule describes a particular set of traffic that is allowed out of pods
matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and to.
This type is beta-level in 1.8
properties:
ports:
description: |-
ports is a list of destination ports for outgoing traffic.
Each item in this list is combined using a logical OR. If this field is
empty or missing, this rule matches all ports (traffic not restricted by port).
If this field is present and contains at least one item, then this rule allows
traffic only if the traffic matches at least one port in the list.
items:
description: NetworkPolicyPort describes a port to allow traffic
on
properties:
endPort:
description: |-
endPort indicates that the range of ports from port to endPort if set, inclusive,
should be allowed by the policy. This field cannot be defined if the port field
is not defined or if the port field is defined as a named (string) port.
The endPort must be equal or greater than port.
format: int32
type: integer
port:
anyOf:
- type: integer
- type: string
description: |-
port represents the port on the given protocol. This can either be a numerical or named
port on a pod. If this field is not provided, this matches all port names and
numbers.
If present, only traffic on the specified protocol AND port will be matched.
x-kubernetes-int-or-string: true
protocol:
description: |-
protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match.
If not specified, this field defaults to TCP.
type: string
type: object
type: array
x-kubernetes-list-type: atomic
to:
description: |-
to is a list of destinations for outgoing traffic of pods selected for this rule.
Items in this list are combined using a logical OR operation. If this field is
empty or missing, this rule matches all destinations (traffic not restricted by
destination). If this field is present and contains at least one item, this rule
allows traffic only if the traffic matches at least one item in the to list.
items:
description: |-
NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of
fields are allowed
properties:
ipBlock:
description: |-
ipBlock defines policy on a particular IPBlock. If this field is set then
neither of the other fields can be.
properties:
cidr:
description: |-
cidr is a string representing the IPBlock
Valid examples are "192.168.1.0/24" or "2001:db8::/64"
type: string
except:
description: |-
except is a slice of CIDRs that should not be included within an IPBlock
Valid examples are "192.168.1.0/24" or "2001:db8::/64"
Except values will be rejected if they are outside the cidr range
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- cidr
type: object
namespaceSelector:
description: |-
namespaceSelector selects namespaces using cluster-scoped labels. This field follows
standard label selector semantics; if present but empty, it selects all namespaces.
If podSelector is also set, then the NetworkPolicyPeer as a whole selects
the pods matching podSelector in the namespaces selected by namespaceSelector.
Otherwise it selects all pods in the namespaces selected by namespaceSelector.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
podSelector is a label selector which selects pods. This field follows standard label
selector semantics; if present but empty, it selects all pods.
If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects
the pods matching podSelector in the Namespaces selected by NamespaceSelector.
Otherwise it selects the pods matching podSelector in the policy's own namespace.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
type: object
type: array
x-kubernetes-list-type: atomic
type: object
type: array
ingress:
description: |-
List of ingress rules to be applied to the selected pods. Traffic is allowed to
a pod if there are no NetworkPolicies selecting the pod
(and cluster policy otherwise allows the traffic), OR if the traffic source is
the pod's local node, OR if the traffic matches at least one ingress rule
across all of the NetworkPolicy objects whose podSelector matches the pod. If
this field is empty then this NetworkPolicy does not allow any traffic (and serves
solely to ensure that the pods it selects are isolated by default)
items:
description: |-
NetworkPolicyIngressRule describes a particular set of traffic that is allowed to the pods
matched by a NetworkPolicySpec's podSelector. The traffic must match both ports and from.
properties:
from:
description: |-
from is a list of sources which should be able to access the pods selected for this rule.
Items in this list are combined using a logical OR operation. If this field is
empty or missing, this rule matches all sources (traffic not restricted by
source). If this field is present and contains at least one item, this rule
allows traffic only if the traffic matches at least one item in the from list.
items:
description: |-
NetworkPolicyPeer describes a peer to allow traffic to/from. Only certain combinations of
fields are allowed
properties:
ipBlock:
description: |-
ipBlock defines policy on a particular IPBlock. If this field is set then
neither of the other fields can be.
properties:
cidr:
description: |-
cidr is a string representing the IPBlock
Valid examples are "192.168.1.0/24" or "2001:db8::/64"
type: string
except:
description: |-
except is a slice of CIDRs that should not be included within an IPBlock
Valid examples are "192.168.1.0/24" or "2001:db8::/64"
Except values will be rejected if they are outside the cidr range
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- cidr
type: object
namespaceSelector:
description: |-
namespaceSelector selects namespaces using cluster-scoped labels. This field follows
standard label selector semantics; if present but empty, it selects all namespaces.
If podSelector is also set, then the NetworkPolicyPeer as a whole selects
the pods matching podSelector in the namespaces selected by namespaceSelector.
Otherwise it selects all pods in the namespaces selected by namespaceSelector.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
podSelector is a label selector which selects pods. This field follows standard label
selector semantics; if present but empty, it selects all pods.
If namespaceSelector is also set, then the NetworkPolicyPeer as a whole selects
the pods matching podSelector in the Namespaces selected by NamespaceSelector.
Otherwise it selects the pods matching podSelector in the policy's own namespace.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
type: object
type: array
x-kubernetes-list-type: atomic
ports:
description: |-
ports is a list of ports which should be made accessible on the pods selected for
this rule. Each item in this list is combined using a logical OR. If this field is
empty or missing, this rule matches all ports (traffic not restricted by port).
If this field is present and contains at least one item, then this rule allows
traffic only if the traffic matches at least one port in the list.
items:
description: NetworkPolicyPort describes a port to allow traffic
on
properties:
endPort:
description: |-
endPort indicates that the range of ports from port to endPort if set, inclusive,
should be allowed by the policy. This field cannot be defined if the port field
is not defined or if the port field is defined as a named (string) port.
The endPort must be equal or greater than port.
format: int32
type: integer
port:
anyOf:
- type: integer
- type: string
description: |-
port represents the port on the given protocol. This can either be a numerical or named
port on a pod. If this field is not provided, this matches all port names and
numbers.
If present, only traffic on the specified protocol AND port will be matched.
x-kubernetes-int-or-string: true
protocol:
description: |-
protocol represents the protocol (TCP, UDP, or SCTP) which traffic must match.
If not specified, this field defaults to TCP.
type: string
type: object
type: array
x-kubernetes-list-type: atomic
type: object
type: array
podSelector:
description: |-
Selects the pods to which this NetworkPolicy object applies. The array of
ingress rules is applied to any pods selected by this field. Multiple network
policies can select the same set of pods. In this case, the ingress rules for
each are combined additively. This field is NOT optional and follows standard
label selector semantics. An empty podSelector matches all pods in this
namespace.
properties:
matchExpressions:
description: matchExpressions is a list of label selector requirements.
The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector applies
to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
policyTypes:
description: |-
List of rule types that the NetworkPolicy relates to.
Valid options are Ingress, Egress, or Ingress,Egress.
If this field is not specified, it will default based on the existence of Ingress or Egress rules;
policies that contain an Egress section are assumed to affect Egress, and all policies
(whether or not they contain an Ingress section) are assumed to affect Ingress.
If you want to write an egress-only policy, you must explicitly specify policyTypes [ "Egress" ].
Likewise, if you want to write a policy that specifies that no egress is allowed,
you must specify a policyTypes value that include "Egress" (since such a policy would not include
an Egress section and would otherwise default to just [ "Ingress" ]).
This field is beta-level in 1.8
items:
description: |-
PolicyType string describes the NetworkPolicy type
This type is beta-level in 1.8
type: string
type: array
stagedAction:
description: The staged action. If this is omitted, the default is
Set.
type: string
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_stagednetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: stagednetworkpolicies.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: StagedNetworkPolicy
listKind: StagedNetworkPolicyList
plural: stagednetworkpolicies
singular: stagednetworkpolicy
preserveUnknownFields: false
scope: Namespaced
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
properties:
egress:
description: |-
The ordered set of egress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
ingress:
description: |-
The ordered set of ingress rules. Each rule contains a set of packet match criteria and
a corresponding action to apply.
items:
description: |-
A Rule encapsulates a set of match criteria and an action. Both selector-based security Policy
and security Profiles reference rules - separated out as a list of rules for both
ingress and egress packet matching.
Each positive match criteria has a negated version, prefixed with "Not". All the match
criteria within a rule must be satisfied for a packet to match. A single rule can contain
the positive and negative version of a match and both must be satisfied for the rule to match.
properties:
action:
type: string
destination:
description: Destination contains the match criteria that apply
to destination entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
http:
description: HTTP contains match criteria that apply to HTTP
requests.
properties:
methods:
description: |-
Methods is an optional field that restricts the rule to apply only to HTTP requests that use one of the listed
HTTP Methods (e.g. GET, PUT, etc.)
Multiple methods are OR'd together.
items:
type: string
type: array
paths:
description: |-
Paths is an optional field that restricts the rule to apply to HTTP requests that use one of the listed
HTTP Paths.
Multiple paths are OR'd together.
e.g:
- exact: /foo
- prefix: /bar
NOTE: Each entry may ONLY specify either a `exact` or a `prefix` match. The validator will check for it.
items:
description: |-
HTTPPath specifies an HTTP path to match. It may be either of the form:
exact: <path>: which matches the path exactly or
prefix: <path-prefix>: which matches the path prefix
properties:
exact:
type: string
prefix:
type: string
type: object
type: array
type: object
icmp:
description: |-
ICMP is an optional field that restricts the rule to apply to a specific type and
code of ICMP traffic. This should only be specified if the Protocol field is set to
"ICMP" or "ICMPv6".
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
ipVersion:
description: |-
IPVersion is an optional field that restricts the rule to only match a specific IP
version.
type: integer
metadata:
description: Metadata contains additional information for this
rule
properties:
annotations:
additionalProperties:
type: string
description: Annotations is a set of key value pairs that
give extra information about the rule
type: object
type: object
notICMP:
description: NotICMP is the negated version of the ICMP field.
properties:
code:
description: |-
Match on a specific ICMP code. If specified, the Type value must also be specified.
This is a technical limitation imposed by the kernel's iptables firewall, which
Calico uses to enforce the rule.
type: integer
type:
description: |-
Match on a specific ICMP type. For example a value of 8 refers to ICMP Echo Request
(i.e. pings).
type: integer
type: object
notProtocol:
anyOf:
- type: integer
- type: string
description: NotProtocol is the negated version of the Protocol
field.
pattern: ^.*
x-kubernetes-int-or-string: true
protocol:
anyOf:
- type: integer
- type: string
description: |-
Protocol is an optional field that restricts the rule to only apply to traffic of
a specific IP protocol. Required if any of the EntityRules contain Ports
(because ports only apply to certain protocols).
Must be one of these string values: "TCP", "UDP", "ICMP", "ICMPv6", "SCTP", "UDPLite"
or an integer in the range 1-255.
pattern: ^.*
x-kubernetes-int-or-string: true
source:
description: Source contains the match criteria that apply to
source entity.
properties:
namespaceSelector:
description: |-
NamespaceSelector is an optional field that contains a selector expression. Only traffic
that originates from (or terminates at) endpoints within the selected namespaces will be
matched. When both NamespaceSelector and another selector are defined on the same rule, then only
workload endpoints that are matched by both selectors will be selected by the rule.
For NetworkPolicy, an empty NamespaceSelector implies that the Selector is limited to selecting
only workload endpoints in the same namespace as the NetworkPolicy.
For NetworkPolicy, `global()` NamespaceSelector implies that the Selector is limited to selecting
only GlobalNetworkSet or HostEndpoint.
For GlobalNetworkPolicy, an empty NamespaceSelector implies the Selector applies to workload
endpoints across all namespaces.
type: string
nets:
description: |-
Nets is an optional field that restricts the rule to only apply to traffic that
originates from (or terminates at) IP addresses in any of the given subnets.
items:
type: string
type: array
notNets:
description: NotNets is the negated version of the Nets
field.
items:
type: string
type: array
notPorts:
description: |-
NotPorts is the negated version of the Ports field.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
notSelector:
description: |-
NotSelector is the negated version of the Selector field. See Selector field for
subtleties with negated selectors.
type: string
ports:
description: |-
Ports is an optional field that restricts the rule to only apply to traffic that has a
source (destination) port that matches one of these ranges/values. This value is a
list of integers or strings that represent ranges of ports.
Since only some protocols have ports, if any ports are specified it requires the
Protocol match in the Rule to be set to "TCP" or "UDP".
items:
anyOf:
- type: integer
- type: string
pattern: ^.*
x-kubernetes-int-or-string: true
type: array
selector:
description: "Selector is an optional field that contains
a selector expression (see Policy for\nsample syntax).
\ Only traffic that originates from (terminates at) endpoints
matching\nthe selector will be matched.\n\nNote that:
in addition to the negated version of the Selector (see
NotSelector below), the\nselector expression syntax itself
supports negation. The two types of negation are subtly\ndifferent.
One negates the set of matched endpoints, the other negates
the whole match:\n\n\tSelector = \"!has(my_label)\" matches
packets that are from other Calico-controlled\n\tendpoints
that do not have the label \"my_label\".\n\n\tNotSelector
= \"has(my_label)\" matches packets that are not from
Calico-controlled\n\tendpoints that do have the label
\"my_label\".\n\nThe effect is that the latter will accept
packets from non-Calico sources whereas the\nformer is
limited to packets from Calico-controlled endpoints."
type: string
serviceAccounts:
description: |-
ServiceAccounts is an optional field that restricts the rule to only apply to traffic that originates from (or
terminates at) a pod running as a matching service account.
properties:
names:
description: |-
Names is an optional field that restricts the rule to only apply to traffic that originates from (or terminates
at) a pod running as a service account whose name is in the list.
items:
type: string
type: array
selector:
description: |-
Selector is an optional field that restricts the rule to only apply to traffic that originates from
(or terminates at) a pod running as a service account that matches the given label selector.
If both Names and Selector are specified then they are AND'ed.
type: string
type: object
services:
description: |-
Services is an optional field that contains options for matching Kubernetes Services.
If specified, only traffic that originates from or terminates at endpoints within the selected
service(s) will be matched, and only to/from each endpoint's port.
Services cannot be specified on the same rule as Selector, NotSelector, NamespaceSelector, Nets,
NotNets or ServiceAccounts.
Ports and NotPorts can only be specified with Services on ingress rules.
properties:
name:
description: Name specifies the name of a Kubernetes
Service to match.
type: string
namespace:
description: |-
Namespace specifies the namespace of the given Service. If left empty, the rule
will match within this policy's namespace.
type: string
type: object
type: object
required:
- action
type: object
type: array
order:
description: |-
Order is an optional field that specifies the order in which the policy is applied.
Policies with higher "order" are applied after those with lower
order within the same tier. If the order is omitted, it may be considered to be "infinite" - i.e. the
policy will be applied last. Policies with identical order will be applied in
alphanumerical order based on the Policy "Name" within the tier.
type: number
performanceHints:
description: |-
PerformanceHints contains a list of hints to Calico's policy engine to
help process the policy more efficiently. Hints never change the
enforcement behaviour of the policy.
Currently, the only available hint is "AssumeNeededOnEveryNode". When
that hint is set on a policy, Felix will act as if the policy matches
a local endpoint even if it does not. This is useful for "preloading"
any large static policies that are known to be used on every node.
If the policy is _not_ used on a particular node then the work
done to preload the policy (and to maintain it) is wasted.
items:
type: string
type: array
selector:
description: "The selector is an expression used to pick pick out
the endpoints that the policy should\nbe applied to.\n\nSelector
expressions follow this syntax:\n\n\tlabel == \"string_literal\"
\ -> comparison, e.g. my_label == \"foo bar\"\n\tlabel != \"string_literal\"
\ -> not equal; also matches if label is not present\n\tlabel
in { \"a\", \"b\", \"c\", ... } -> true if the value of label
X is one of \"a\", \"b\", \"c\"\n\tlabel not in { \"a\", \"b\",
\"c\", ... } -> true if the value of label X is not one of \"a\",
\"b\", \"c\"\n\thas(label_name) -> True if that label is present\n\t!
expr -> negation of expr\n\texpr && expr -> Short-circuit and\n\texpr
|| expr -> Short-circuit or\n\t( expr ) -> parens for grouping\n\tall()
or the empty selector -> matches all endpoints.\n\nLabel names are
allowed to contain alphanumerics, -, _ and /. String literals are
more permissive\nbut they do not support escape characters.\n\nExamples
(with made-up labels):\n\n\ttype == \"webserver\" && deployment
== \"prod\"\n\ttype in {\"frontend\", \"backend\"}\n\tdeployment
!= \"dev\"\n\t! has(label_name)"
type: string
serviceAccountSelector:
description: ServiceAccountSelector is an optional field for an expression
used to select a pod based on service accounts.
type: string
stagedAction:
description: The staged action. If this is omitted, the default is
Set.
type: string
tier:
description: |-
The name of the tier that this policy belongs to. If this is omitted, the default
tier (name is "default") is assumed. The specified tier must exist in order to create
security policies within the tier, the "default" tier is created automatically if it
does not exist, this means for deployments requiring only a single Tier, the tier name
may be omitted on all policy management requests.
type: string
types:
description: |-
Types indicates whether this policy applies to ingress, or to egress, or to both. When
not explicitly specified (and so the value on creation is empty or nil), Calico defaults
Types according to what Ingress and Egress are present in the policy. The
default is:
- [ PolicyTypeIngress ], if there are no Egress rules (including the case where there are
also no Ingress rules)
- [ PolicyTypeEgress ], if there are Egress rules but no Ingress rules
- [ PolicyTypeIngress, PolicyTypeEgress ], if there are both Ingress and Egress rules.
When the policy is read back again, Types will always be one of these values, never empty
or nil.
items:
description: PolicyType enumerates the possible values of the PolicySpec
Types field.
type: string
type: array
type: object
type: object
served: true
storage: true
---
# Source: crds/crd.projectcalico.org_tiers.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: tiers.crd.projectcalico.org
spec:
group: crd.projectcalico.org
names:
kind: Tier
listKind: TierList
plural: tiers
singular: tier
preserveUnknownFields: false
scope: Cluster
versions:
- name: v1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: TierSpec contains the specification for a security policy
tier resource.
properties:
defaultAction:
description: |-
DefaultAction specifies the action applied to workloads selected by a policy in the tier,
but not rule matched the workload's traffic.
[Default: Deny]
enum:
- Pass
- Deny
type: string
order:
description: |-
Order is an optional field that specifies the order in which the tier is applied.
Tiers with higher "order" are applied after those with lower order. If the order
is omitted, it may be considered to be "infinite" - i.e. the tier will be applied
last. Tiers with identical order will be applied in alphanumerical order based
on the Tier "Name".
type: number
type: object
type: object
served: true
storage: true
---
# Source: crds/policy.networking.k8s.io_adminnetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/network-policy-api/pull/30
policy.networking.k8s.io/bundle-version: v0.1.1
policy.networking.k8s.io/channel: experimental
creationTimestamp: null
name: adminnetworkpolicies.policy.networking.k8s.io
spec:
group: policy.networking.k8s.io
names:
kind: AdminNetworkPolicy
listKind: AdminNetworkPolicyList
plural: adminnetworkpolicies
shortNames:
- anp
singular: adminnetworkpolicy
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .spec.priority
name: Priority
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
AdminNetworkPolicy is a cluster level resource that is part of the
AdminNetworkPolicy API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Specification of the desired behavior of AdminNetworkPolicy.
properties:
egress:
description: |-
Egress is the list of Egress rules to be applied to the selected pods.
A total of 100 rules will be allowed in each ANP instance.
The relative precedence of egress rules within a single ANP object (all of
which share the priority) will be determined by the order in which the rule
is written. Thus, a rule that appears at the top of the egress rules
would take the highest precedence.
ANPs with no egress rules do not affect egress traffic.
Support: Core
items:
description: |-
AdminNetworkPolicyEgressRule describes an action to take on a particular
set of traffic originating from pods selected by a AdminNetworkPolicy's
Subject field.
<network-policy-api:experimental:validation>
properties:
action:
description: |-
Action specifies the effect this rule will have on matching traffic.
Currently the following actions are supported:
Allow: allows the selected traffic (even if it would otherwise have been denied by NetworkPolicy)
Deny: denies the selected traffic
Pass: instructs the selected traffic to skip any remaining ANP rules, and
then pass execution to any NetworkPolicies that select the pod.
If the pod is not selected by any NetworkPolicies then execution
is passed to any BaselineAdminNetworkPolicies that select the pod.
Support: Core
enum:
- Allow
- Deny
- Pass
type: string
name:
description: |-
Name is an identifier for this rule, that may be no more than 100 characters
in length. This field should be used by the implementation to help
improve observability, readability and error-reporting for any applied
AdminNetworkPolicies.
Support: Core
maxLength: 100
type: string
ports:
description: |-
Ports allows for matching traffic based on port and protocols.
This field is a list of destination ports for the outgoing egress traffic.
If Ports is not set then the rule does not filter traffic via port.
Support: Core
items:
description: |-
AdminNetworkPolicyPort describes how to select network ports on pod(s).
Exactly one field must be set.
maxProperties: 1
minProperties: 1
properties:
namedPort:
description: |-
NamedPort selects a port on a pod(s) based on name.
Support: Extended
<network-policy-api:experimental>
type: string
portNumber:
description: |-
Port selects a port on a pod(s) based on number.
Support: Core
properties:
port:
description: |-
Number defines a network port value.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
required:
- port
- protocol
type: object
portRange:
description: |-
PortRange selects a port range on a pod(s) based on provided start and end
values.
Support: Core
properties:
end:
description: |-
End defines a network port that is the end of a port range, the End value
must be greater than Start.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
start:
description: |-
Start defines a network port that is the start of a port range, the Start
value must be less than End.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- end
- start
type: object
type: object
maxItems: 100
type: array
to:
description: |-
To is the List of destinations whose traffic this rule applies to.
If any AdminNetworkPolicyEgressPeer matches the destination of outgoing
traffic then the specified action is applied.
This field must be defined and contain at least one item.
Support: Core
items:
description: |-
AdminNetworkPolicyEgressPeer defines a peer to allow traffic to.
Exactly one of the selector pointers must be set for a given peer. If a
consumer observes none of its fields are set, they must assume an unknown
option has been specified and fail closed.
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: |-
Namespaces defines a way to select all pods within a set of Namespaces.
Note that host-networked pods are not included in this type of peer.
Support: Core
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
networks:
description: |-
Networks defines a way to select peers via CIDR blocks.
This is intended for representing entities that live outside the cluster,
which can't be selected by pods, namespaces and nodes peers, but note
that cluster-internal traffic will be checked against the rule as
well. So if you Allow or Deny traffic to `"0.0.0.0/0"`, that will allow
or deny all IPv4 pod-to-pod traffic as well. If you don't want that,
add a rule that Passes all pod traffic before the Networks rule.
Each item in Networks should be provided in the CIDR format and should be
IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8".
Networks can have upto 25 CIDRs specified.
Support: Extended
<network-policy-api:experimental>
items:
description: |-
CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8").
This string must be validated by implementations using net.ParseCIDR
TODO: Introduce CEL CIDR validation regex isCIDR() in Kube 1.31 when it is available.
maxLength: 43
type: string
x-kubernetes-validations:
- message: CIDR must be either an IPv4 or IPv6 address.
IPv4 address embedded in IPv6 addresses are not
supported
rule: self.contains(':') != self.contains('.')
maxItems: 25
minItems: 1
type: array
x-kubernetes-list-type: set
nodes:
description: |-
Nodes defines a way to select a set of nodes in
the cluster. This field follows standard label selector
semantics; if present but empty, it selects all Nodes.
Support: Extended
<network-policy-api:experimental>
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: |-
Pods defines a way to select a set of pods in
a set of namespaces. Note that host-networked pods
are not included in this type of peer.
Support: Core
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
maxItems: 100
minItems: 1
type: array
required:
- action
- to
type: object
x-kubernetes-validations:
- message: networks/nodes peer cannot be set with namedPorts since
there are no namedPorts for networks/nodes
rule: '!(self.to.exists(peer, has(peer.networks) || has(peer.nodes))
&& has(self.ports) && self.ports.exists(port, has(port.namedPort)))'
maxItems: 100
type: array
ingress:
description: |-
Ingress is the list of Ingress rules to be applied to the selected pods.
A total of 100 rules will be allowed in each ANP instance.
The relative precedence of ingress rules within a single ANP object (all of
which share the priority) will be determined by the order in which the rule
is written. Thus, a rule that appears at the top of the ingress rules
would take the highest precedence.
ANPs with no ingress rules do not affect ingress traffic.
Support: Core
items:
description: |-
AdminNetworkPolicyIngressRule describes an action to take on a particular
set of traffic destined for pods selected by an AdminNetworkPolicy's
Subject field.
properties:
action:
description: |-
Action specifies the effect this rule will have on matching traffic.
Currently the following actions are supported:
Allow: allows the selected traffic (even if it would otherwise have been denied by NetworkPolicy)
Deny: denies the selected traffic
Pass: instructs the selected traffic to skip any remaining ANP rules, and
then pass execution to any NetworkPolicies that select the pod.
If the pod is not selected by any NetworkPolicies then execution
is passed to any BaselineAdminNetworkPolicies that select the pod.
Support: Core
enum:
- Allow
- Deny
- Pass
type: string
from:
description: |-
From is the list of sources whose traffic this rule applies to.
If any AdminNetworkPolicyIngressPeer matches the source of incoming
traffic then the specified action is applied.
This field must be defined and contain at least one item.
Support: Core
items:
description: |-
AdminNetworkPolicyIngressPeer defines an in-cluster peer to allow traffic from.
Exactly one of the selector pointers must be set for a given peer. If a
consumer observes none of its fields are set, they must assume an unknown
option has been specified and fail closed.
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: |-
Namespaces defines a way to select all pods within a set of Namespaces.
Note that host-networked pods are not included in this type of peer.
Support: Core
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: |-
Pods defines a way to select a set of pods in
a set of namespaces. Note that host-networked pods
are not included in this type of peer.
Support: Core
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
maxItems: 100
minItems: 1
type: array
name:
description: |-
Name is an identifier for this rule, that may be no more than 100 characters
in length. This field should be used by the implementation to help
improve observability, readability and error-reporting for any applied
AdminNetworkPolicies.
Support: Core
maxLength: 100
type: string
ports:
description: |-
Ports allows for matching traffic based on port and protocols.
This field is a list of ports which should be matched on
the pods selected for this policy i.e the subject of the policy.
So it matches on the destination port for the ingress traffic.
If Ports is not set then the rule does not filter traffic via port.
Support: Core
items:
description: |-
AdminNetworkPolicyPort describes how to select network ports on pod(s).
Exactly one field must be set.
maxProperties: 1
minProperties: 1
properties:
namedPort:
description: |-
NamedPort selects a port on a pod(s) based on name.
Support: Extended
<network-policy-api:experimental>
type: string
portNumber:
description: |-
Port selects a port on a pod(s) based on number.
Support: Core
properties:
port:
description: |-
Number defines a network port value.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
required:
- port
- protocol
type: object
portRange:
description: |-
PortRange selects a port range on a pod(s) based on provided start and end
values.
Support: Core
properties:
end:
description: |-
End defines a network port that is the end of a port range, the End value
must be greater than Start.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
start:
description: |-
Start defines a network port that is the start of a port range, the Start
value must be less than End.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- end
- start
type: object
type: object
maxItems: 100
type: array
required:
- action
- from
type: object
maxItems: 100
type: array
priority:
description: |-
Priority is a value from 0 to 1000. Rules with lower priority values have
higher precedence, and are checked before rules with higher priority values.
All AdminNetworkPolicy rules have higher precedence than NetworkPolicy or
BaselineAdminNetworkPolicy rules
The behavior is undefined if two ANP objects have same priority.
Support: Core
format: int32
maximum: 1000
minimum: 0
type: integer
subject:
description: |-
Subject defines the pods to which this AdminNetworkPolicy applies.
Note that host-networked pods are not included in subject selection.
Support: Core
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: Namespaces is used to select pods via namespace selectors.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: Pods is used to select pods via namespace AND pod
selectors.
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
required:
- priority
- subject
type: object
status:
description: Status is the status to be reported by the implementation.
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
required:
- conditions
type: object
required:
- metadata
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: null
storedVersions: null
---
# Source: crds/policy.networking.k8s.io_baselineadminnetworkpolicies.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
api-approved.kubernetes.io: https://github.com/kubernetes-sigs/network-policy-api/pull/30
policy.networking.k8s.io/bundle-version: v0.1.1
policy.networking.k8s.io/channel: experimental
creationTimestamp: null
name: baselineadminnetworkpolicies.policy.networking.k8s.io
spec:
group: policy.networking.k8s.io
names:
kind: BaselineAdminNetworkPolicy
listKind: BaselineAdminNetworkPolicyList
plural: baselineadminnetworkpolicies
shortNames:
- banp
singular: baselineadminnetworkpolicy
scope: Cluster
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
BaselineAdminNetworkPolicy is a cluster level resource that is part of the
AdminNetworkPolicy API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: Specification of the desired behavior of BaselineAdminNetworkPolicy.
properties:
egress:
description: |-
Egress is the list of Egress rules to be applied to the selected pods if
they are not matched by any AdminNetworkPolicy or NetworkPolicy rules.
A total of 100 Egress rules will be allowed in each BANP instance.
The relative precedence of egress rules within a single BANP object
will be determined by the order in which the rule is written.
Thus, a rule that appears at the top of the egress rules
would take the highest precedence.
BANPs with no egress rules do not affect egress traffic.
Support: Core
items:
description: |-
BaselineAdminNetworkPolicyEgressRule describes an action to take on a particular
set of traffic originating from pods selected by a BaselineAdminNetworkPolicy's
Subject field.
<network-policy-api:experimental:validation>
properties:
action:
description: |-
Action specifies the effect this rule will have on matching traffic.
Currently the following actions are supported:
Allow: allows the selected traffic
Deny: denies the selected traffic
Support: Core
enum:
- Allow
- Deny
type: string
name:
description: |-
Name is an identifier for this rule, that may be no more than 100 characters
in length. This field should be used by the implementation to help
improve observability, readability and error-reporting for any applied
BaselineAdminNetworkPolicies.
Support: Core
maxLength: 100
type: string
ports:
description: |-
Ports allows for matching traffic based on port and protocols.
This field is a list of destination ports for the outgoing egress traffic.
If Ports is not set then the rule does not filter traffic via port.
items:
description: |-
AdminNetworkPolicyPort describes how to select network ports on pod(s).
Exactly one field must be set.
maxProperties: 1
minProperties: 1
properties:
namedPort:
description: |-
NamedPort selects a port on a pod(s) based on name.
Support: Extended
<network-policy-api:experimental>
type: string
portNumber:
description: |-
Port selects a port on a pod(s) based on number.
Support: Core
properties:
port:
description: |-
Number defines a network port value.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
required:
- port
- protocol
type: object
portRange:
description: |-
PortRange selects a port range on a pod(s) based on provided start and end
values.
Support: Core
properties:
end:
description: |-
End defines a network port that is the end of a port range, the End value
must be greater than Start.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
start:
description: |-
Start defines a network port that is the start of a port range, the Start
value must be less than End.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- end
- start
type: object
type: object
maxItems: 100
type: array
to:
description: |-
To is the list of destinations whose traffic this rule applies to.
If any AdminNetworkPolicyEgressPeer matches the destination of outgoing
traffic then the specified action is applied.
This field must be defined and contain at least one item.
Support: Core
items:
description: |-
AdminNetworkPolicyEgressPeer defines a peer to allow traffic to.
Exactly one of the selector pointers must be set for a given peer. If a
consumer observes none of its fields are set, they must assume an unknown
option has been specified and fail closed.
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: |-
Namespaces defines a way to select all pods within a set of Namespaces.
Note that host-networked pods are not included in this type of peer.
Support: Core
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
networks:
description: |-
Networks defines a way to select peers via CIDR blocks.
This is intended for representing entities that live outside the cluster,
which can't be selected by pods, namespaces and nodes peers, but note
that cluster-internal traffic will be checked against the rule as
well. So if you Allow or Deny traffic to `"0.0.0.0/0"`, that will allow
or deny all IPv4 pod-to-pod traffic as well. If you don't want that,
add a rule that Passes all pod traffic before the Networks rule.
Each item in Networks should be provided in the CIDR format and should be
IPv4 or IPv6, for example "10.0.0.0/8" or "fd00::/8".
Networks can have upto 25 CIDRs specified.
Support: Extended
<network-policy-api:experimental>
items:
description: |-
CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8").
This string must be validated by implementations using net.ParseCIDR
TODO: Introduce CEL CIDR validation regex isCIDR() in Kube 1.31 when it is available.
maxLength: 43
type: string
x-kubernetes-validations:
- message: CIDR must be either an IPv4 or IPv6 address.
IPv4 address embedded in IPv6 addresses are not
supported
rule: self.contains(':') != self.contains('.')
maxItems: 25
minItems: 1
type: array
x-kubernetes-list-type: set
nodes:
description: |-
Nodes defines a way to select a set of nodes in
the cluster. This field follows standard label selector
semantics; if present but empty, it selects all Nodes.
Support: Extended
<network-policy-api:experimental>
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: |-
Pods defines a way to select a set of pods in
a set of namespaces. Note that host-networked pods
are not included in this type of peer.
Support: Core
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
maxItems: 100
minItems: 1
type: array
required:
- action
- to
type: object
x-kubernetes-validations:
- message: networks/nodes peer cannot be set with namedPorts since
there are no namedPorts for networks/nodes
rule: '!(self.to.exists(peer, has(peer.networks) || has(peer.nodes))
&& has(self.ports) && self.ports.exists(port, has(port.namedPort)))'
maxItems: 100
type: array
ingress:
description: |-
Ingress is the list of Ingress rules to be applied to the selected pods
if they are not matched by any AdminNetworkPolicy or NetworkPolicy rules.
A total of 100 Ingress rules will be allowed in each BANP instance.
The relative precedence of ingress rules within a single BANP object
will be determined by the order in which the rule is written.
Thus, a rule that appears at the top of the ingress rules
would take the highest precedence.
BANPs with no ingress rules do not affect ingress traffic.
Support: Core
items:
description: |-
BaselineAdminNetworkPolicyIngressRule describes an action to take on a particular
set of traffic destined for pods selected by a BaselineAdminNetworkPolicy's
Subject field.
properties:
action:
description: |-
Action specifies the effect this rule will have on matching traffic.
Currently the following actions are supported:
Allow: allows the selected traffic
Deny: denies the selected traffic
Support: Core
enum:
- Allow
- Deny
type: string
from:
description: |-
From is the list of sources whose traffic this rule applies to.
If any AdminNetworkPolicyIngressPeer matches the source of incoming
traffic then the specified action is applied.
This field must be defined and contain at least one item.
Support: Core
items:
description: |-
AdminNetworkPolicyIngressPeer defines an in-cluster peer to allow traffic from.
Exactly one of the selector pointers must be set for a given peer. If a
consumer observes none of its fields are set, they must assume an unknown
option has been specified and fail closed.
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: |-
Namespaces defines a way to select all pods within a set of Namespaces.
Note that host-networked pods are not included in this type of peer.
Support: Core
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: |-
Pods defines a way to select a set of pods in
a set of namespaces. Note that host-networked pods
are not included in this type of peer.
Support: Core
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label
selector requirements. The requirements are
ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the
selector applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
maxItems: 100
minItems: 1
type: array
name:
description: |-
Name is an identifier for this rule, that may be no more than 100 characters
in length. This field should be used by the implementation to help
improve observability, readability and error-reporting for any applied
BaselineAdminNetworkPolicies.
Support: Core
maxLength: 100
type: string
ports:
description: |-
Ports allows for matching traffic based on port and protocols.
This field is a list of ports which should be matched on
the pods selected for this policy i.e the subject of the policy.
So it matches on the destination port for the ingress traffic.
If Ports is not set then the rule does not filter traffic via port.
Support: Core
items:
description: |-
AdminNetworkPolicyPort describes how to select network ports on pod(s).
Exactly one field must be set.
maxProperties: 1
minProperties: 1
properties:
namedPort:
description: |-
NamedPort selects a port on a pod(s) based on name.
Support: Extended
<network-policy-api:experimental>
type: string
portNumber:
description: |-
Port selects a port on a pod(s) based on number.
Support: Core
properties:
port:
description: |-
Number defines a network port value.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
required:
- port
- protocol
type: object
portRange:
description: |-
PortRange selects a port range on a pod(s) based on provided start and end
values.
Support: Core
properties:
end:
description: |-
End defines a network port that is the end of a port range, the End value
must be greater than Start.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
protocol:
default: TCP
description: |-
Protocol is the network protocol (TCP, UDP, or SCTP) which traffic must
match. If not specified, this field defaults to TCP.
Support: Core
type: string
start:
description: |-
Start defines a network port that is the start of a port range, the Start
value must be less than End.
Support: Core
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- end
- start
type: object
type: object
maxItems: 100
type: array
required:
- action
- from
type: object
maxItems: 100
type: array
subject:
description: |-
Subject defines the pods to which this BaselineAdminNetworkPolicy applies.
Note that host-networked pods are not included in subject selection.
Support: Core
maxProperties: 1
minProperties: 1
properties:
namespaces:
description: Namespaces is used to select pods via namespace selectors.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
pods:
description: Pods is used to select pods via namespace AND pod
selectors.
properties:
namespaceSelector:
description: |-
NamespaceSelector follows standard label selector semantics; if empty,
it selects all Namespaces.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
podSelector:
description: |-
PodSelector is used to explicitly select pods within a namespace; if empty,
it selects all Pods.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
required:
- namespaceSelector
- podSelector
type: object
type: object
required:
- subject
type: object
status:
description: Status is the status to be reported by the implementation.
properties:
conditions:
items:
description: "Condition contains details for one aspect of the current
state of this API Resource.\n---\nThis struct is intended for
direct use as an array at the field path .status.conditions. For
example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
observations of a foo's current state.\n\t // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
+patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
\ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
\ // other fields\n\t}"
properties:
lastTransitionTime:
description: |-
lastTransitionTime is the last time the condition transitioned from one status to another.
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: |-
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: |-
observedGeneration represents the .metadata.generation that the condition was set based upon.
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
with respect to the current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: |-
reason contains a programmatic identifier indicating the reason for the condition's last transition.
Producers of specific condition types may define expected values and meanings for this field,
and whether the values are considered a guaranteed API.
The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: |-
type of condition in CamelCase or in foo.example.com/CamelCase.
---
Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
useful (see .node.status.conditions), the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
required:
- conditions
type: object
required:
- metadata
- spec
type: object
x-kubernetes-validations:
- message: Only one baseline admin network policy with metadata.name="default"
can be created in the cluster
rule: self.metadata.name == 'default'
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: null
storedVersions: null