Enhance/fix k8s install for Ubuntu
[iec.git] / src / foundation / scripts / cni / calico / k8s-new / calico-multi-arch.yaml
1 # yamllint disable rule:hyphens rule:commas rule:indentation rule:line-length rule:comments rule:comments-indentation
2 ---
3 # Source: calico/templates/calico-config.yaml
4 # This ConfigMap is used to configure a self-hosted Calico installation.
5 kind: ConfigMap
6 apiVersion: v1
7 metadata:
8   name: calico-config
9   namespace: kube-system
10 data:
11   # Typha is disabled.
12   typha_service_name: "none"
13   # Configure the backend to use.
14   calico_backend: "bird"
15
16   # Configure the MTU to use for workload interfaces and tunnels.
17   # By default, MTU is auto-detected, and explicitly setting this field should not be required.
18   # You can override auto-detection by providing a non-zero value.
19   veth_mtu: "0"
20
21   # The CNI network configuration to install on each node. The special
22   # values in this config will be automatically populated.
23   cni_network_config: |-
24     {
25       "name": "k8s-pod-network",
26       "cniVersion": "0.3.1",
27       "plugins": [
28         {
29           "type": "calico",
30           "log_level": "info",
31           "log_file_path": "/var/log/calico/cni/cni.log",
32           "datastore_type": "kubernetes",
33           "nodename": "__KUBERNETES_NODE_NAME__",
34           "mtu": __CNI_MTU__,
35           "ipam": {
36               "type": "calico-ipam"
37           },
38           "policy": {
39               "type": "k8s"
40           },
41           "kubernetes": {
42               "kubeconfig": "__KUBECONFIG_FILEPATH__"
43           }
44         },
45         {
46           "type": "portmap",
47           "snat": true,
48           "capabilities": {"portMappings": true}
49         },
50         {
51           "type": "bandwidth",
52           "capabilities": {"bandwidth": true}
53         }
54       ]
55     }
56
57 ---
58 # Source: calico/templates/kdd-crds.yaml
59
60 apiVersion: apiextensions.k8s.io/v1
61 kind: CustomResourceDefinition
62 metadata:
63   name: bgpconfigurations.crd.projectcalico.org
64 spec:
65   group: crd.projectcalico.org
66   names:
67     kind: BGPConfiguration
68     listKind: BGPConfigurationList
69     plural: bgpconfigurations
70     singular: bgpconfiguration
71   scope: Cluster
72   versions:
73   - name: v1
74     schema:
75       openAPIV3Schema:
76         description: BGPConfiguration contains the configuration for any BGP routing.
77         properties:
78           apiVersion:
79             description: 'APIVersion defines the versioned schema of this representation
80               of an object. Servers should convert recognized schemas to the latest
81               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
82             type: string
83           kind:
84             description: 'Kind is a string value representing the REST resource this
85               object represents. Servers may infer this from the endpoint the client
86               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
87             type: string
88           metadata:
89             type: object
90           spec:
91             description: BGPConfigurationSpec contains the values of the BGP configuration.
92             properties:
93               asNumber:
94                 description: 'ASNumber is the default AS number used by a node. [Default:
95                   64512]'
96                 format: int32
97                 type: integer
98               communities:
99                 description: Communities is a list of BGP community values and their
100                   arbitrary names for tagging routes.
101                 items:
102                   description: Community contains standard or large community value
103                     and its name.
104                   properties:
105                     name:
106                       description: Name given to community value.
107                       type: string
108                     value:
109                       description: Value must be of format `aa:nn` or `aa:nn:mm`.
110                         For standard community use `aa:nn` format, where `aa` and
111                         `nn` are 16 bit number. For large community use `aa:nn:mm`
112                         format, where `aa`, `nn` and `mm` are 32 bit number. Where,
113                         `aa` is an AS Number, `nn` and `mm` are per-AS identifier.
114                       pattern: ^(\d+):(\d+)$|^(\d+):(\d+):(\d+)$
115                       type: string
116                   type: object
117                 type: array
118               listenPort:
119                 description: ListenPort is the port where BGP protocol should listen.
120                   Defaults to 179
121                 maximum: 65535
122                 minimum: 1
123                 type: integer
124               logSeverityScreen:
125                 description: 'LogSeverityScreen is the log severity above which logs
126                   are sent to the stdout. [Default: INFO]'
127                 type: string
128               nodeToNodeMeshEnabled:
129                 description: 'NodeToNodeMeshEnabled sets whether full node to node
130                   BGP mesh is enabled. [Default: true]'
131                 type: boolean
132               prefixAdvertisements:
133                 description: PrefixAdvertisements contains per-prefix advertisement
134                   configuration.
135                 items:
136                   description: PrefixAdvertisement configures advertisement properties
137                     for the specified CIDR.
138                   properties:
139                     cidr:
140                       description: CIDR for which properties should be advertised.
141                       type: string
142                     communities:
143                       description: Communities can be list of either community names
144                         already defined in `Specs.Communities` or community value
145                         of format `aa:nn` or `aa:nn:mm`. For standard community use
146                         `aa:nn` format, where `aa` and `nn` are 16 bit number. For
147                         large community use `aa:nn:mm` format, where `aa`, `nn` and
148                         `mm` are 32 bit number. Where,`aa` is an AS Number, `nn` and
149                         `mm` are per-AS identifier.
150                       items:
151                         type: string
152                       type: array
153                   type: object
154                 type: array
155               serviceClusterIPs:
156                 description: ServiceClusterIPs are the CIDR blocks from which service
157                   cluster IPs are allocated. If specified, Calico will advertise these
158                   blocks, as well as any cluster IPs within them.
159                 items:
160                   description: ServiceClusterIPBlock represents a single allowed ClusterIP
161                     CIDR block.
162                   properties:
163                     cidr:
164                       type: string
165                   type: object
166                 type: array
167               serviceExternalIPs:
168                 description: ServiceExternalIPs are the CIDR blocks for Kubernetes
169                   Service External IPs. Kubernetes Service ExternalIPs will only be
170                   advertised if they are within one of these blocks.
171                 items:
172                   description: ServiceExternalIPBlock represents a single allowed
173                     External IP CIDR block.
174                   properties:
175                     cidr:
176                       type: string
177                   type: object
178                 type: array
179               serviceLoadBalancerIPs:
180                 description: ServiceLoadBalancerIPs are the CIDR blocks for Kubernetes
181                   Service LoadBalancer IPs. Kubernetes Service status.LoadBalancer.Ingress
182                   IPs will only be advertised if they are within one of these blocks.
183                 items:
184                   description: ServiceLoadBalancerIPBlock represents a single allowed
185                     LoadBalancer IP CIDR block.
186                   properties:
187                     cidr:
188                       type: string
189                   type: object
190                 type: array
191             type: object
192         type: object
193     served: true
194     storage: true
195 status:
196   acceptedNames:
197     kind: ""
198     plural: ""
199   conditions: []
200   storedVersions: []
201
202 ---
203 apiVersion: apiextensions.k8s.io/v1
204 kind: CustomResourceDefinition
205 metadata:
206   name: bgppeers.crd.projectcalico.org
207 spec:
208   group: crd.projectcalico.org
209   names:
210     kind: BGPPeer
211     listKind: BGPPeerList
212     plural: bgppeers
213     singular: bgppeer
214   scope: Cluster
215   versions:
216   - name: v1
217     schema:
218       openAPIV3Schema:
219         properties:
220           apiVersion:
221             description: 'APIVersion defines the versioned schema of this representation
222               of an object. Servers should convert recognized schemas to the latest
223               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
224             type: string
225           kind:
226             description: 'Kind is a string value representing the REST resource this
227               object represents. Servers may infer this from the endpoint the client
228               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
229             type: string
230           metadata:
231             type: object
232           spec:
233             description: BGPPeerSpec contains the specification for a BGPPeer resource.
234             properties:
235               asNumber:
236                 description: The AS Number of the peer.
237                 format: int32
238                 type: integer
239               keepOriginalNextHop:
240                 description: Option to keep the original nexthop field when routes
241                   are sent to a BGP Peer. Setting "true" configures the selected BGP
242                   Peers node to use the "next hop keep;" instead of "next hop self;"(default)
243                   in the specific branch of the Node on "bird.cfg".
244                 type: boolean
245               node:
246                 description: The node name identifying the Calico node instance that
247                   is targeted by this peer. If this is not set, and no nodeSelector
248                   is specified, then this BGP peer selects all nodes in the cluster.
249                 type: string
250               nodeSelector:
251                 description: Selector for the nodes that should have this peering.  When
252                   this is set, the Node field must be empty.
253                 type: string
254               password:
255                 description: Optional BGP password for the peerings generated by this
256                   BGPPeer resource.
257                 properties:
258                   secretKeyRef:
259                     description: Selects a key of a secret in the node pod's namespace.
260                     properties:
261                       key:
262                         description: The key of the secret to select from.  Must be
263                           a valid secret key.
264                         type: string
265                       name:
266                         description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
267                           TODO: Add other useful fields. apiVersion, kind, uid?'
268                         type: string
269                       optional:
270                         description: Specify whether the Secret or its key must be
271                           defined
272                         type: boolean
273                     required:
274                     - key
275                     type: object
276                 type: object
277               peerIP:
278                 description: The IP address of the peer followed by an optional port
279                   number to peer with. If port number is given, format should be `[<IPv6>]:port`
280                   or `<IPv4>:<port>` for IPv4. If optional port number is not set,
281                   and this peer IP and ASNumber belongs to a calico/node with ListenPort
282                   set in BGPConfiguration, then we use that port to peer.
283                 type: string
284               peerSelector:
285                 description: Selector for the remote nodes to peer with.  When this
286                   is set, the PeerIP and ASNumber fields must be empty.  For each
287                   peering between the local node and selected remote nodes, we configure
288                   an IPv4 peering if both ends have NodeBGPSpec.IPv4Address specified,
289                   and an IPv6 peering if both ends have NodeBGPSpec.IPv6Address specified.  The
290                   remote AS number comes from the remote node's NodeBGPSpec.ASNumber,
291                   or the global default if that is not set.
292                 type: string
293               sourceAddress:
294                 description: Specifies whether and how to configure a source address
295                   for the peerings generated by this BGPPeer resource.  Default value
296                   "UseNodeIP" means to configure the node IP as the source address.  "None"
297                   means not to configure a source address.
298                 type: string
299             type: object
300         type: object
301     served: true
302     storage: true
303 status:
304   acceptedNames:
305     kind: ""
306     plural: ""
307   conditions: []
308   storedVersions: []
309
310 ---
311 apiVersion: apiextensions.k8s.io/v1
312 kind: CustomResourceDefinition
313 metadata:
314   name: blockaffinities.crd.projectcalico.org
315 spec:
316   group: crd.projectcalico.org
317   names:
318     kind: BlockAffinity
319     listKind: BlockAffinityList
320     plural: blockaffinities
321     singular: blockaffinity
322   scope: Cluster
323   versions:
324   - name: v1
325     schema:
326       openAPIV3Schema:
327         properties:
328           apiVersion:
329             description: 'APIVersion defines the versioned schema of this representation
330               of an object. Servers should convert recognized schemas to the latest
331               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
332             type: string
333           kind:
334             description: 'Kind is a string value representing the REST resource this
335               object represents. Servers may infer this from the endpoint the client
336               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
337             type: string
338           metadata:
339             type: object
340           spec:
341             description: BlockAffinitySpec contains the specification for a BlockAffinity
342               resource.
343             properties:
344               cidr:
345                 type: string
346               deleted:
347                 description: Deleted indicates that this block affinity is being deleted.
348                   This field is a string for compatibility with older releases that
349                   mistakenly treat this field as a string.
350                 type: string
351               node:
352                 type: string
353               state:
354                 type: string
355             required:
356             - cidr
357             - deleted
358             - node
359             - state
360             type: object
361         type: object
362     served: true
363     storage: true
364 status:
365   acceptedNames:
366     kind: ""
367     plural: ""
368   conditions: []
369   storedVersions: []
370
371 ---
372 apiVersion: apiextensions.k8s.io/v1
373 kind: CustomResourceDefinition
374 metadata:
375   name: clusterinformations.crd.projectcalico.org
376 spec:
377   group: crd.projectcalico.org
378   names:
379     kind: ClusterInformation
380     listKind: ClusterInformationList
381     plural: clusterinformations
382     singular: clusterinformation
383   scope: Cluster
384   versions:
385   - name: v1
386     schema:
387       openAPIV3Schema:
388         description: ClusterInformation contains the cluster specific information.
389         properties:
390           apiVersion:
391             description: 'APIVersion defines the versioned schema of this representation
392               of an object. Servers should convert recognized schemas to the latest
393               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
394             type: string
395           kind:
396             description: 'Kind is a string value representing the REST resource this
397               object represents. Servers may infer this from the endpoint the client
398               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
399             type: string
400           metadata:
401             type: object
402           spec:
403             description: ClusterInformationSpec contains the values of describing
404               the cluster.
405             properties:
406               calicoVersion:
407                 description: CalicoVersion is the version of Calico that the cluster
408                   is running
409                 type: string
410               clusterGUID:
411                 description: ClusterGUID is the GUID of the cluster
412                 type: string
413               clusterType:
414                 description: ClusterType describes the type of the cluster
415                 type: string
416               datastoreReady:
417                 description: DatastoreReady is used during significant datastore migrations
418                   to signal to components such as Felix that it should wait before
419                   accessing the datastore.
420                 type: boolean
421               variant:
422                 description: Variant declares which variant of Calico should be active.
423                 type: string
424             type: object
425         type: object
426     served: true
427     storage: true
428 status:
429   acceptedNames:
430     kind: ""
431     plural: ""
432   conditions: []
433   storedVersions: []
434
435 ---
436 apiVersion: apiextensions.k8s.io/v1
437 kind: CustomResourceDefinition
438 metadata:
439   name: felixconfigurations.crd.projectcalico.org
440 spec:
441   group: crd.projectcalico.org
442   names:
443     kind: FelixConfiguration
444     listKind: FelixConfigurationList
445     plural: felixconfigurations
446     singular: felixconfiguration
447   scope: Cluster
448   versions:
449   - name: v1
450     schema:
451       openAPIV3Schema:
452         description: Felix Configuration contains the configuration for Felix.
453         properties:
454           apiVersion:
455             description: 'APIVersion defines the versioned schema of this representation
456               of an object. Servers should convert recognized schemas to the latest
457               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
458             type: string
459           kind:
460             description: 'Kind is a string value representing the REST resource this
461               object represents. Servers may infer this from the endpoint the client
462               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
463             type: string
464           metadata:
465             type: object
466           spec:
467             description: FelixConfigurationSpec contains the values of the Felix configuration.
468             properties:
469               allowIPIPPacketsFromWorkloads:
470                 description: 'AllowIPIPPacketsFromWorkloads controls whether Felix
471                   will add a rule to drop IPIP encapsulated traffic from workloads
472                   [Default: false]'
473                 type: boolean
474               allowVXLANPacketsFromWorkloads:
475                 description: 'AllowVXLANPacketsFromWorkloads controls whether Felix
476                   will add a rule to drop VXLAN encapsulated traffic from workloads
477                   [Default: false]'
478                 type: boolean
479               awsSrcDstCheck:
480                 description: 'Set source-destination-check on AWS EC2 instances. Accepted
481                   value must be one of "DoNothing", "Enabled" or "Disabled". [Default:
482                   DoNothing]'
483                 enum:
484                 - DoNothing
485                 - Enable
486                 - Disable
487                 type: string
488               bpfConnectTimeLoadBalancingEnabled:
489                 description: 'BPFConnectTimeLoadBalancingEnabled when in BPF mode,
490                   controls whether Felix installs the connection-time load balancer.  The
491                   connect-time load balancer is required for the host to be able to
492                   reach Kubernetes services and it improves the performance of pod-to-service
493                   connections.  The only reason to disable it is for debugging purposes.  [Default:
494                   true]'
495                 type: boolean
496               bpfDataIfacePattern:
497                 description: BPFDataIfacePattern is a regular expression that controls
498                   which interfaces Felix should attach BPF programs to in order to
499                   catch traffic to/from the network.  This needs to match the interfaces
500                   that Calico workload traffic flows over as well as any interfaces
501                   that handle incoming traffic to nodeports and services from outside
502                   the cluster.  It should not match the workload interfaces (usually
503                   named cali...).
504                 type: string
505               bpfDisableUnprivileged:
506                 description: 'BPFDisableUnprivileged, if enabled, Felix sets the kernel.unprivileged_bpf_disabled
507                   sysctl to disable unprivileged use of BPF.  This ensures that unprivileged
508                   users cannot access Calico''s BPF maps and cannot insert their own
509                   BPF programs to interfere with Calico''s. [Default: true]'
510                 type: boolean
511               bpfEnabled:
512                 description: 'BPFEnabled, if enabled Felix will use the BPF dataplane.
513                   [Default: false]'
514                 type: boolean
515               bpfExternalServiceMode:
516                 description: 'BPFExternalServiceMode in BPF mode, controls how connections
517                   from outside the cluster to services (node ports and cluster IPs)
518                   are forwarded to remote workloads.  If set to "Tunnel" then both
519                   request and response traffic is tunneled to the remote node.  If
520                   set to "DSR", the request traffic is tunneled but the response traffic
521                   is sent directly from the remote node.  In "DSR" mode, the remote
522                   node appears to use the IP of the ingress node; this requires a
523                   permissive L2 network.  [Default: Tunnel]'
524                 type: string
525               bpfKubeProxyEndpointSlicesEnabled:
526                 description: BPFKubeProxyEndpointSlicesEnabled in BPF mode, controls
527                   whether Felix's embedded kube-proxy accepts EndpointSlices or not.
528                 type: boolean
529               bpfKubeProxyIptablesCleanupEnabled:
530                 description: 'BPFKubeProxyIptablesCleanupEnabled, if enabled in BPF
531                   mode, Felix will proactively clean up the upstream Kubernetes kube-proxy''s
532                   iptables chains.  Should only be enabled if kube-proxy is not running.  [Default:
533                   true]'
534                 type: boolean
535               bpfKubeProxyMinSyncPeriod:
536                 description: 'BPFKubeProxyMinSyncPeriod, in BPF mode, controls the
537                   minimum time between updates to the dataplane for Felix''s embedded
538                   kube-proxy.  Lower values give reduced set-up latency.  Higher values
539                   reduce Felix CPU usage by batching up more work.  [Default: 1s]'
540                 type: string
541               bpfLogLevel:
542                 description: 'BPFLogLevel controls the log level of the BPF programs
543                   when in BPF dataplane mode.  One of "Off", "Info", or "Debug".  The
544                   logs are emitted to the BPF trace pipe, accessible with the command
545                   `tc exec bpf debug`. [Default: Off].'
546                 type: string
547               chainInsertMode:
548                 description: 'ChainInsertMode controls whether Felix hooks the kernel''s
549                   top-level iptables chains by inserting a rule at the top of the
550                   chain or by appending a rule at the bottom. insert is the safe default
551                   since it prevents Calico''s rules from being bypassed. If you switch
552                   to append mode, be sure that the other rules in the chains signal
553                   acceptance by falling through to the Calico rules, otherwise the
554                   Calico policy will be bypassed. [Default: insert]'
555                 type: string
556               dataplaneDriver:
557                 type: string
558               debugDisableLogDropping:
559                 type: boolean
560               debugMemoryProfilePath:
561                 type: string
562               debugSimulateCalcGraphHangAfter:
563                 type: string
564               debugSimulateDataplaneHangAfter:
565                 type: string
566               defaultEndpointToHostAction:
567                 description: 'DefaultEndpointToHostAction controls what happens to
568                   traffic that goes from a workload endpoint to the host itself (after
569                   the traffic hits the endpoint egress policy). By default Calico
570                   blocks traffic from workload endpoints to the host itself with an
571                   iptables "DROP" action. If you want to allow some or all traffic
572                   from endpoint to host, set this parameter to RETURN or ACCEPT. Use
573                   RETURN if you have your own rules in the iptables "INPUT" chain;
574                   Calico will insert its rules at the top of that chain, then "RETURN"
575                   packets to the "INPUT" chain once it has completed processing workload
576                   endpoint egress policy. Use ACCEPT to unconditionally accept packets
577                   from workloads after processing workload endpoint egress policy.
578                   [Default: Drop]'
579                 type: string
580               deviceRouteProtocol:
581                 description: This defines the route protocol added to programmed device
582                   routes, by default this will be RTPROT_BOOT when left blank.
583                 type: integer
584               deviceRouteSourceAddress:
585                 description: This is the source address to use on programmed device
586                   routes. By default the source address is left blank, leaving the
587                   kernel to choose the source address used.
588                 type: string
589               disableConntrackInvalidCheck:
590                 type: boolean
591               endpointReportingDelay:
592                 type: string
593               endpointReportingEnabled:
594                 type: boolean
595               externalNodesList:
596                 description: ExternalNodesCIDRList is a list of CIDR's of external-non-calico-nodes
597                   which may source tunnel traffic and have the tunneled traffic be
598                   accepted at calico nodes.
599                 items:
600                   type: string
601                 type: array
602               failsafeInboundHostPorts:
603                 description: 'FailsafeInboundHostPorts is a comma-delimited list of
604                   UDP/TCP ports that Felix will allow incoming traffic to host endpoints
605                   on irrespective of the security policy. This is useful to avoid
606                   accidentally cutting off a host with incorrect configuration. Each
607                   port should be specified as tcp:<port-number> or udp:<port-number>.
608                   For back-compatibility, if the protocol is not specified, it defaults
609                   to "tcp". To disable all inbound host ports, use the value none.
610                   The default value allows ssh access and DHCP. [Default: tcp:22,
611                   udp:68, tcp:179, tcp:2379, tcp:2380, tcp:6443, tcp:6666, tcp:6667]'
612                 items:
613                   description: ProtoPort is combination of protocol and port, both
614                     must be specified.
615                   properties:
616                     port:
617                       type: integer
618                     protocol:
619                       type: string
620                   required:
621                   - port
622                   - protocol
623                   type: object
624                 type: array
625               failsafeOutboundHostPorts:
626                 description: 'FailsafeOutboundHostPorts is a comma-delimited list
627                   of UDP/TCP ports that Felix will allow outgoing traffic from host
628                   endpoints to irrespective of the security policy. This is useful
629                   to avoid accidentally cutting off a host with incorrect configuration.
630                   Each port should be specified as tcp:<port-number> or udp:<port-number>.
631                   For back-compatibility, if the protocol is not specified, it defaults
632                   to "tcp". To disable all outbound host ports, use the value none.
633                   The default value opens etcd''s standard ports to ensure that Felix
634                   does not get cut off from etcd as well as allowing DHCP and DNS.
635                   [Default: tcp:179, tcp:2379, tcp:2380, tcp:6443, tcp:6666, tcp:6667,
636                   udp:53, udp:67]'
637                 items:
638                   description: ProtoPort is combination of protocol and port, both
639                     must be specified.
640                   properties:
641                     port:
642                       type: integer
643                     protocol:
644                       type: string
645                   required:
646                   - port
647                   - protocol
648                   type: object
649                 type: array
650               featureDetectOverride:
651                 description: FeatureDetectOverride is used to override the feature
652                   detection. Values are specified in a comma separated list with no
653                   spaces, example; "SNATFullyRandom=true,MASQFullyRandom=false,RestoreSupportsLock=".
654                   "true" or "false" will force the feature, empty or omitted values
655                   are auto-detected.
656                 type: string
657               genericXDPEnabled:
658                 description: 'GenericXDPEnabled enables Generic XDP so network cards
659                   that don''t support XDP offload or driver modes can use XDP. This
660                   is not recommended since it doesn''t provide better performance
661                   than iptables. [Default: false]'
662                 type: boolean
663               healthEnabled:
664                 type: boolean
665               healthHost:
666                 type: string
667               healthPort:
668                 type: integer
669               interfaceExclude:
670                 description: 'InterfaceExclude is a comma-separated list of interfaces
671                   that Felix should exclude when monitoring for host endpoints. The
672                   default value ensures that Felix ignores Kubernetes'' IPVS dummy
673                   interface, which is used internally by kube-proxy. If you want to
674                   exclude multiple interface names using a single value, the list
675                   supports regular expressions. For regular expressions you must wrap
676                   the value with ''/''. For example having values ''/^kube/,veth1''
677                   will exclude all interfaces that begin with ''kube'' and also the
678                   interface ''veth1''. [Default: kube-ipvs0]'
679                 type: string
680               interfacePrefix:
681                 description: 'InterfacePrefix is the interface name prefix that identifies
682                   workload endpoints and so distinguishes them from host endpoint
683                   interfaces. Note: in environments other than bare metal, the orchestrators
684                   configure this appropriately. For example our Kubernetes and Docker
685                   integrations set the ''cali'' value, and our OpenStack integration
686                   sets the ''tap'' value. [Default: cali]'
687                 type: string
688               interfaceRefreshInterval:
689                 description: InterfaceRefreshInterval is the period at which Felix
690                   rescans local interfaces to verify their state. The rescan can be
691                   disabled by setting the interval to 0.
692                 type: string
693               ipipEnabled:
694                 type: boolean
695               ipipMTU:
696                 description: 'IPIPMTU is the MTU to set on the tunnel device. See
697                   Configuring MTU [Default: 1440]'
698                 type: integer
699               ipsetsRefreshInterval:
700                 description: 'IpsetsRefreshInterval is the period at which Felix re-checks
701                   all iptables state to ensure that no other process has accidentally
702                   broken Calico''s rules. Set to 0 to disable iptables refresh. [Default:
703                   90s]'
704                 type: string
705               iptablesBackend:
706                 description: IptablesBackend specifies which backend of iptables will
707                   be used. The default is legacy.
708                 type: string
709               iptablesFilterAllowAction:
710                 type: string
711               iptablesLockFilePath:
712                 description: 'IptablesLockFilePath is the location of the iptables
713                   lock file. You may need to change this if the lock file is not in
714                   its standard location (for example if you have mapped it into Felix''s
715                   container at a different path). [Default: /run/xtables.lock]'
716                 type: string
717               iptablesLockProbeInterval:
718                 description: 'IptablesLockProbeInterval is the time that Felix will
719                   wait between attempts to acquire the iptables lock if it is not
720                   available. Lower values make Felix more responsive when the lock
721                   is contended, but use more CPU. [Default: 50ms]'
722                 type: string
723               iptablesLockTimeout:
724                 description: 'IptablesLockTimeout is the time that Felix will wait
725                   for the iptables lock, or 0, to disable. To use this feature, Felix
726                   must share the iptables lock file with all other processes that
727                   also take the lock. When running Felix inside a container, this
728                   requires the /run directory of the host to be mounted into the calico/node
729                   or calico/felix container. [Default: 0s disabled]'
730                 type: string
731               iptablesMangleAllowAction:
732                 type: string
733               iptablesMarkMask:
734                 description: 'IptablesMarkMask is the mask that Felix selects its
735                   IPTables Mark bits from. Should be a 32 bit hexadecimal number with
736                   at least 8 bits set, none of which clash with any other mark bits
737                   in use on the system. [Default: 0xff000000]'
738                 format: int32
739                 type: integer
740               iptablesNATOutgoingInterfaceFilter:
741                 type: string
742               iptablesPostWriteCheckInterval:
743                 description: 'IptablesPostWriteCheckInterval is the period after Felix
744                   has done a write to the dataplane that it schedules an extra read
745                   back in order to check the write was not clobbered by another process.
746                   This should only occur if another application on the system doesn''t
747                   respect the iptables lock. [Default: 1s]'
748                 type: string
749               iptablesRefreshInterval:
750                 description: 'IptablesRefreshInterval is the period at which Felix
751                   re-checks the IP sets in the dataplane to ensure that no other process
752                   has accidentally broken Calico''s rules. Set to 0 to disable IP
753                   sets refresh. Note: the default for this value is lower than the
754                   other refresh intervals as a workaround for a Linux kernel bug that
755                   was fixed in kernel version 4.11. If you are using v4.11 or greater
756                   you may want to set this to, a higher value to reduce Felix CPU
757                   usage. [Default: 10s]'
758                 type: string
759               ipv6Support:
760                 type: boolean
761               kubeNodePortRanges:
762                 description: 'KubeNodePortRanges holds list of port ranges used for
763                   service node ports. Only used if felix detects kube-proxy running
764                   in ipvs mode. Felix uses these ranges to separate host and workload
765                   traffic. [Default: 30000:32767].'
766                 items:
767                   anyOf:
768                   - type: integer
769                   - type: string
770                   pattern: ^.*
771                   x-kubernetes-int-or-string: true
772                 type: array
773               logFilePath:
774                 description: 'LogFilePath is the full path to the Felix log. Set to
775                   none to disable file logging. [Default: /var/log/calico/felix.log]'
776                 type: string
777               logPrefix:
778                 description: 'LogPrefix is the log prefix that Felix uses when rendering
779                   LOG rules. [Default: calico-packet]'
780                 type: string
781               logSeverityFile:
782                 description: 'LogSeverityFile is the log severity above which logs
783                   are sent to the log file. [Default: Info]'
784                 type: string
785               logSeverityScreen:
786                 description: 'LogSeverityScreen is the log severity above which logs
787                   are sent to the stdout. [Default: Info]'
788                 type: string
789               logSeveritySys:
790                 description: 'LogSeveritySys is the log severity above which logs
791                   are sent to the syslog. Set to None for no logging to syslog. [Default:
792                   Info]'
793                 type: string
794               maxIpsetSize:
795                 type: integer
796               metadataAddr:
797                 description: 'MetadataAddr is the IP address or domain name of the
798                   server that can answer VM queries for cloud-init metadata. In OpenStack,
799                   this corresponds to the machine running nova-api (or in Ubuntu,
800                   nova-api-metadata). A value of none (case insensitive) means that
801                   Felix should not set up any NAT rule for the metadata path. [Default:
802                   127.0.0.1]'
803                 type: string
804               metadataPort:
805                 description: 'MetadataPort is the port of the metadata server. This,
806                   combined with global.MetadataAddr (if not ''None''), is used to
807                   set up a NAT rule, from 169.254.169.254:80 to MetadataAddr:MetadataPort.
808                   In most cases this should not need to be changed [Default: 8775].'
809                 type: integer
810               mtuIfacePattern:
811                 description: MTUIfacePattern is a regular expression that controls
812                   which interfaces Felix should scan in order to calculate the host's
813                   MTU. This should not match workload interfaces (usually named cali...).
814                 type: string
815               natOutgoingAddress:
816                 description: NATOutgoingAddress specifies an address to use when performing
817                   source NAT for traffic in a natOutgoing pool that is leaving the
818                   network. By default the address used is an address on the interface
819                   the traffic is leaving on (ie it uses the iptables MASQUERADE target)
820                 type: string
821               natPortRange:
822                 anyOf:
823                 - type: integer
824                 - type: string
825                 description: NATPortRange specifies the range of ports that is used
826                   for port mapping when doing outgoing NAT. When unset the default
827                   behavior of the network stack is used.
828                 pattern: ^.*
829                 x-kubernetes-int-or-string: true
830               netlinkTimeout:
831                 type: string
832               openstackRegion:
833                 description: 'OpenstackRegion is the name of the region that a particular
834                   Felix belongs to. In a multi-region Calico/OpenStack deployment,
835                   this must be configured somehow for each Felix (here in the datamodel,
836                   or in felix.cfg or the environment on each compute node), and must
837                   match the [calico] openstack_region value configured in neutron.conf
838                   on each node. [Default: Empty]'
839                 type: string
840               policySyncPathPrefix:
841                 description: 'PolicySyncPathPrefix is used to by Felix to communicate
842                   policy changes to external services, like Application layer policy.
843                   [Default: Empty]'
844                 type: string
845               prometheusGoMetricsEnabled:
846                 description: 'PrometheusGoMetricsEnabled disables Go runtime metrics
847                   collection, which the Prometheus client does by default, when set
848                   to false. This reduces the number of metrics reported, reducing
849                   Prometheus load. [Default: true]'
850                 type: boolean
851               prometheusMetricsEnabled:
852                 description: 'PrometheusMetricsEnabled enables the Prometheus metrics
853                   server in Felix if set to true. [Default: false]'
854                 type: boolean
855               prometheusMetricsHost:
856                 description: 'PrometheusMetricsHost is the host that the Prometheus
857                   metrics server should bind to. [Default: empty]'
858                 type: string
859               prometheusMetricsPort:
860                 description: 'PrometheusMetricsPort is the TCP port that the Prometheus
861                   metrics server should bind to. [Default: 9091]'
862                 type: integer
863               prometheusProcessMetricsEnabled:
864                 description: 'PrometheusProcessMetricsEnabled disables process metrics
865                   collection, which the Prometheus client does by default, when set
866                   to false. This reduces the number of metrics reported, reducing
867                   Prometheus load. [Default: true]'
868                 type: boolean
869               removeExternalRoutes:
870                 description: Whether or not to remove device routes that have not
871                   been programmed by Felix. Disabling this will allow external applications
872                   to also add device routes. This is enabled by default which means
873                   we will remove externally added routes.
874                 type: boolean
875               reportingInterval:
876                 description: 'ReportingInterval is the interval at which Felix reports
877                   its status into the datastore or 0 to disable. Must be non-zero
878                   in OpenStack deployments. [Default: 30s]'
879                 type: string
880               reportingTTL:
881                 description: 'ReportingTTL is the time-to-live setting for process-wide
882                   status reports. [Default: 90s]'
883                 type: string
884               routeRefreshInterval:
885                 description: 'RouteRefreshInterval is the period at which Felix re-checks
886                   the routes in the dataplane to ensure that no other process has
887                   accidentally broken Calico''s rules. Set to 0 to disable route refresh.
888                   [Default: 90s]'
889                 type: string
890               routeSource:
891                 description: 'RouteSource configures where Felix gets its routing
892                   information. - WorkloadIPs: use workload endpoints to construct
893                   routes. - CalicoIPAM: the default - use IPAM data to construct routes.'
894                 type: string
895               routeTableRange:
896                 description: Calico programs additional Linux route tables for various
897                   purposes.  RouteTableRange specifies the indices of the route tables
898                   that Calico should use.
899                 properties:
900                   max:
901                     type: integer
902                   min:
903                     type: integer
904                 required:
905                 - max
906                 - min
907                 type: object
908               serviceLoopPrevention:
909                 description: 'When service IP advertisement is enabled, prevent routing
910                   loops to service IPs that are not in use, by dropping or rejecting
911                   packets that do not get DNAT''d by kube-proxy. Unless set to "Disabled",
912                   in which case such routing loops continue to be allowed. [Default:
913                   Drop]'
914                 type: string
915               sidecarAccelerationEnabled:
916                 description: 'SidecarAccelerationEnabled enables experimental sidecar
917                   acceleration [Default: false]'
918                 type: boolean
919               usageReportingEnabled:
920                 description: 'UsageReportingEnabled reports anonymous Calico version
921                   number and cluster size to projectcalico.org. Logs warnings returned
922                   by the usage server. For example, if a significant security vulnerability
923                   has been discovered in the version of Calico being used. [Default:
924                   true]'
925                 type: boolean
926               usageReportingInitialDelay:
927                 description: 'UsageReportingInitialDelay controls the minimum delay
928                   before Felix makes a report. [Default: 300s]'
929                 type: string
930               usageReportingInterval:
931                 description: 'UsageReportingInterval controls the interval at which
932                   Felix makes reports. [Default: 86400s]'
933                 type: string
934               useInternalDataplaneDriver:
935                 type: boolean
936               vxlanEnabled:
937                 type: boolean
938               vxlanMTU:
939                 description: 'VXLANMTU is the MTU to set on the tunnel device. See
940                   Configuring MTU [Default: 1440]'
941                 type: integer
942               vxlanPort:
943                 type: integer
944               vxlanVNI:
945                 type: integer
946               wireguardEnabled:
947                 description: 'WireguardEnabled controls whether Wireguard is enabled.
948                   [Default: false]'
949                 type: boolean
950               wireguardInterfaceName:
951                 description: 'WireguardInterfaceName specifies the name to use for
952                   the Wireguard interface. [Default: wg.calico]'
953                 type: string
954               wireguardListeningPort:
955                 description: 'WireguardListeningPort controls the listening port used
956                   by Wireguard. [Default: 51820]'
957                 type: integer
958               wireguardMTU:
959                 description: 'WireguardMTU controls the MTU on the Wireguard interface.
960                   See Configuring MTU [Default: 1420]'
961                 type: integer
962               wireguardRoutingRulePriority:
963                 description: 'WireguardRoutingRulePriority controls the priority value
964                   to use for the Wireguard routing rule. [Default: 99]'
965                 type: integer
966               xdpEnabled:
967                 description: 'XDPEnabled enables XDP acceleration for suitable untracked
968                   incoming deny rules. [Default: true]'
969                 type: boolean
970               xdpRefreshInterval:
971                 description: 'XDPRefreshInterval is the period at which Felix re-checks
972                   all XDP state to ensure that no other process has accidentally broken
973                   Calico''s BPF maps or attached programs. Set to 0 to disable XDP
974                   refresh. [Default: 90s]'
975                 type: string
976             type: object
977         type: object
978     served: true
979     storage: true
980 status:
981   acceptedNames:
982     kind: ""
983     plural: ""
984   conditions: []
985   storedVersions: []
986
987 ---
988 apiVersion: apiextensions.k8s.io/v1
989 kind: CustomResourceDefinition
990 metadata:
991   name: globalnetworkpolicies.crd.projectcalico.org
992 spec:
993   group: crd.projectcalico.org
994   names:
995     kind: GlobalNetworkPolicy
996     listKind: GlobalNetworkPolicyList
997     plural: globalnetworkpolicies
998     singular: globalnetworkpolicy
999   scope: Cluster
1000   versions:
1001   - name: v1
1002     schema:
1003       openAPIV3Schema:
1004         properties:
1005           apiVersion:
1006             description: 'APIVersion defines the versioned schema of this representation
1007               of an object. Servers should convert recognized schemas to the latest
1008               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
1009             type: string
1010           kind:
1011             description: 'Kind is a string value representing the REST resource this
1012               object represents. Servers may infer this from the endpoint the client
1013               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
1014             type: string
1015           metadata:
1016             type: object
1017           spec:
1018             properties:
1019               applyOnForward:
1020                 description: ApplyOnForward indicates to apply the rules in this policy
1021                   on forward traffic.
1022                 type: boolean
1023               doNotTrack:
1024                 description: DoNotTrack indicates whether packets matched by the rules
1025                   in this policy should go through the data plane's connection tracking,
1026                   such as Linux conntrack.  If True, the rules in this policy are
1027                   applied before any data plane connection tracking, and packets allowed
1028                   by this policy are marked as not to be tracked.
1029                 type: boolean
1030               egress:
1031                 description: The ordered set of egress rules.  Each rule contains
1032                   a set of packet match criteria and a corresponding action to apply.
1033                 items:
1034                   description: "A Rule encapsulates a set of match criteria and an
1035                     action.  Both selector-based security Policy and security Profiles
1036                     reference rules - separated out as a list of rules for both ingress
1037                     and egress packet matching. \n Each positive match criteria has
1038                     a negated version, prefixed with \"Not\". All the match criteria
1039                     within a rule must be satisfied for a packet to match. A single
1040                     rule can contain the positive and negative version of a match
1041                     and both must be satisfied for the rule to match."
1042                   properties:
1043                     action:
1044                       type: string
1045                     destination:
1046                       description: Destination contains the match criteria that apply
1047                         to destination entity.
1048                       properties:
1049                         namespaceSelector:
1050                           description: "NamespaceSelector is an optional field that
1051                             contains a selector expression. Only traffic that originates
1052                             from (or terminates at) endpoints within the selected
1053                             namespaces will be matched. When both NamespaceSelector
1054                             and Selector are defined on the same rule, then only workload
1055                             endpoints that are matched by both selectors will be selected
1056                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
1057                             implies that the Selector is limited to selecting only
1058                             workload endpoints in the same namespace as the NetworkPolicy.
1059                             \n For NetworkPolicy, `global()` NamespaceSelector implies
1060                             that the Selector is limited to selecting only GlobalNetworkSet
1061                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
1062                             NamespaceSelector implies the Selector applies to workload
1063                             endpoints across all namespaces."
1064                           type: string
1065                         nets:
1066                           description: Nets is an optional field that restricts the
1067                             rule to only apply to traffic that originates from (or
1068                             terminates at) IP addresses in any of the given subnets.
1069                           items:
1070                             type: string
1071                           type: array
1072                         notNets:
1073                           description: NotNets is the negated version of the Nets
1074                             field.
1075                           items:
1076                             type: string
1077                           type: array
1078                         notPorts:
1079                           description: NotPorts is the negated version of the Ports
1080                             field. Since only some protocols have ports, if any ports
1081                             are specified it requires the Protocol match in the Rule
1082                             to be set to "TCP" or "UDP".
1083                           items:
1084                             anyOf:
1085                             - type: integer
1086                             - type: string
1087                             pattern: ^.*
1088                             x-kubernetes-int-or-string: true
1089                           type: array
1090                         notSelector:
1091                           description: NotSelector is the negated version of the Selector
1092                             field.  See Selector field for subtleties with negated
1093                             selectors.
1094                           type: string
1095                         ports:
1096                           description: "Ports is an optional field that restricts
1097                             the rule to only apply to traffic that has a source (destination)
1098                             port that matches one of these ranges/values. This value
1099                             is a list of integers or strings that represent ranges
1100                             of ports. \n Since only some protocols have ports, if
1101                             any ports are specified it requires the Protocol match
1102                             in the Rule to be set to \"TCP\" or \"UDP\"."
1103                           items:
1104                             anyOf:
1105                             - type: integer
1106                             - type: string
1107                             pattern: ^.*
1108                             x-kubernetes-int-or-string: true
1109                           type: array
1110                         selector:
1111                           description: "Selector is an optional field that contains
1112                             a selector expression (see Policy for sample syntax).
1113                             \ Only traffic that originates from (terminates at) endpoints
1114                             matching the selector will be matched. \n Note that: in
1115                             addition to the negated version of the Selector (see NotSelector
1116                             below), the selector expression syntax itself supports
1117                             negation.  The two types of negation are subtly different.
1118                             One negates the set of matched endpoints, the other negates
1119                             the whole match: \n \tSelector = \"!has(my_label)\" matches
1120                             packets that are from other Calico-controlled \tendpoints
1121                             that do not have the label \"my_label\". \n \tNotSelector
1122                             = \"has(my_label)\" matches packets that are not from
1123                             Calico-controlled \tendpoints that do have the label \"my_label\".
1124                             \n The effect is that the latter will accept packets from
1125                             non-Calico sources whereas the former is limited to packets
1126                             from Calico-controlled endpoints."
1127                           type: string
1128                         serviceAccounts:
1129                           description: ServiceAccounts is an optional field that restricts
1130                             the rule to only apply to traffic that originates from
1131                             (or terminates at) a pod running as a matching service
1132                             account.
1133                           properties:
1134                             names:
1135                               description: Names is an optional field that restricts
1136                                 the rule to only apply to traffic that originates
1137                                 from (or terminates at) a pod running as a service
1138                                 account whose name is in the list.
1139                               items:
1140                                 type: string
1141                               type: array
1142                             selector:
1143                               description: Selector is an optional field that restricts
1144                                 the rule to only apply to traffic that originates
1145                                 from (or terminates at) a pod running as a service
1146                                 account that matches the given label selector. If
1147                                 both Names and Selector are specified then they are
1148                                 AND'ed.
1149                               type: string
1150                           type: object
1151                       type: object
1152                     http:
1153                       description: HTTP contains match criteria that apply to HTTP
1154                         requests.
1155                       properties:
1156                         methods:
1157                           description: Methods is an optional field that restricts
1158                             the rule to apply only to HTTP requests that use one of
1159                             the listed HTTP Methods (e.g. GET, PUT, etc.) Multiple
1160                             methods are OR'd together.
1161                           items:
1162                             type: string
1163                           type: array
1164                         paths:
1165                           description: 'Paths is an optional field that restricts
1166                             the rule to apply to HTTP requests that use one of the
1167                             listed HTTP Paths. Multiple paths are OR''d together.
1168                             e.g: - exact: /foo - prefix: /bar NOTE: Each entry may
1169                             ONLY specify either a `exact` or a `prefix` match. The
1170                             validator will check for it.'
1171                           items:
1172                             description: 'HTTPPath specifies an HTTP path to match.
1173                               It may be either of the form: exact: <path>: which matches
1174                               the path exactly or prefix: <path-prefix>: which matches
1175                               the path prefix'
1176                             properties:
1177                               exact:
1178                                 type: string
1179                               prefix:
1180                                 type: string
1181                             type: object
1182                           type: array
1183                       type: object
1184                     icmp:
1185                       description: ICMP is an optional field that restricts the rule
1186                         to apply to a specific type and code of ICMP traffic.  This
1187                         should only be specified if the Protocol field is set to "ICMP"
1188                         or "ICMPv6".
1189                       properties:
1190                         code:
1191                           description: Match on a specific ICMP code.  If specified,
1192                             the Type value must also be specified. This is a technical
1193                             limitation imposed by the kernel's iptables firewall,
1194                             which Calico uses to enforce the rule.
1195                           type: integer
1196                         type:
1197                           description: Match on a specific ICMP type.  For example
1198                             a value of 8 refers to ICMP Echo Request (i.e. pings).
1199                           type: integer
1200                       type: object
1201                     ipVersion:
1202                       description: IPVersion is an optional field that restricts the
1203                         rule to only match a specific IP version.
1204                       type: integer
1205                     metadata:
1206                       description: Metadata contains additional information for this
1207                         rule
1208                       properties:
1209                         annotations:
1210                           additionalProperties:
1211                             type: string
1212                           description: Annotations is a set of key value pairs that
1213                             give extra information about the rule
1214                           type: object
1215                       type: object
1216                     notICMP:
1217                       description: NotICMP is the negated version of the ICMP field.
1218                       properties:
1219                         code:
1220                           description: Match on a specific ICMP code.  If specified,
1221                             the Type value must also be specified. This is a technical
1222                             limitation imposed by the kernel's iptables firewall,
1223                             which Calico uses to enforce the rule.
1224                           type: integer
1225                         type:
1226                           description: Match on a specific ICMP type.  For example
1227                             a value of 8 refers to ICMP Echo Request (i.e. pings).
1228                           type: integer
1229                       type: object
1230                     notProtocol:
1231                       anyOf:
1232                       - type: integer
1233                       - type: string
1234                       description: NotProtocol is the negated version of the Protocol
1235                         field.
1236                       pattern: ^.*
1237                       x-kubernetes-int-or-string: true
1238                     protocol:
1239                       anyOf:
1240                       - type: integer
1241                       - type: string
1242                       description: "Protocol is an optional field that restricts the
1243                         rule to only apply to traffic of a specific IP protocol. Required
1244                         if any of the EntityRules contain Ports (because ports only
1245                         apply to certain protocols). \n Must be one of these string
1246                         values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\",
1247                         \"UDPLite\" or an integer in the range 1-255."
1248                       pattern: ^.*
1249                       x-kubernetes-int-or-string: true
1250                     source:
1251                       description: Source contains the match criteria that apply to
1252                         source entity.
1253                       properties:
1254                         namespaceSelector:
1255                           description: "NamespaceSelector is an optional field that
1256                             contains a selector expression. Only traffic that originates
1257                             from (or terminates at) endpoints within the selected
1258                             namespaces will be matched. When both NamespaceSelector
1259                             and Selector are defined on the same rule, then only workload
1260                             endpoints that are matched by both selectors will be selected
1261                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
1262                             implies that the Selector is limited to selecting only
1263                             workload endpoints in the same namespace as the NetworkPolicy.
1264                             \n For NetworkPolicy, `global()` NamespaceSelector implies
1265                             that the Selector is limited to selecting only GlobalNetworkSet
1266                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
1267                             NamespaceSelector implies the Selector applies to workload
1268                             endpoints across all namespaces."
1269                           type: string
1270                         nets:
1271                           description: Nets is an optional field that restricts the
1272                             rule to only apply to traffic that originates from (or
1273                             terminates at) IP addresses in any of the given subnets.
1274                           items:
1275                             type: string
1276                           type: array
1277                         notNets:
1278                           description: NotNets is the negated version of the Nets
1279                             field.
1280                           items:
1281                             type: string
1282                           type: array
1283                         notPorts:
1284                           description: NotPorts is the negated version of the Ports
1285                             field. Since only some protocols have ports, if any ports
1286                             are specified it requires the Protocol match in the Rule
1287                             to be set to "TCP" or "UDP".
1288                           items:
1289                             anyOf:
1290                             - type: integer
1291                             - type: string
1292                             pattern: ^.*
1293                             x-kubernetes-int-or-string: true
1294                           type: array
1295                         notSelector:
1296                           description: NotSelector is the negated version of the Selector
1297                             field.  See Selector field for subtleties with negated
1298                             selectors.
1299                           type: string
1300                         ports:
1301                           description: "Ports is an optional field that restricts
1302                             the rule to only apply to traffic that has a source (destination)
1303                             port that matches one of these ranges/values. This value
1304                             is a list of integers or strings that represent ranges
1305                             of ports. \n Since only some protocols have ports, if
1306                             any ports are specified it requires the Protocol match
1307                             in the Rule to be set to \"TCP\" or \"UDP\"."
1308                           items:
1309                             anyOf:
1310                             - type: integer
1311                             - type: string
1312                             pattern: ^.*
1313                             x-kubernetes-int-or-string: true
1314                           type: array
1315                         selector:
1316                           description: "Selector is an optional field that contains
1317                             a selector expression (see Policy for sample syntax).
1318                             \ Only traffic that originates from (terminates at) endpoints
1319                             matching the selector will be matched. \n Note that: in
1320                             addition to the negated version of the Selector (see NotSelector
1321                             below), the selector expression syntax itself supports
1322                             negation.  The two types of negation are subtly different.
1323                             One negates the set of matched endpoints, the other negates
1324                             the whole match: \n \tSelector = \"!has(my_label)\" matches
1325                             packets that are from other Calico-controlled \tendpoints
1326                             that do not have the label \"my_label\". \n \tNotSelector
1327                             = \"has(my_label)\" matches packets that are not from
1328                             Calico-controlled \tendpoints that do have the label \"my_label\".
1329                             \n The effect is that the latter will accept packets from
1330                             non-Calico sources whereas the former is limited to packets
1331                             from Calico-controlled endpoints."
1332                           type: string
1333                         serviceAccounts:
1334                           description: ServiceAccounts is an optional field that restricts
1335                             the rule to only apply to traffic that originates from
1336                             (or terminates at) a pod running as a matching service
1337                             account.
1338                           properties:
1339                             names:
1340                               description: Names is an optional field that restricts
1341                                 the rule to only apply to traffic that originates
1342                                 from (or terminates at) a pod running as a service
1343                                 account whose name is in the list.
1344                               items:
1345                                 type: string
1346                               type: array
1347                             selector:
1348                               description: Selector is an optional field that restricts
1349                                 the rule to only apply to traffic that originates
1350                                 from (or terminates at) a pod running as a service
1351                                 account that matches the given label selector. If
1352                                 both Names and Selector are specified then they are
1353                                 AND'ed.
1354                               type: string
1355                           type: object
1356                       type: object
1357                   required:
1358                   - action
1359                   type: object
1360                 type: array
1361               ingress:
1362                 description: The ordered set of ingress rules.  Each rule contains
1363                   a set of packet match criteria and a corresponding action to apply.
1364                 items:
1365                   description: "A Rule encapsulates a set of match criteria and an
1366                     action.  Both selector-based security Policy and security Profiles
1367                     reference rules - separated out as a list of rules for both ingress
1368                     and egress packet matching. \n Each positive match criteria has
1369                     a negated version, prefixed with \"Not\". All the match criteria
1370                     within a rule must be satisfied for a packet to match. A single
1371                     rule can contain the positive and negative version of a match
1372                     and both must be satisfied for the rule to match."
1373                   properties:
1374                     action:
1375                       type: string
1376                     destination:
1377                       description: Destination contains the match criteria that apply
1378                         to destination entity.
1379                       properties:
1380                         namespaceSelector:
1381                           description: "NamespaceSelector is an optional field that
1382                             contains a selector expression. Only traffic that originates
1383                             from (or terminates at) endpoints within the selected
1384                             namespaces will be matched. When both NamespaceSelector
1385                             and Selector are defined on the same rule, then only workload
1386                             endpoints that are matched by both selectors will be selected
1387                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
1388                             implies that the Selector is limited to selecting only
1389                             workload endpoints in the same namespace as the NetworkPolicy.
1390                             \n For NetworkPolicy, `global()` NamespaceSelector implies
1391                             that the Selector is limited to selecting only GlobalNetworkSet
1392                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
1393                             NamespaceSelector implies the Selector applies to workload
1394                             endpoints across all namespaces."
1395                           type: string
1396                         nets:
1397                           description: Nets is an optional field that restricts the
1398                             rule to only apply to traffic that originates from (or
1399                             terminates at) IP addresses in any of the given subnets.
1400                           items:
1401                             type: string
1402                           type: array
1403                         notNets:
1404                           description: NotNets is the negated version of the Nets
1405                             field.
1406                           items:
1407                             type: string
1408                           type: array
1409                         notPorts:
1410                           description: NotPorts is the negated version of the Ports
1411                             field. Since only some protocols have ports, if any ports
1412                             are specified it requires the Protocol match in the Rule
1413                             to be set to "TCP" or "UDP".
1414                           items:
1415                             anyOf:
1416                             - type: integer
1417                             - type: string
1418                             pattern: ^.*
1419                             x-kubernetes-int-or-string: true
1420                           type: array
1421                         notSelector:
1422                           description: NotSelector is the negated version of the Selector
1423                             field.  See Selector field for subtleties with negated
1424                             selectors.
1425                           type: string
1426                         ports:
1427                           description: "Ports is an optional field that restricts
1428                             the rule to only apply to traffic that has a source (destination)
1429                             port that matches one of these ranges/values. This value
1430                             is a list of integers or strings that represent ranges
1431                             of ports. \n Since only some protocols have ports, if
1432                             any ports are specified it requires the Protocol match
1433                             in the Rule to be set to \"TCP\" or \"UDP\"."
1434                           items:
1435                             anyOf:
1436                             - type: integer
1437                             - type: string
1438                             pattern: ^.*
1439                             x-kubernetes-int-or-string: true
1440                           type: array
1441                         selector:
1442                           description: "Selector is an optional field that contains
1443                             a selector expression (see Policy for sample syntax).
1444                             \ Only traffic that originates from (terminates at) endpoints
1445                             matching the selector will be matched. \n Note that: in
1446                             addition to the negated version of the Selector (see NotSelector
1447                             below), the selector expression syntax itself supports
1448                             negation.  The two types of negation are subtly different.
1449                             One negates the set of matched endpoints, the other negates
1450                             the whole match: \n \tSelector = \"!has(my_label)\" matches
1451                             packets that are from other Calico-controlled \tendpoints
1452                             that do not have the label \"my_label\". \n \tNotSelector
1453                             = \"has(my_label)\" matches packets that are not from
1454                             Calico-controlled \tendpoints that do have the label \"my_label\".
1455                             \n The effect is that the latter will accept packets from
1456                             non-Calico sources whereas the former is limited to packets
1457                             from Calico-controlled endpoints."
1458                           type: string
1459                         serviceAccounts:
1460                           description: ServiceAccounts is an optional field that restricts
1461                             the rule to only apply to traffic that originates from
1462                             (or terminates at) a pod running as a matching service
1463                             account.
1464                           properties:
1465                             names:
1466                               description: Names is an optional field that restricts
1467                                 the rule to only apply to traffic that originates
1468                                 from (or terminates at) a pod running as a service
1469                                 account whose name is in the list.
1470                               items:
1471                                 type: string
1472                               type: array
1473                             selector:
1474                               description: Selector is an optional field that restricts
1475                                 the rule to only apply to traffic that originates
1476                                 from (or terminates at) a pod running as a service
1477                                 account that matches the given label selector. If
1478                                 both Names and Selector are specified then they are
1479                                 AND'ed.
1480                               type: string
1481                           type: object
1482                       type: object
1483                     http:
1484                       description: HTTP contains match criteria that apply to HTTP
1485                         requests.
1486                       properties:
1487                         methods:
1488                           description: Methods is an optional field that restricts
1489                             the rule to apply only to HTTP requests that use one of
1490                             the listed HTTP Methods (e.g. GET, PUT, etc.) Multiple
1491                             methods are OR'd together.
1492                           items:
1493                             type: string
1494                           type: array
1495                         paths:
1496                           description: 'Paths is an optional field that restricts
1497                             the rule to apply to HTTP requests that use one of the
1498                             listed HTTP Paths. Multiple paths are OR''d together.
1499                             e.g: - exact: /foo - prefix: /bar NOTE: Each entry may
1500                             ONLY specify either a `exact` or a `prefix` match. The
1501                             validator will check for it.'
1502                           items:
1503                             description: 'HTTPPath specifies an HTTP path to match.
1504                               It may be either of the form: exact: <path>: which matches
1505                               the path exactly or prefix: <path-prefix>: which matches
1506                               the path prefix'
1507                             properties:
1508                               exact:
1509                                 type: string
1510                               prefix:
1511                                 type: string
1512                             type: object
1513                           type: array
1514                       type: object
1515                     icmp:
1516                       description: ICMP is an optional field that restricts the rule
1517                         to apply to a specific type and code of ICMP traffic.  This
1518                         should only be specified if the Protocol field is set to "ICMP"
1519                         or "ICMPv6".
1520                       properties:
1521                         code:
1522                           description: Match on a specific ICMP code.  If specified,
1523                             the Type value must also be specified. This is a technical
1524                             limitation imposed by the kernel's iptables firewall,
1525                             which Calico uses to enforce the rule.
1526                           type: integer
1527                         type:
1528                           description: Match on a specific ICMP type.  For example
1529                             a value of 8 refers to ICMP Echo Request (i.e. pings).
1530                           type: integer
1531                       type: object
1532                     ipVersion:
1533                       description: IPVersion is an optional field that restricts the
1534                         rule to only match a specific IP version.
1535                       type: integer
1536                     metadata:
1537                       description: Metadata contains additional information for this
1538                         rule
1539                       properties:
1540                         annotations:
1541                           additionalProperties:
1542                             type: string
1543                           description: Annotations is a set of key value pairs that
1544                             give extra information about the rule
1545                           type: object
1546                       type: object
1547                     notICMP:
1548                       description: NotICMP is the negated version of the ICMP field.
1549                       properties:
1550                         code:
1551                           description: Match on a specific ICMP code.  If specified,
1552                             the Type value must also be specified. This is a technical
1553                             limitation imposed by the kernel's iptables firewall,
1554                             which Calico uses to enforce the rule.
1555                           type: integer
1556                         type:
1557                           description: Match on a specific ICMP type.  For example
1558                             a value of 8 refers to ICMP Echo Request (i.e. pings).
1559                           type: integer
1560                       type: object
1561                     notProtocol:
1562                       anyOf:
1563                       - type: integer
1564                       - type: string
1565                       description: NotProtocol is the negated version of the Protocol
1566                         field.
1567                       pattern: ^.*
1568                       x-kubernetes-int-or-string: true
1569                     protocol:
1570                       anyOf:
1571                       - type: integer
1572                       - type: string
1573                       description: "Protocol is an optional field that restricts the
1574                         rule to only apply to traffic of a specific IP protocol. Required
1575                         if any of the EntityRules contain Ports (because ports only
1576                         apply to certain protocols). \n Must be one of these string
1577                         values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\",
1578                         \"UDPLite\" or an integer in the range 1-255."
1579                       pattern: ^.*
1580                       x-kubernetes-int-or-string: true
1581                     source:
1582                       description: Source contains the match criteria that apply to
1583                         source entity.
1584                       properties:
1585                         namespaceSelector:
1586                           description: "NamespaceSelector is an optional field that
1587                             contains a selector expression. Only traffic that originates
1588                             from (or terminates at) endpoints within the selected
1589                             namespaces will be matched. When both NamespaceSelector
1590                             and Selector are defined on the same rule, then only workload
1591                             endpoints that are matched by both selectors will be selected
1592                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
1593                             implies that the Selector is limited to selecting only
1594                             workload endpoints in the same namespace as the NetworkPolicy.
1595                             \n For NetworkPolicy, `global()` NamespaceSelector implies
1596                             that the Selector is limited to selecting only GlobalNetworkSet
1597                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
1598                             NamespaceSelector implies the Selector applies to workload
1599                             endpoints across all namespaces."
1600                           type: string
1601                         nets:
1602                           description: Nets is an optional field that restricts the
1603                             rule to only apply to traffic that originates from (or
1604                             terminates at) IP addresses in any of the given subnets.
1605                           items:
1606                             type: string
1607                           type: array
1608                         notNets:
1609                           description: NotNets is the negated version of the Nets
1610                             field.
1611                           items:
1612                             type: string
1613                           type: array
1614                         notPorts:
1615                           description: NotPorts is the negated version of the Ports
1616                             field. Since only some protocols have ports, if any ports
1617                             are specified it requires the Protocol match in the Rule
1618                             to be set to "TCP" or "UDP".
1619                           items:
1620                             anyOf:
1621                             - type: integer
1622                             - type: string
1623                             pattern: ^.*
1624                             x-kubernetes-int-or-string: true
1625                           type: array
1626                         notSelector:
1627                           description: NotSelector is the negated version of the Selector
1628                             field.  See Selector field for subtleties with negated
1629                             selectors.
1630                           type: string
1631                         ports:
1632                           description: "Ports is an optional field that restricts
1633                             the rule to only apply to traffic that has a source (destination)
1634                             port that matches one of these ranges/values. This value
1635                             is a list of integers or strings that represent ranges
1636                             of ports. \n Since only some protocols have ports, if
1637                             any ports are specified it requires the Protocol match
1638                             in the Rule to be set to \"TCP\" or \"UDP\"."
1639                           items:
1640                             anyOf:
1641                             - type: integer
1642                             - type: string
1643                             pattern: ^.*
1644                             x-kubernetes-int-or-string: true
1645                           type: array
1646                         selector:
1647                           description: "Selector is an optional field that contains
1648                             a selector expression (see Policy for sample syntax).
1649                             \ Only traffic that originates from (terminates at) endpoints
1650                             matching the selector will be matched. \n Note that: in
1651                             addition to the negated version of the Selector (see NotSelector
1652                             below), the selector expression syntax itself supports
1653                             negation.  The two types of negation are subtly different.
1654                             One negates the set of matched endpoints, the other negates
1655                             the whole match: \n \tSelector = \"!has(my_label)\" matches
1656                             packets that are from other Calico-controlled \tendpoints
1657                             that do not have the label \"my_label\". \n \tNotSelector
1658                             = \"has(my_label)\" matches packets that are not from
1659                             Calico-controlled \tendpoints that do have the label \"my_label\".
1660                             \n The effect is that the latter will accept packets from
1661                             non-Calico sources whereas the former is limited to packets
1662                             from Calico-controlled endpoints."
1663                           type: string
1664                         serviceAccounts:
1665                           description: ServiceAccounts is an optional field that restricts
1666                             the rule to only apply to traffic that originates from
1667                             (or terminates at) a pod running as a matching service
1668                             account.
1669                           properties:
1670                             names:
1671                               description: Names is an optional field that restricts
1672                                 the rule to only apply to traffic that originates
1673                                 from (or terminates at) a pod running as a service
1674                                 account whose name is in the list.
1675                               items:
1676                                 type: string
1677                               type: array
1678                             selector:
1679                               description: Selector is an optional field that restricts
1680                                 the rule to only apply to traffic that originates
1681                                 from (or terminates at) a pod running as a service
1682                                 account that matches the given label selector. If
1683                                 both Names and Selector are specified then they are
1684                                 AND'ed.
1685                               type: string
1686                           type: object
1687                       type: object
1688                   required:
1689                   - action
1690                   type: object
1691                 type: array
1692               namespaceSelector:
1693                 description: NamespaceSelector is an optional field for an expression
1694                   used to select a pod based on namespaces.
1695                 type: string
1696               order:
1697                 description: Order is an optional field that specifies the order in
1698                   which the policy is applied. Policies with higher "order" are applied
1699                   after those with lower order.  If the order is omitted, it may be
1700                   considered to be "infinite" - i.e. the policy will be applied last.  Policies
1701                   with identical order will be applied in alphanumerical order based
1702                   on the Policy "Name".
1703                 type: number
1704               preDNAT:
1705                 description: PreDNAT indicates to apply the rules in this policy before
1706                   any DNAT.
1707                 type: boolean
1708               selector:
1709                 description: "The selector is an expression used to pick pick out
1710                   the endpoints that the policy should be applied to. \n Selector
1711                   expressions follow this syntax: \n \tlabel == \"string_literal\"
1712                   \ ->  comparison, e.g. my_label == \"foo bar\" \tlabel != \"string_literal\"
1713                   \  ->  not equal; also matches if label is not present \tlabel in
1714                   { \"a\", \"b\", \"c\", ... }  ->  true if the value of label X is
1715                   one of \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\",
1716                   ... }  ->  true if the value of label X is not one of \"a\", \"b\",
1717                   \"c\" \thas(label_name)  -> True if that label is present \t! expr
1718                   -> negation of expr \texpr && expr  -> Short-circuit and \texpr
1719                   || expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
1720                   or the empty selector -> matches all endpoints. \n Label names are
1721                   allowed to contain alphanumerics, -, _ and /. String literals are
1722                   more permissive but they do not support escape characters. \n Examples
1723                   (with made-up labels): \n \ttype == \"webserver\" && deployment
1724                   == \"prod\" \ttype in {\"frontend\", \"backend\"} \tdeployment !=
1725                   \"dev\" \t! has(label_name)"
1726                 type: string
1727               serviceAccountSelector:
1728                 description: ServiceAccountSelector is an optional field for an expression
1729                   used to select a pod based on service accounts.
1730                 type: string
1731               types:
1732                 description: "Types indicates whether this policy applies to ingress,
1733                   or to egress, or to both.  When not explicitly specified (and so
1734                   the value on creation is empty or nil), Calico defaults Types according
1735                   to what Ingress and Egress rules are present in the policy.  The
1736                   default is: \n - [ PolicyTypeIngress ], if there are no Egress rules
1737                   (including the case where there are   also no Ingress rules) \n
1738                   - [ PolicyTypeEgress ], if there are Egress rules but no Ingress
1739                   rules \n - [ PolicyTypeIngress, PolicyTypeEgress ], if there are
1740                   both Ingress and Egress rules. \n When the policy is read back again,
1741                   Types will always be one of these values, never empty or nil."
1742                 items:
1743                   description: PolicyType enumerates the possible values of the PolicySpec
1744                     Types field.
1745                   type: string
1746                 type: array
1747             type: object
1748         type: object
1749     served: true
1750     storage: true
1751 status:
1752   acceptedNames:
1753     kind: ""
1754     plural: ""
1755   conditions: []
1756   storedVersions: []
1757
1758 ---
1759 apiVersion: apiextensions.k8s.io/v1
1760 kind: CustomResourceDefinition
1761 metadata:
1762   name: globalnetworksets.crd.projectcalico.org
1763 spec:
1764   group: crd.projectcalico.org
1765   names:
1766     kind: GlobalNetworkSet
1767     listKind: GlobalNetworkSetList
1768     plural: globalnetworksets
1769     singular: globalnetworkset
1770   scope: Cluster
1771   versions:
1772   - name: v1
1773     schema:
1774       openAPIV3Schema:
1775         description: GlobalNetworkSet contains a set of arbitrary IP sub-networks/CIDRs
1776           that share labels to allow rules to refer to them via selectors.  The labels
1777           of GlobalNetworkSet are not namespaced.
1778         properties:
1779           apiVersion:
1780             description: 'APIVersion defines the versioned schema of this representation
1781               of an object. Servers should convert recognized schemas to the latest
1782               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
1783             type: string
1784           kind:
1785             description: 'Kind is a string value representing the REST resource this
1786               object represents. Servers may infer this from the endpoint the client
1787               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
1788             type: string
1789           metadata:
1790             type: object
1791           spec:
1792             description: GlobalNetworkSetSpec contains the specification for a NetworkSet
1793               resource.
1794             properties:
1795               nets:
1796                 description: The list of IP networks that belong to this set.
1797                 items:
1798                   type: string
1799                 type: array
1800             type: object
1801         type: object
1802     served: true
1803     storage: true
1804 status:
1805   acceptedNames:
1806     kind: ""
1807     plural: ""
1808   conditions: []
1809   storedVersions: []
1810
1811 ---
1812 apiVersion: apiextensions.k8s.io/v1
1813 kind: CustomResourceDefinition
1814 metadata:
1815   name: hostendpoints.crd.projectcalico.org
1816 spec:
1817   group: crd.projectcalico.org
1818   names:
1819     kind: HostEndpoint
1820     listKind: HostEndpointList
1821     plural: hostendpoints
1822     singular: hostendpoint
1823   scope: Cluster
1824   versions:
1825   - name: v1
1826     schema:
1827       openAPIV3Schema:
1828         properties:
1829           apiVersion:
1830             description: 'APIVersion defines the versioned schema of this representation
1831               of an object. Servers should convert recognized schemas to the latest
1832               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
1833             type: string
1834           kind:
1835             description: 'Kind is a string value representing the REST resource this
1836               object represents. Servers may infer this from the endpoint the client
1837               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
1838             type: string
1839           metadata:
1840             type: object
1841           spec:
1842             description: HostEndpointSpec contains the specification for a HostEndpoint
1843               resource.
1844             properties:
1845               expectedIPs:
1846                 description: "The expected IP addresses (IPv4 and IPv6) of the endpoint.
1847                   If \"InterfaceName\" is not present, Calico will look for an interface
1848                   matching any of the IPs in the list and apply policy to that. Note:
1849                   \tWhen using the selector match criteria in an ingress or egress
1850                   security Policy \tor Profile, Calico converts the selector into
1851                   a set of IP addresses. For host \tendpoints, the ExpectedIPs field
1852                   is used for that purpose. (If only the interface \tname is specified,
1853                   Calico does not learn the IPs of the interface for use in match
1854                   \tcriteria.)"
1855                 items:
1856                   type: string
1857                 type: array
1858               interfaceName:
1859                 description: "Either \"*\", or the name of a specific Linux interface
1860                   to apply policy to; or empty.  \"*\" indicates that this HostEndpoint
1861                   governs all traffic to, from or through the default network namespace
1862                   of the host named by the \"Node\" field; entering and leaving that
1863                   namespace via any interface, including those from/to non-host-networked
1864                   local workloads. \n If InterfaceName is not \"*\", this HostEndpoint
1865                   only governs traffic that enters or leaves the host through the
1866                   specific interface named by InterfaceName, or - when InterfaceName
1867                   is empty - through the specific interface that has one of the IPs
1868                   in ExpectedIPs. Therefore, when InterfaceName is empty, at least
1869                   one expected IP must be specified.  Only external interfaces (such
1870                   as \"eth0\") are supported here; it isn't possible for a HostEndpoint
1871                   to protect traffic through a specific local workload interface.
1872                   \n Note: Only some kinds of policy are implemented for \"*\" HostEndpoints;
1873                   initially just pre-DNAT policy.  Please check Calico documentation
1874                   for the latest position."
1875                 type: string
1876               node:
1877                 description: The node name identifying the Calico node instance.
1878                 type: string
1879               ports:
1880                 description: Ports contains the endpoint's named ports, which may
1881                   be referenced in security policy rules.
1882                 items:
1883                   properties:
1884                     name:
1885                       type: string
1886                     port:
1887                       type: integer
1888                     protocol:
1889                       anyOf:
1890                       - type: integer
1891                       - type: string
1892                       pattern: ^.*
1893                       x-kubernetes-int-or-string: true
1894                   required:
1895                   - name
1896                   - port
1897                   - protocol
1898                   type: object
1899                 type: array
1900               profiles:
1901                 description: A list of identifiers of security Profile objects that
1902                   apply to this endpoint. Each profile is applied in the order that
1903                   they appear in this list.  Profile rules are applied after the selector-based
1904                   security policy.
1905                 items:
1906                   type: string
1907                 type: array
1908             type: object
1909         type: object
1910     served: true
1911     storage: true
1912 status:
1913   acceptedNames:
1914     kind: ""
1915     plural: ""
1916   conditions: []
1917   storedVersions: []
1918
1919 ---
1920 apiVersion: apiextensions.k8s.io/v1
1921 kind: CustomResourceDefinition
1922 metadata:
1923   name: ipamblocks.crd.projectcalico.org
1924 spec:
1925   group: crd.projectcalico.org
1926   names:
1927     kind: IPAMBlock
1928     listKind: IPAMBlockList
1929     plural: ipamblocks
1930     singular: ipamblock
1931   scope: Cluster
1932   versions:
1933   - name: v1
1934     schema:
1935       openAPIV3Schema:
1936         properties:
1937           apiVersion:
1938             description: 'APIVersion defines the versioned schema of this representation
1939               of an object. Servers should convert recognized schemas to the latest
1940               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
1941             type: string
1942           kind:
1943             description: 'Kind is a string value representing the REST resource this
1944               object represents. Servers may infer this from the endpoint the client
1945               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
1946             type: string
1947           metadata:
1948             type: object
1949           spec:
1950             description: IPAMBlockSpec contains the specification for an IPAMBlock
1951               resource.
1952             properties:
1953               affinity:
1954                 type: string
1955               allocations:
1956                 items:
1957                   type: integer
1958                   # TODO: This nullable is manually added in. We should update controller-gen
1959                   # to handle []*int properly itself.
1960                   nullable: true
1961                 type: array
1962               attributes:
1963                 items:
1964                   properties:
1965                     handle_id:
1966                       type: string
1967                     secondary:
1968                       additionalProperties:
1969                         type: string
1970                       type: object
1971                   type: object
1972                 type: array
1973               cidr:
1974                 type: string
1975               deleted:
1976                 type: boolean
1977               strictAffinity:
1978                 type: boolean
1979               unallocated:
1980                 items:
1981                   type: integer
1982                 type: array
1983             required:
1984             - allocations
1985             - attributes
1986             - cidr
1987             - strictAffinity
1988             - unallocated
1989             type: object
1990         type: object
1991     served: true
1992     storage: true
1993 status:
1994   acceptedNames:
1995     kind: ""
1996     plural: ""
1997   conditions: []
1998   storedVersions: []
1999
2000 ---
2001 apiVersion: apiextensions.k8s.io/v1
2002 kind: CustomResourceDefinition
2003 metadata:
2004   name: ipamconfigs.crd.projectcalico.org
2005 spec:
2006   group: crd.projectcalico.org
2007   names:
2008     kind: IPAMConfig
2009     listKind: IPAMConfigList
2010     plural: ipamconfigs
2011     singular: ipamconfig
2012   scope: Cluster
2013   versions:
2014   - name: v1
2015     schema:
2016       openAPIV3Schema:
2017         properties:
2018           apiVersion:
2019             description: 'APIVersion defines the versioned schema of this representation
2020               of an object. Servers should convert recognized schemas to the latest
2021               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2022             type: string
2023           kind:
2024             description: 'Kind is a string value representing the REST resource this
2025               object represents. Servers may infer this from the endpoint the client
2026               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2027             type: string
2028           metadata:
2029             type: object
2030           spec:
2031             description: IPAMConfigSpec contains the specification for an IPAMConfig
2032               resource.
2033             properties:
2034               autoAllocateBlocks:
2035                 type: boolean
2036               maxBlocksPerHost:
2037                 description: MaxBlocksPerHost, if non-zero, is the max number of blocks
2038                   that can be affine to each host.
2039                 type: integer
2040               strictAffinity:
2041                 type: boolean
2042             required:
2043             - autoAllocateBlocks
2044             - strictAffinity
2045             type: object
2046         type: object
2047     served: true
2048     storage: true
2049 status:
2050   acceptedNames:
2051     kind: ""
2052     plural: ""
2053   conditions: []
2054   storedVersions: []
2055
2056 ---
2057 apiVersion: apiextensions.k8s.io/v1
2058 kind: CustomResourceDefinition
2059 metadata:
2060   name: ipamhandles.crd.projectcalico.org
2061 spec:
2062   group: crd.projectcalico.org
2063   names:
2064     kind: IPAMHandle
2065     listKind: IPAMHandleList
2066     plural: ipamhandles
2067     singular: ipamhandle
2068   scope: Cluster
2069   versions:
2070   - name: v1
2071     schema:
2072       openAPIV3Schema:
2073         properties:
2074           apiVersion:
2075             description: 'APIVersion defines the versioned schema of this representation
2076               of an object. Servers should convert recognized schemas to the latest
2077               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2078             type: string
2079           kind:
2080             description: 'Kind is a string value representing the REST resource this
2081               object represents. Servers may infer this from the endpoint the client
2082               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2083             type: string
2084           metadata:
2085             type: object
2086           spec:
2087             description: IPAMHandleSpec contains the specification for an IPAMHandle
2088               resource.
2089             properties:
2090               block:
2091                 additionalProperties:
2092                   type: integer
2093                 type: object
2094               deleted:
2095                 type: boolean
2096               handleID:
2097                 type: string
2098             required:
2099             - block
2100             - handleID
2101             type: object
2102         type: object
2103     served: true
2104     storage: true
2105 status:
2106   acceptedNames:
2107     kind: ""
2108     plural: ""
2109   conditions: []
2110   storedVersions: []
2111
2112 ---
2113 apiVersion: apiextensions.k8s.io/v1
2114 kind: CustomResourceDefinition
2115 metadata:
2116   name: ippools.crd.projectcalico.org
2117 spec:
2118   group: crd.projectcalico.org
2119   names:
2120     kind: IPPool
2121     listKind: IPPoolList
2122     plural: ippools
2123     singular: ippool
2124   scope: Cluster
2125   versions:
2126   - name: v1
2127     schema:
2128       openAPIV3Schema:
2129         properties:
2130           apiVersion:
2131             description: 'APIVersion defines the versioned schema of this representation
2132               of an object. Servers should convert recognized schemas to the latest
2133               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2134             type: string
2135           kind:
2136             description: 'Kind is a string value representing the REST resource this
2137               object represents. Servers may infer this from the endpoint the client
2138               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2139             type: string
2140           metadata:
2141             type: object
2142           spec:
2143             description: IPPoolSpec contains the specification for an IPPool resource.
2144             properties:
2145               blockSize:
2146                 description: The block size to use for IP address assignments from
2147                   this pool. Defaults to 26 for IPv4 and 112 for IPv6.
2148                 type: integer
2149               cidr:
2150                 description: The pool CIDR.
2151                 type: string
2152               disabled:
2153                 description: When disabled is true, Calico IPAM will not assign addresses
2154                   from this pool.
2155                 type: boolean
2156               ipip:
2157                 description: 'Deprecated: this field is only used for APIv1 backwards
2158                   compatibility. Setting this field is not allowed, this field is
2159                   for internal use only.'
2160                 properties:
2161                   enabled:
2162                     description: When enabled is true, ipip tunneling will be used
2163                       to deliver packets to destinations within this pool.
2164                     type: boolean
2165                   mode:
2166                     description: The IPIP mode.  This can be one of "always" or "cross-subnet".  A
2167                       mode of "always" will also use IPIP tunneling for routing to
2168                       destination IP addresses within this pool.  A mode of "cross-subnet"
2169                       will only use IPIP tunneling when the destination node is on
2170                       a different subnet to the originating node.  The default value
2171                       (if not specified) is "always".
2172                     type: string
2173                 type: object
2174               ipipMode:
2175                 description: Contains configuration for IPIP tunneling for this pool.
2176                   If not specified, then this is defaulted to "Never" (i.e. IPIP tunneling
2177                   is disabled).
2178                 type: string
2179               nat-outgoing:
2180                 description: 'Deprecated: this field is only used for APIv1 backwards
2181                   compatibility. Setting this field is not allowed, this field is
2182                   for internal use only.'
2183                 type: boolean
2184               natOutgoing:
2185                 description: When nat-outgoing is true, packets sent from Calico networked
2186                   containers in this pool to destinations outside of this pool will
2187                   be masqueraded.
2188                 type: boolean
2189               nodeSelector:
2190                 description: Allows IPPool to allocate for a specific node by label
2191                   selector.
2192                 type: string
2193               vxlanMode:
2194                 description: Contains configuration for VXLAN tunneling for this pool.
2195                   If not specified, then this is defaulted to "Never" (i.e. VXLAN
2196                   tunneling is disabled).
2197                 type: string
2198             required:
2199             - cidr
2200             type: object
2201         type: object
2202     served: true
2203     storage: true
2204 status:
2205   acceptedNames:
2206     kind: ""
2207     plural: ""
2208   conditions: []
2209   storedVersions: []
2210
2211 ---
2212 apiVersion: apiextensions.k8s.io/v1
2213 kind: CustomResourceDefinition
2214 metadata:
2215   name: kubecontrollersconfigurations.crd.projectcalico.org
2216 spec:
2217   group: crd.projectcalico.org
2218   names:
2219     kind: KubeControllersConfiguration
2220     listKind: KubeControllersConfigurationList
2221     plural: kubecontrollersconfigurations
2222     singular: kubecontrollersconfiguration
2223   scope: Cluster
2224   versions:
2225   - name: v1
2226     schema:
2227       openAPIV3Schema:
2228         properties:
2229           apiVersion:
2230             description: 'APIVersion defines the versioned schema of this representation
2231               of an object. Servers should convert recognized schemas to the latest
2232               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2233             type: string
2234           kind:
2235             description: 'Kind is a string value representing the REST resource this
2236               object represents. Servers may infer this from the endpoint the client
2237               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2238             type: string
2239           metadata:
2240             type: object
2241           spec:
2242             description: KubeControllersConfigurationSpec contains the values of the
2243               Kubernetes controllers configuration.
2244             properties:
2245               controllers:
2246                 description: Controllers enables and configures individual Kubernetes
2247                   controllers
2248                 properties:
2249                   namespace:
2250                     description: Namespace enables and configures the namespace controller.
2251                       Enabled by default, set to nil to disable.
2252                     properties:
2253                       reconcilerPeriod:
2254                         description: 'ReconcilerPeriod is the period to perform reconciliation
2255                           with the Calico datastore. [Default: 5m]'
2256                         type: string
2257                     type: object
2258                   node:
2259                     description: Node enables and configures the node controller.
2260                       Enabled by default, set to nil to disable.
2261                     properties:
2262                       hostEndpoint:
2263                         description: HostEndpoint controls syncing nodes to host endpoints.
2264                           Disabled by default, set to nil to disable.
2265                         properties:
2266                           autoCreate:
2267                             description: 'AutoCreate enables automatic creation of
2268                               host endpoints for every node. [Default: Disabled]'
2269                             type: string
2270                         type: object
2271                       reconcilerPeriod:
2272                         description: 'ReconcilerPeriod is the period to perform reconciliation
2273                           with the Calico datastore. [Default: 5m]'
2274                         type: string
2275                       syncLabels:
2276                         description: 'SyncLabels controls whether to copy Kubernetes
2277                           node labels to Calico nodes. [Default: Enabled]'
2278                         type: string
2279                     type: object
2280                   policy:
2281                     description: Policy enables and configures the policy controller.
2282                       Enabled by default, set to nil to disable.
2283                     properties:
2284                       reconcilerPeriod:
2285                         description: 'ReconcilerPeriod is the period to perform reconciliation
2286                           with the Calico datastore. [Default: 5m]'
2287                         type: string
2288                     type: object
2289                   serviceAccount:
2290                     description: ServiceAccount enables and configures the service
2291                       account controller. Enabled by default, set to nil to disable.
2292                     properties:
2293                       reconcilerPeriod:
2294                         description: 'ReconcilerPeriod is the period to perform reconciliation
2295                           with the Calico datastore. [Default: 5m]'
2296                         type: string
2297                     type: object
2298                   workloadEndpoint:
2299                     description: WorkloadEndpoint enables and configures the workload
2300                       endpoint controller. Enabled by default, set to nil to disable.
2301                     properties:
2302                       reconcilerPeriod:
2303                         description: 'ReconcilerPeriod is the period to perform reconciliation
2304                           with the Calico datastore. [Default: 5m]'
2305                         type: string
2306                     type: object
2307                 type: object
2308               etcdV3CompactionPeriod:
2309                 description: 'EtcdV3CompactionPeriod is the period between etcdv3
2310                   compaction requests. Set to 0 to disable. [Default: 10m]'
2311                 type: string
2312               healthChecks:
2313                 description: 'HealthChecks enables or disables support for health
2314                   checks [Default: Enabled]'
2315                 type: string
2316               logSeverityScreen:
2317                 description: 'LogSeverityScreen is the log severity above which logs
2318                   are sent to the stdout. [Default: Info]'
2319                 type: string
2320               prometheusMetricsPort:
2321                 description: 'PrometheusMetricsPort is the TCP port that the Prometheus
2322                   metrics server should bind to. Set to 0 to disable. [Default: 9094]'
2323                 type: integer
2324             required:
2325             - controllers
2326             type: object
2327           status:
2328             description: KubeControllersConfigurationStatus represents the status
2329               of the configuration. It's useful for admins to be able to see the actual
2330               config that was applied, which can be modified by environment variables
2331               on the kube-controllers process.
2332             properties:
2333               environmentVars:
2334                 additionalProperties:
2335                   type: string
2336                 description: EnvironmentVars contains the environment variables on
2337                   the kube-controllers that influenced the RunningConfig.
2338                 type: object
2339               runningConfig:
2340                 description: RunningConfig contains the effective config that is running
2341                   in the kube-controllers pod, after merging the API resource with
2342                   any environment variables.
2343                 properties:
2344                   controllers:
2345                     description: Controllers enables and configures individual Kubernetes
2346                       controllers
2347                     properties:
2348                       namespace:
2349                         description: Namespace enables and configures the namespace
2350                           controller. Enabled by default, set to nil to disable.
2351                         properties:
2352                           reconcilerPeriod:
2353                             description: 'ReconcilerPeriod is the period to perform
2354                               reconciliation with the Calico datastore. [Default:
2355                               5m]'
2356                             type: string
2357                         type: object
2358                       node:
2359                         description: Node enables and configures the node controller.
2360                           Enabled by default, set to nil to disable.
2361                         properties:
2362                           hostEndpoint:
2363                             description: HostEndpoint controls syncing nodes to host
2364                               endpoints. Disabled by default, set to nil to disable.
2365                             properties:
2366                               autoCreate:
2367                                 description: 'AutoCreate enables automatic creation
2368                                   of host endpoints for every node. [Default: Disabled]'
2369                                 type: string
2370                             type: object
2371                           reconcilerPeriod:
2372                             description: 'ReconcilerPeriod is the period to perform
2373                               reconciliation with the Calico datastore. [Default:
2374                               5m]'
2375                             type: string
2376                           syncLabels:
2377                             description: 'SyncLabels controls whether to copy Kubernetes
2378                               node labels to Calico nodes. [Default: Enabled]'
2379                             type: string
2380                         type: object
2381                       policy:
2382                         description: Policy enables and configures the policy controller.
2383                           Enabled by default, set to nil to disable.
2384                         properties:
2385                           reconcilerPeriod:
2386                             description: 'ReconcilerPeriod is the period to perform
2387                               reconciliation with the Calico datastore. [Default:
2388                               5m]'
2389                             type: string
2390                         type: object
2391                       serviceAccount:
2392                         description: ServiceAccount enables and configures the service
2393                           account controller. Enabled by default, set to nil to disable.
2394                         properties:
2395                           reconcilerPeriod:
2396                             description: 'ReconcilerPeriod is the period to perform
2397                               reconciliation with the Calico datastore. [Default:
2398                               5m]'
2399                             type: string
2400                         type: object
2401                       workloadEndpoint:
2402                         description: WorkloadEndpoint enables and configures the workload
2403                           endpoint controller. Enabled by default, set to nil to disable.
2404                         properties:
2405                           reconcilerPeriod:
2406                             description: 'ReconcilerPeriod is the period to perform
2407                               reconciliation with the Calico datastore. [Default:
2408                               5m]'
2409                             type: string
2410                         type: object
2411                     type: object
2412                   etcdV3CompactionPeriod:
2413                     description: 'EtcdV3CompactionPeriod is the period between etcdv3
2414                       compaction requests. Set to 0 to disable. [Default: 10m]'
2415                     type: string
2416                   healthChecks:
2417                     description: 'HealthChecks enables or disables support for health
2418                       checks [Default: Enabled]'
2419                     type: string
2420                   logSeverityScreen:
2421                     description: 'LogSeverityScreen is the log severity above which
2422                       logs are sent to the stdout. [Default: Info]'
2423                     type: string
2424                   prometheusMetricsPort:
2425                     description: 'PrometheusMetricsPort is the TCP port that the Prometheus
2426                       metrics server should bind to. Set to 0 to disable. [Default:
2427                       9094]'
2428                     type: integer
2429                 required:
2430                 - controllers
2431                 type: object
2432             type: object
2433         type: object
2434     served: true
2435     storage: true
2436 status:
2437   acceptedNames:
2438     kind: ""
2439     plural: ""
2440   conditions: []
2441   storedVersions: []
2442
2443 ---
2444 apiVersion: apiextensions.k8s.io/v1
2445 kind: CustomResourceDefinition
2446 metadata:
2447   name: networkpolicies.crd.projectcalico.org
2448 spec:
2449   group: crd.projectcalico.org
2450   names:
2451     kind: NetworkPolicy
2452     listKind: NetworkPolicyList
2453     plural: networkpolicies
2454     singular: networkpolicy
2455   scope: Namespaced
2456   versions:
2457   - name: v1
2458     schema:
2459       openAPIV3Schema:
2460         properties:
2461           apiVersion:
2462             description: 'APIVersion defines the versioned schema of this representation
2463               of an object. Servers should convert recognized schemas to the latest
2464               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
2465             type: string
2466           kind:
2467             description: 'Kind is a string value representing the REST resource this
2468               object represents. Servers may infer this from the endpoint the client
2469               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
2470             type: string
2471           metadata:
2472             type: object
2473           spec:
2474             properties:
2475               egress:
2476                 description: The ordered set of egress rules.  Each rule contains
2477                   a set of packet match criteria and a corresponding action to apply.
2478                 items:
2479                   description: "A Rule encapsulates a set of match criteria and an
2480                     action.  Both selector-based security Policy and security Profiles
2481                     reference rules - separated out as a list of rules for both ingress
2482                     and egress packet matching. \n Each positive match criteria has
2483                     a negated version, prefixed with \"Not\". All the match criteria
2484                     within a rule must be satisfied for a packet to match. A single
2485                     rule can contain the positive and negative version of a match
2486                     and both must be satisfied for the rule to match."
2487                   properties:
2488                     action:
2489                       type: string
2490                     destination:
2491                       description: Destination contains the match criteria that apply
2492                         to destination entity.
2493                       properties:
2494                         namespaceSelector:
2495                           description: "NamespaceSelector is an optional field that
2496                             contains a selector expression. Only traffic that originates
2497                             from (or terminates at) endpoints within the selected
2498                             namespaces will be matched. When both NamespaceSelector
2499                             and Selector are defined on the same rule, then only workload
2500                             endpoints that are matched by both selectors will be selected
2501                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
2502                             implies that the Selector is limited to selecting only
2503                             workload endpoints in the same namespace as the NetworkPolicy.
2504                             \n For NetworkPolicy, `global()` NamespaceSelector implies
2505                             that the Selector is limited to selecting only GlobalNetworkSet
2506                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
2507                             NamespaceSelector implies the Selector applies to workload
2508                             endpoints across all namespaces."
2509                           type: string
2510                         nets:
2511                           description: Nets is an optional field that restricts the
2512                             rule to only apply to traffic that originates from (or
2513                             terminates at) IP addresses in any of the given subnets.
2514                           items:
2515                             type: string
2516                           type: array
2517                         notNets:
2518                           description: NotNets is the negated version of the Nets
2519                             field.
2520                           items:
2521                             type: string
2522                           type: array
2523                         notPorts:
2524                           description: NotPorts is the negated version of the Ports
2525                             field. Since only some protocols have ports, if any ports
2526                             are specified it requires the Protocol match in the Rule
2527                             to be set to "TCP" or "UDP".
2528                           items:
2529                             anyOf:
2530                             - type: integer
2531                             - type: string
2532                             pattern: ^.*
2533                             x-kubernetes-int-or-string: true
2534                           type: array
2535                         notSelector:
2536                           description: NotSelector is the negated version of the Selector
2537                             field.  See Selector field for subtleties with negated
2538                             selectors.
2539                           type: string
2540                         ports:
2541                           description: "Ports is an optional field that restricts
2542                             the rule to only apply to traffic that has a source (destination)
2543                             port that matches one of these ranges/values. This value
2544                             is a list of integers or strings that represent ranges
2545                             of ports. \n Since only some protocols have ports, if
2546                             any ports are specified it requires the Protocol match
2547                             in the Rule to be set to \"TCP\" or \"UDP\"."
2548                           items:
2549                             anyOf:
2550                             - type: integer
2551                             - type: string
2552                             pattern: ^.*
2553                             x-kubernetes-int-or-string: true
2554                           type: array
2555                         selector:
2556                           description: "Selector is an optional field that contains
2557                             a selector expression (see Policy for sample syntax).
2558                             \ Only traffic that originates from (terminates at) endpoints
2559                             matching the selector will be matched. \n Note that: in
2560                             addition to the negated version of the Selector (see NotSelector
2561                             below), the selector expression syntax itself supports
2562                             negation.  The two types of negation are subtly different.
2563                             One negates the set of matched endpoints, the other negates
2564                             the whole match: \n \tSelector = \"!has(my_label)\" matches
2565                             packets that are from other Calico-controlled \tendpoints
2566                             that do not have the label \"my_label\". \n \tNotSelector
2567                             = \"has(my_label)\" matches packets that are not from
2568                             Calico-controlled \tendpoints that do have the label \"my_label\".
2569                             \n The effect is that the latter will accept packets from
2570                             non-Calico sources whereas the former is limited to packets
2571                             from Calico-controlled endpoints."
2572                           type: string
2573                         serviceAccounts:
2574                           description: ServiceAccounts is an optional field that restricts
2575                             the rule to only apply to traffic that originates from
2576                             (or terminates at) a pod running as a matching service
2577                             account.
2578                           properties:
2579                             names:
2580                               description: Names is an optional field that restricts
2581                                 the rule to only apply to traffic that originates
2582                                 from (or terminates at) a pod running as a service
2583                                 account whose name is in the list.
2584                               items:
2585                                 type: string
2586                               type: array
2587                             selector:
2588                               description: Selector is an optional field that restricts
2589                                 the rule to only apply to traffic that originates
2590                                 from (or terminates at) a pod running as a service
2591                                 account that matches the given label selector. If
2592                                 both Names and Selector are specified then they are
2593                                 AND'ed.
2594                               type: string
2595                           type: object
2596                       type: object
2597                     http:
2598                       description: HTTP contains match criteria that apply to HTTP
2599                         requests.
2600                       properties:
2601                         methods:
2602                           description: Methods is an optional field that restricts
2603                             the rule to apply only to HTTP requests that use one of
2604                             the listed HTTP Methods (e.g. GET, PUT, etc.) Multiple
2605                             methods are OR'd together.
2606                           items:
2607                             type: string
2608                           type: array
2609                         paths:
2610                           description: 'Paths is an optional field that restricts
2611                             the rule to apply to HTTP requests that use one of the
2612                             listed HTTP Paths. Multiple paths are OR''d together.
2613                             e.g: - exact: /foo - prefix: /bar NOTE: Each entry may
2614                             ONLY specify either a `exact` or a `prefix` match. The
2615                             validator will check for it.'
2616                           items:
2617                             description: 'HTTPPath specifies an HTTP path to match.
2618                               It may be either of the form: exact: <path>: which matches
2619                               the path exactly or prefix: <path-prefix>: which matches
2620                               the path prefix'
2621                             properties:
2622                               exact:
2623                                 type: string
2624                               prefix:
2625                                 type: string
2626                             type: object
2627                           type: array
2628                       type: object
2629                     icmp:
2630                       description: ICMP is an optional field that restricts the rule
2631                         to apply to a specific type and code of ICMP traffic.  This
2632                         should only be specified if the Protocol field is set to "ICMP"
2633                         or "ICMPv6".
2634                       properties:
2635                         code:
2636                           description: Match on a specific ICMP code.  If specified,
2637                             the Type value must also be specified. This is a technical
2638                             limitation imposed by the kernel's iptables firewall,
2639                             which Calico uses to enforce the rule.
2640                           type: integer
2641                         type:
2642                           description: Match on a specific ICMP type.  For example
2643                             a value of 8 refers to ICMP Echo Request (i.e. pings).
2644                           type: integer
2645                       type: object
2646                     ipVersion:
2647                       description: IPVersion is an optional field that restricts the
2648                         rule to only match a specific IP version.
2649                       type: integer
2650                     metadata:
2651                       description: Metadata contains additional information for this
2652                         rule
2653                       properties:
2654                         annotations:
2655                           additionalProperties:
2656                             type: string
2657                           description: Annotations is a set of key value pairs that
2658                             give extra information about the rule
2659                           type: object
2660                       type: object
2661                     notICMP:
2662                       description: NotICMP is the negated version of the ICMP field.
2663                       properties:
2664                         code:
2665                           description: Match on a specific ICMP code.  If specified,
2666                             the Type value must also be specified. This is a technical
2667                             limitation imposed by the kernel's iptables firewall,
2668                             which Calico uses to enforce the rule.
2669                           type: integer
2670                         type:
2671                           description: Match on a specific ICMP type.  For example
2672                             a value of 8 refers to ICMP Echo Request (i.e. pings).
2673                           type: integer
2674                       type: object
2675                     notProtocol:
2676                       anyOf:
2677                       - type: integer
2678                       - type: string
2679                       description: NotProtocol is the negated version of the Protocol
2680                         field.
2681                       pattern: ^.*
2682                       x-kubernetes-int-or-string: true
2683                     protocol:
2684                       anyOf:
2685                       - type: integer
2686                       - type: string
2687                       description: "Protocol is an optional field that restricts the
2688                         rule to only apply to traffic of a specific IP protocol. Required
2689                         if any of the EntityRules contain Ports (because ports only
2690                         apply to certain protocols). \n Must be one of these string
2691                         values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\",
2692                         \"UDPLite\" or an integer in the range 1-255."
2693                       pattern: ^.*
2694                       x-kubernetes-int-or-string: true
2695                     source:
2696                       description: Source contains the match criteria that apply to
2697                         source entity.
2698                       properties:
2699                         namespaceSelector:
2700                           description: "NamespaceSelector is an optional field that
2701                             contains a selector expression. Only traffic that originates
2702                             from (or terminates at) endpoints within the selected
2703                             namespaces will be matched. When both NamespaceSelector
2704                             and Selector are defined on the same rule, then only workload
2705                             endpoints that are matched by both selectors will be selected
2706                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
2707                             implies that the Selector is limited to selecting only
2708                             workload endpoints in the same namespace as the NetworkPolicy.
2709                             \n For NetworkPolicy, `global()` NamespaceSelector implies
2710                             that the Selector is limited to selecting only GlobalNetworkSet
2711                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
2712                             NamespaceSelector implies the Selector applies to workload
2713                             endpoints across all namespaces."
2714                           type: string
2715                         nets:
2716                           description: Nets is an optional field that restricts the
2717                             rule to only apply to traffic that originates from (or
2718                             terminates at) IP addresses in any of the given subnets.
2719                           items:
2720                             type: string
2721                           type: array
2722                         notNets:
2723                           description: NotNets is the negated version of the Nets
2724                             field.
2725                           items:
2726                             type: string
2727                           type: array
2728                         notPorts:
2729                           description: NotPorts is the negated version of the Ports
2730                             field. Since only some protocols have ports, if any ports
2731                             are specified it requires the Protocol match in the Rule
2732                             to be set to "TCP" or "UDP".
2733                           items:
2734                             anyOf:
2735                             - type: integer
2736                             - type: string
2737                             pattern: ^.*
2738                             x-kubernetes-int-or-string: true
2739                           type: array
2740                         notSelector:
2741                           description: NotSelector is the negated version of the Selector
2742                             field.  See Selector field for subtleties with negated
2743                             selectors.
2744                           type: string
2745                         ports:
2746                           description: "Ports is an optional field that restricts
2747                             the rule to only apply to traffic that has a source (destination)
2748                             port that matches one of these ranges/values. This value
2749                             is a list of integers or strings that represent ranges
2750                             of ports. \n Since only some protocols have ports, if
2751                             any ports are specified it requires the Protocol match
2752                             in the Rule to be set to \"TCP\" or \"UDP\"."
2753                           items:
2754                             anyOf:
2755                             - type: integer
2756                             - type: string
2757                             pattern: ^.*
2758                             x-kubernetes-int-or-string: true
2759                           type: array
2760                         selector:
2761                           description: "Selector is an optional field that contains
2762                             a selector expression (see Policy for sample syntax).
2763                             \ Only traffic that originates from (terminates at) endpoints
2764                             matching the selector will be matched. \n Note that: in
2765                             addition to the negated version of the Selector (see NotSelector
2766                             below), the selector expression syntax itself supports
2767                             negation.  The two types of negation are subtly different.
2768                             One negates the set of matched endpoints, the other negates
2769                             the whole match: \n \tSelector = \"!has(my_label)\" matches
2770                             packets that are from other Calico-controlled \tendpoints
2771                             that do not have the label \"my_label\". \n \tNotSelector
2772                             = \"has(my_label)\" matches packets that are not from
2773                             Calico-controlled \tendpoints that do have the label \"my_label\".
2774                             \n The effect is that the latter will accept packets from
2775                             non-Calico sources whereas the former is limited to packets
2776                             from Calico-controlled endpoints."
2777                           type: string
2778                         serviceAccounts:
2779                           description: ServiceAccounts is an optional field that restricts
2780                             the rule to only apply to traffic that originates from
2781                             (or terminates at) a pod running as a matching service
2782                             account.
2783                           properties:
2784                             names:
2785                               description: Names is an optional field that restricts
2786                                 the rule to only apply to traffic that originates
2787                                 from (or terminates at) a pod running as a service
2788                                 account whose name is in the list.
2789                               items:
2790                                 type: string
2791                               type: array
2792                             selector:
2793                               description: Selector is an optional field that restricts
2794                                 the rule to only apply to traffic that originates
2795                                 from (or terminates at) a pod running as a service
2796                                 account that matches the given label selector. If
2797                                 both Names and Selector are specified then they are
2798                                 AND'ed.
2799                               type: string
2800                           type: object
2801                       type: object
2802                   required:
2803                   - action
2804                   type: object
2805                 type: array
2806               ingress:
2807                 description: The ordered set of ingress rules.  Each rule contains
2808                   a set of packet match criteria and a corresponding action to apply.
2809                 items:
2810                   description: "A Rule encapsulates a set of match criteria and an
2811                     action.  Both selector-based security Policy and security Profiles
2812                     reference rules - separated out as a list of rules for both ingress
2813                     and egress packet matching. \n Each positive match criteria has
2814                     a negated version, prefixed with \"Not\". All the match criteria
2815                     within a rule must be satisfied for a packet to match. A single
2816                     rule can contain the positive and negative version of a match
2817                     and both must be satisfied for the rule to match."
2818                   properties:
2819                     action:
2820                       type: string
2821                     destination:
2822                       description: Destination contains the match criteria that apply
2823                         to destination entity.
2824                       properties:
2825                         namespaceSelector:
2826                           description: "NamespaceSelector is an optional field that
2827                             contains a selector expression. Only traffic that originates
2828                             from (or terminates at) endpoints within the selected
2829                             namespaces will be matched. When both NamespaceSelector
2830                             and Selector are defined on the same rule, then only workload
2831                             endpoints that are matched by both selectors will be selected
2832                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
2833                             implies that the Selector is limited to selecting only
2834                             workload endpoints in the same namespace as the NetworkPolicy.
2835                             \n For NetworkPolicy, `global()` NamespaceSelector implies
2836                             that the Selector is limited to selecting only GlobalNetworkSet
2837                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
2838                             NamespaceSelector implies the Selector applies to workload
2839                             endpoints across all namespaces."
2840                           type: string
2841                         nets:
2842                           description: Nets is an optional field that restricts the
2843                             rule to only apply to traffic that originates from (or
2844                             terminates at) IP addresses in any of the given subnets.
2845                           items:
2846                             type: string
2847                           type: array
2848                         notNets:
2849                           description: NotNets is the negated version of the Nets
2850                             field.
2851                           items:
2852                             type: string
2853                           type: array
2854                         notPorts:
2855                           description: NotPorts is the negated version of the Ports
2856                             field. Since only some protocols have ports, if any ports
2857                             are specified it requires the Protocol match in the Rule
2858                             to be set to "TCP" or "UDP".
2859                           items:
2860                             anyOf:
2861                             - type: integer
2862                             - type: string
2863                             pattern: ^.*
2864                             x-kubernetes-int-or-string: true
2865                           type: array
2866                         notSelector:
2867                           description: NotSelector is the negated version of the Selector
2868                             field.  See Selector field for subtleties with negated
2869                             selectors.
2870                           type: string
2871                         ports:
2872                           description: "Ports is an optional field that restricts
2873                             the rule to only apply to traffic that has a source (destination)
2874                             port that matches one of these ranges/values. This value
2875                             is a list of integers or strings that represent ranges
2876                             of ports. \n Since only some protocols have ports, if
2877                             any ports are specified it requires the Protocol match
2878                             in the Rule to be set to \"TCP\" or \"UDP\"."
2879                           items:
2880                             anyOf:
2881                             - type: integer
2882                             - type: string
2883                             pattern: ^.*
2884                             x-kubernetes-int-or-string: true
2885                           type: array
2886                         selector:
2887                           description: "Selector is an optional field that contains
2888                             a selector expression (see Policy for sample syntax).
2889                             \ Only traffic that originates from (terminates at) endpoints
2890                             matching the selector will be matched. \n Note that: in
2891                             addition to the negated version of the Selector (see NotSelector
2892                             below), the selector expression syntax itself supports
2893                             negation.  The two types of negation are subtly different.
2894                             One negates the set of matched endpoints, the other negates
2895                             the whole match: \n \tSelector = \"!has(my_label)\" matches
2896                             packets that are from other Calico-controlled \tendpoints
2897                             that do not have the label \"my_label\". \n \tNotSelector
2898                             = \"has(my_label)\" matches packets that are not from
2899                             Calico-controlled \tendpoints that do have the label \"my_label\".
2900                             \n The effect is that the latter will accept packets from
2901                             non-Calico sources whereas the former is limited to packets
2902                             from Calico-controlled endpoints."
2903                           type: string
2904                         serviceAccounts:
2905                           description: ServiceAccounts is an optional field that restricts
2906                             the rule to only apply to traffic that originates from
2907                             (or terminates at) a pod running as a matching service
2908                             account.
2909                           properties:
2910                             names:
2911                               description: Names is an optional field that restricts
2912                                 the rule to only apply to traffic that originates
2913                                 from (or terminates at) a pod running as a service
2914                                 account whose name is in the list.
2915                               items:
2916                                 type: string
2917                               type: array
2918                             selector:
2919                               description: Selector is an optional field that restricts
2920                                 the rule to only apply to traffic that originates
2921                                 from (or terminates at) a pod running as a service
2922                                 account that matches the given label selector. If
2923                                 both Names and Selector are specified then they are
2924                                 AND'ed.
2925                               type: string
2926                           type: object
2927                       type: object
2928                     http:
2929                       description: HTTP contains match criteria that apply to HTTP
2930                         requests.
2931                       properties:
2932                         methods:
2933                           description: Methods is an optional field that restricts
2934                             the rule to apply only to HTTP requests that use one of
2935                             the listed HTTP Methods (e.g. GET, PUT, etc.) Multiple
2936                             methods are OR'd together.
2937                           items:
2938                             type: string
2939                           type: array
2940                         paths:
2941                           description: 'Paths is an optional field that restricts
2942                             the rule to apply to HTTP requests that use one of the
2943                             listed HTTP Paths. Multiple paths are OR''d together.
2944                             e.g: - exact: /foo - prefix: /bar NOTE: Each entry may
2945                             ONLY specify either a `exact` or a `prefix` match. The
2946                             validator will check for it.'
2947                           items:
2948                             description: 'HTTPPath specifies an HTTP path to match.
2949                               It may be either of the form: exact: <path>: which matches
2950                               the path exactly or prefix: <path-prefix>: which matches
2951                               the path prefix'
2952                             properties:
2953                               exact:
2954                                 type: string
2955                               prefix:
2956                                 type: string
2957                             type: object
2958                           type: array
2959                       type: object
2960                     icmp:
2961                       description: ICMP is an optional field that restricts the rule
2962                         to apply to a specific type and code of ICMP traffic.  This
2963                         should only be specified if the Protocol field is set to "ICMP"
2964                         or "ICMPv6".
2965                       properties:
2966                         code:
2967                           description: Match on a specific ICMP code.  If specified,
2968                             the Type value must also be specified. This is a technical
2969                             limitation imposed by the kernel's iptables firewall,
2970                             which Calico uses to enforce the rule.
2971                           type: integer
2972                         type:
2973                           description: Match on a specific ICMP type.  For example
2974                             a value of 8 refers to ICMP Echo Request (i.e. pings).
2975                           type: integer
2976                       type: object
2977                     ipVersion:
2978                       description: IPVersion is an optional field that restricts the
2979                         rule to only match a specific IP version.
2980                       type: integer
2981                     metadata:
2982                       description: Metadata contains additional information for this
2983                         rule
2984                       properties:
2985                         annotations:
2986                           additionalProperties:
2987                             type: string
2988                           description: Annotations is a set of key value pairs that
2989                             give extra information about the rule
2990                           type: object
2991                       type: object
2992                     notICMP:
2993                       description: NotICMP is the negated version of the ICMP field.
2994                       properties:
2995                         code:
2996                           description: Match on a specific ICMP code.  If specified,
2997                             the Type value must also be specified. This is a technical
2998                             limitation imposed by the kernel's iptables firewall,
2999                             which Calico uses to enforce the rule.
3000                           type: integer
3001                         type:
3002                           description: Match on a specific ICMP type.  For example
3003                             a value of 8 refers to ICMP Echo Request (i.e. pings).
3004                           type: integer
3005                       type: object
3006                     notProtocol:
3007                       anyOf:
3008                       - type: integer
3009                       - type: string
3010                       description: NotProtocol is the negated version of the Protocol
3011                         field.
3012                       pattern: ^.*
3013                       x-kubernetes-int-or-string: true
3014                     protocol:
3015                       anyOf:
3016                       - type: integer
3017                       - type: string
3018                       description: "Protocol is an optional field that restricts the
3019                         rule to only apply to traffic of a specific IP protocol. Required
3020                         if any of the EntityRules contain Ports (because ports only
3021                         apply to certain protocols). \n Must be one of these string
3022                         values: \"TCP\", \"UDP\", \"ICMP\", \"ICMPv6\", \"SCTP\",
3023                         \"UDPLite\" or an integer in the range 1-255."
3024                       pattern: ^.*
3025                       x-kubernetes-int-or-string: true
3026                     source:
3027                       description: Source contains the match criteria that apply to
3028                         source entity.
3029                       properties:
3030                         namespaceSelector:
3031                           description: "NamespaceSelector is an optional field that
3032                             contains a selector expression. Only traffic that originates
3033                             from (or terminates at) endpoints within the selected
3034                             namespaces will be matched. When both NamespaceSelector
3035                             and Selector are defined on the same rule, then only workload
3036                             endpoints that are matched by both selectors will be selected
3037                             by the rule. \n For NetworkPolicy, an empty NamespaceSelector
3038                             implies that the Selector is limited to selecting only
3039                             workload endpoints in the same namespace as the NetworkPolicy.
3040                             \n For NetworkPolicy, `global()` NamespaceSelector implies
3041                             that the Selector is limited to selecting only GlobalNetworkSet
3042                             or HostEndpoint. \n For GlobalNetworkPolicy, an empty
3043                             NamespaceSelector implies the Selector applies to workload
3044                             endpoints across all namespaces."
3045                           type: string
3046                         nets:
3047                           description: Nets is an optional field that restricts the
3048                             rule to only apply to traffic that originates from (or
3049                             terminates at) IP addresses in any of the given subnets.
3050                           items:
3051                             type: string
3052                           type: array
3053                         notNets:
3054                           description: NotNets is the negated version of the Nets
3055                             field.
3056                           items:
3057                             type: string
3058                           type: array
3059                         notPorts:
3060                           description: NotPorts is the negated version of the Ports
3061                             field. Since only some protocols have ports, if any ports
3062                             are specified it requires the Protocol match in the Rule
3063                             to be set to "TCP" or "UDP".
3064                           items:
3065                             anyOf:
3066                             - type: integer
3067                             - type: string
3068                             pattern: ^.*
3069                             x-kubernetes-int-or-string: true
3070                           type: array
3071                         notSelector:
3072                           description: NotSelector is the negated version of the Selector
3073                             field.  See Selector field for subtleties with negated
3074                             selectors.
3075                           type: string
3076                         ports:
3077                           description: "Ports is an optional field that restricts
3078                             the rule to only apply to traffic that has a source (destination)
3079                             port that matches one of these ranges/values. This value
3080                             is a list of integers or strings that represent ranges
3081                             of ports. \n Since only some protocols have ports, if
3082                             any ports are specified it requires the Protocol match
3083                             in the Rule to be set to \"TCP\" or \"UDP\"."
3084                           items:
3085                             anyOf:
3086                             - type: integer
3087                             - type: string
3088                             pattern: ^.*
3089                             x-kubernetes-int-or-string: true
3090                           type: array
3091                         selector:
3092                           description: "Selector is an optional field that contains
3093                             a selector expression (see Policy for sample syntax).
3094                             \ Only traffic that originates from (terminates at) endpoints
3095                             matching the selector will be matched. \n Note that: in
3096                             addition to the negated version of the Selector (see NotSelector
3097                             below), the selector expression syntax itself supports
3098                             negation.  The two types of negation are subtly different.
3099                             One negates the set of matched endpoints, the other negates
3100                             the whole match: \n \tSelector = \"!has(my_label)\" matches
3101                             packets that are from other Calico-controlled \tendpoints
3102                             that do not have the label \"my_label\". \n \tNotSelector
3103                             = \"has(my_label)\" matches packets that are not from
3104                             Calico-controlled \tendpoints that do have the label \"my_label\".
3105                             \n The effect is that the latter will accept packets from
3106                             non-Calico sources whereas the former is limited to packets
3107                             from Calico-controlled endpoints."
3108                           type: string
3109                         serviceAccounts:
3110                           description: ServiceAccounts is an optional field that restricts
3111                             the rule to only apply to traffic that originates from
3112                             (or terminates at) a pod running as a matching service
3113                             account.
3114                           properties:
3115                             names:
3116                               description: Names is an optional field that restricts
3117                                 the rule to only apply to traffic that originates
3118                                 from (or terminates at) a pod running as a service
3119                                 account whose name is in the list.
3120                               items:
3121                                 type: string
3122                               type: array
3123                             selector:
3124                               description: Selector is an optional field that restricts
3125                                 the rule to only apply to traffic that originates
3126                                 from (or terminates at) a pod running as a service
3127                                 account that matches the given label selector. If
3128                                 both Names and Selector are specified then they are
3129                                 AND'ed.
3130                               type: string
3131                           type: object
3132                       type: object
3133                   required:
3134                   - action
3135                   type: object
3136                 type: array
3137               order:
3138                 description: Order is an optional field that specifies the order in
3139                   which the policy is applied. Policies with higher "order" are applied
3140                   after those with lower order.  If the order is omitted, it may be
3141                   considered to be "infinite" - i.e. the policy will be applied last.  Policies
3142                   with identical order will be applied in alphanumerical order based
3143                   on the Policy "Name".
3144                 type: number
3145               selector:
3146                 description: "The selector is an expression used to pick pick out
3147                   the endpoints that the policy should be applied to. \n Selector
3148                   expressions follow this syntax: \n \tlabel == \"string_literal\"
3149                   \ ->  comparison, e.g. my_label == \"foo bar\" \tlabel != \"string_literal\"
3150                   \  ->  not equal; also matches if label is not present \tlabel in
3151                   { \"a\", \"b\", \"c\", ... }  ->  true if the value of label X is
3152                   one of \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\",
3153                   ... }  ->  true if the value of label X is not one of \"a\", \"b\",
3154                   \"c\" \thas(label_name)  -> True if that label is present \t! expr
3155                   -> negation of expr \texpr && expr  -> Short-circuit and \texpr
3156                   || expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
3157                   or the empty selector -> matches all endpoints. \n Label names are
3158                   allowed to contain alphanumerics, -, _ and /. String literals are
3159                   more permissive but they do not support escape characters. \n Examples
3160                   (with made-up labels): \n \ttype == \"webserver\" && deployment
3161                   == \"prod\" \ttype in {\"frontend\", \"backend\"} \tdeployment !=
3162                   \"dev\" \t! has(label_name)"
3163                 type: string
3164               serviceAccountSelector:
3165                 description: ServiceAccountSelector is an optional field for an expression
3166                   used to select a pod based on service accounts.
3167                 type: string
3168               types:
3169                 description: "Types indicates whether this policy applies to ingress,
3170                   or to egress, or to both.  When not explicitly specified (and so
3171                   the value on creation is empty or nil), Calico defaults Types according
3172                   to what Ingress and Egress are present in the policy.  The default
3173                   is: \n - [ PolicyTypeIngress ], if there are no Egress rules (including
3174                   the case where there are   also no Ingress rules) \n - [ PolicyTypeEgress
3175                   ], if there are Egress rules but no Ingress rules \n - [ PolicyTypeIngress,
3176                   PolicyTypeEgress ], if there are both Ingress and Egress rules.
3177                   \n When the policy is read back again, Types will always be one
3178                   of these values, never empty or nil."
3179                 items:
3180                   description: PolicyType enumerates the possible values of the PolicySpec
3181                     Types field.
3182                   type: string
3183                 type: array
3184             type: object
3185         type: object
3186     served: true
3187     storage: true
3188 status:
3189   acceptedNames:
3190     kind: ""
3191     plural: ""
3192   conditions: []
3193   storedVersions: []
3194
3195 ---
3196 apiVersion: apiextensions.k8s.io/v1
3197 kind: CustomResourceDefinition
3198 metadata:
3199   name: networksets.crd.projectcalico.org
3200 spec:
3201   group: crd.projectcalico.org
3202   names:
3203     kind: NetworkSet
3204     listKind: NetworkSetList
3205     plural: networksets
3206     singular: networkset
3207   scope: Namespaced
3208   versions:
3209   - name: v1
3210     schema:
3211       openAPIV3Schema:
3212         description: NetworkSet is the Namespaced-equivalent of the GlobalNetworkSet.
3213         properties:
3214           apiVersion:
3215             description: 'APIVersion defines the versioned schema of this representation
3216               of an object. Servers should convert recognized schemas to the latest
3217               internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
3218             type: string
3219           kind:
3220             description: 'Kind is a string value representing the REST resource this
3221               object represents. Servers may infer this from the endpoint the client
3222               submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
3223             type: string
3224           metadata:
3225             type: object
3226           spec:
3227             description: NetworkSetSpec contains the specification for a NetworkSet
3228               resource.
3229             properties:
3230               nets:
3231                 description: The list of IP networks that belong to this set.
3232                 items:
3233                   type: string
3234                 type: array
3235             type: object
3236         type: object
3237     served: true
3238     storage: true
3239 status:
3240   acceptedNames:
3241     kind: ""
3242     plural: ""
3243   conditions: []
3244   storedVersions: []
3245
3246 ---
3247 ---
3248 # Source: calico/templates/calico-kube-controllers-rbac.yaml
3249
3250 # Include a clusterrole for the kube-controllers component,
3251 # and bind it to the calico-kube-controllers serviceaccount.
3252 kind: ClusterRole
3253 apiVersion: rbac.authorization.k8s.io/v1
3254 metadata:
3255   name: calico-kube-controllers
3256 rules:
3257   # Nodes are watched to monitor for deletions.
3258   - apiGroups: [""]
3259     resources:
3260       - nodes
3261     verbs:
3262       - watch
3263       - list
3264       - get
3265   # Pods are queried to check for existence.
3266   - apiGroups: [""]
3267     resources:
3268       - pods
3269     verbs:
3270       - get
3271   # IPAM resources are manipulated when nodes are deleted.
3272   - apiGroups: ["crd.projectcalico.org"]
3273     resources:
3274       - ippools
3275     verbs:
3276       - list
3277   - apiGroups: ["crd.projectcalico.org"]
3278     resources:
3279       - blockaffinities
3280       - ipamblocks
3281       - ipamhandles
3282     verbs:
3283       - get
3284       - list
3285       - create
3286       - update
3287       - delete
3288       - watch
3289   # kube-controllers manages hostendpoints.
3290   - apiGroups: ["crd.projectcalico.org"]
3291     resources:
3292       - hostendpoints
3293     verbs:
3294       - get
3295       - list
3296       - create
3297       - update
3298       - delete
3299   # Needs access to update clusterinformations.
3300   - apiGroups: ["crd.projectcalico.org"]
3301     resources:
3302       - clusterinformations
3303     verbs:
3304       - get
3305       - create
3306       - update
3307   # KubeControllersConfiguration is where it gets its config
3308   - apiGroups: ["crd.projectcalico.org"]
3309     resources:
3310       - kubecontrollersconfigurations
3311     verbs:
3312       # read its own config
3313       - get
3314       # create a default if none exists
3315       - create
3316       # update status
3317       - update
3318       # watch for changes
3319       - watch
3320 ---
3321 kind: ClusterRoleBinding
3322 apiVersion: rbac.authorization.k8s.io/v1
3323 metadata:
3324   name: calico-kube-controllers
3325 roleRef:
3326   apiGroup: rbac.authorization.k8s.io
3327   kind: ClusterRole
3328   name: calico-kube-controllers
3329 subjects:
3330 - kind: ServiceAccount
3331   name: calico-kube-controllers
3332   namespace: kube-system
3333 ---
3334
3335 ---
3336 # Source: calico/templates/calico-node-rbac.yaml
3337 # Include a clusterrole for the calico-node DaemonSet,
3338 # and bind it to the calico-node serviceaccount.
3339 kind: ClusterRole
3340 apiVersion: rbac.authorization.k8s.io/v1
3341 metadata:
3342   name: calico-node
3343 rules:
3344   # The CNI plugin needs to get pods, nodes, and namespaces.
3345   - apiGroups: [""]
3346     resources:
3347       - pods
3348       - nodes
3349       - namespaces
3350     verbs:
3351       - get
3352   - apiGroups: [""]
3353     resources:
3354       - endpoints
3355       - services
3356     verbs:
3357       # Used to discover service IPs for advertisement.
3358       - watch
3359       - list
3360       # Used to discover Typhas.
3361       - get
3362   # Pod CIDR auto-detection on kubeadm needs access to config maps.
3363   - apiGroups: [""]
3364     resources:
3365       - configmaps
3366     verbs:
3367       - get
3368   - apiGroups: [""]
3369     resources:
3370       - nodes/status
3371     verbs:
3372       # Needed for clearing NodeNetworkUnavailable flag.
3373       - patch
3374       # Calico stores some configuration information in node annotations.
3375       - update
3376   # Watch for changes to Kubernetes NetworkPolicies.
3377   - apiGroups: ["networking.k8s.io"]
3378     resources:
3379       - networkpolicies
3380     verbs:
3381       - watch
3382       - list
3383   # Used by Calico for policy information.
3384   - apiGroups: [""]
3385     resources:
3386       - pods
3387       - namespaces
3388       - serviceaccounts
3389     verbs:
3390       - list
3391       - watch
3392   # The CNI plugin patches pods/status.
3393   - apiGroups: [""]
3394     resources:
3395       - pods/status
3396     verbs:
3397       - patch
3398   # Calico monitors various CRDs for config.
3399   - apiGroups: ["crd.projectcalico.org"]
3400     resources:
3401       - globalfelixconfigs
3402       - felixconfigurations
3403       - bgppeers
3404       - globalbgpconfigs
3405       - bgpconfigurations
3406       - ippools
3407       - ipamblocks
3408       - globalnetworkpolicies
3409       - globalnetworksets
3410       - networkpolicies
3411       - networksets
3412       - clusterinformations
3413       - hostendpoints
3414       - blockaffinities
3415     verbs:
3416       - get
3417       - list
3418       - watch
3419   # Calico must create and update some CRDs on startup.
3420   - apiGroups: ["crd.projectcalico.org"]
3421     resources:
3422       - ippools
3423       - felixconfigurations
3424       - clusterinformations
3425     verbs:
3426       - create
3427       - update
3428   # Calico stores some configuration information on the node.
3429   - apiGroups: [""]
3430     resources:
3431       - nodes
3432     verbs:
3433       - get
3434       - list
3435       - watch
3436   # These permissions are only required for upgrade from v2.6, and can
3437   # be removed after upgrade or on fresh installations.
3438   - apiGroups: ["crd.projectcalico.org"]
3439     resources:
3440       - bgpconfigurations
3441       - bgppeers
3442     verbs:
3443       - create
3444       - update
3445   # These permissions are required for Calico CNI to perform IPAM allocations.
3446   - apiGroups: ["crd.projectcalico.org"]
3447     resources:
3448       - blockaffinities
3449       - ipamblocks
3450       - ipamhandles
3451     verbs:
3452       - get
3453       - list
3454       - create
3455       - update
3456       - delete
3457   - apiGroups: ["crd.projectcalico.org"]
3458     resources:
3459       - ipamconfigs
3460     verbs:
3461       - get
3462   # Block affinities must also be watchable by confd for route aggregation.
3463   - apiGroups: ["crd.projectcalico.org"]
3464     resources:
3465       - blockaffinities
3466     verbs:
3467       - watch
3468   # The Calico IPAM migration needs to get daemonsets. These permissions can be
3469   # removed if not upgrading from an installation using host-local IPAM.
3470   - apiGroups: ["apps"]
3471     resources:
3472       - daemonsets
3473     verbs:
3474       - get
3475
3476 ---
3477 apiVersion: rbac.authorization.k8s.io/v1
3478 kind: ClusterRoleBinding
3479 metadata:
3480   name: calico-node
3481 roleRef:
3482   apiGroup: rbac.authorization.k8s.io
3483   kind: ClusterRole
3484   name: calico-node
3485 subjects:
3486 - kind: ServiceAccount
3487   name: calico-node
3488   namespace: kube-system
3489
3490 ---
3491 # Source: calico/templates/calico-node.yaml
3492 # This manifest installs the calico-node container, as well
3493 # as the CNI plugins and network config on
3494 # each master and worker node in a Kubernetes cluster.
3495 kind: DaemonSet
3496 apiVersion: apps/v1
3497 metadata:
3498   name: calico-node
3499   namespace: kube-system
3500   labels:
3501     k8s-app: calico-node
3502 spec:
3503   selector:
3504     matchLabels:
3505       k8s-app: calico-node
3506   updateStrategy:
3507     type: RollingUpdate
3508     rollingUpdate:
3509       maxUnavailable: 1
3510   template:
3511     metadata:
3512       labels:
3513         k8s-app: calico-node
3514     spec:
3515       nodeSelector:
3516         kubernetes.io/os: linux
3517       hostNetwork: true
3518       tolerations:
3519         # Make sure calico-node gets scheduled on all nodes.
3520         - effect: NoSchedule
3521           operator: Exists
3522         # Mark the pod as a critical add-on for rescheduling.
3523         - key: CriticalAddonsOnly
3524           operator: Exists
3525         - effect: NoExecute
3526           operator: Exists
3527       serviceAccountName: calico-node
3528       # Minimize downtime during a rolling upgrade or deletion; tell Kubernetes to do a "force
3529       # deletion": https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods.
3530       terminationGracePeriodSeconds: 0
3531       priorityClassName: system-node-critical
3532       initContainers:
3533         # This container performs upgrade from host-local IPAM to calico-ipam.
3534         # It can be deleted if this is a fresh installation, or if you have already
3535         # upgraded to use calico-ipam.
3536         - name: upgrade-ipam
3537           #image: docker.io/calico/cni:v3.18.1
3538           image: docker.io/calico/cni:release-v3.18
3539           command: ["/opt/cni/bin/calico-ipam", "-upgrade"]
3540           envFrom:
3541           - configMapRef:
3542               # Allow KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT to be overridden for eBPF mode.
3543               name: kubernetes-services-endpoint
3544               optional: true
3545           env:
3546             - name: KUBERNETES_NODE_NAME
3547               valueFrom:
3548                 fieldRef:
3549                   fieldPath: spec.nodeName
3550             - name: CALICO_NETWORKING_BACKEND
3551               valueFrom:
3552                 configMapKeyRef:
3553                   name: calico-config
3554                   key: calico_backend
3555           volumeMounts:
3556             - mountPath: /var/lib/cni/networks
3557               name: host-local-net-dir
3558             - mountPath: /host/opt/cni/bin
3559               name: cni-bin-dir
3560           securityContext:
3561             privileged: true
3562         # This container installs the CNI binaries
3563         # and CNI network config file on each node.
3564         - name: install-cni
3565           #image: docker.io/calico/cni:v3.18.1
3566           image: docker.io/calico/cni:release-v3.18
3567           command: ["/opt/cni/bin/install"]
3568           envFrom:
3569           - configMapRef:
3570               # Allow KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT to be overridden for eBPF mode.
3571               name: kubernetes-services-endpoint
3572               optional: true
3573           env:
3574             # Name of the CNI config file to create.
3575             - name: CNI_CONF_NAME
3576               value: "10-calico.conflist"
3577             # The CNI network config to install on each node.
3578             - name: CNI_NETWORK_CONFIG
3579               valueFrom:
3580                 configMapKeyRef:
3581                   name: calico-config
3582                   key: cni_network_config
3583             # Set the hostname based on the k8s node name.
3584             - name: KUBERNETES_NODE_NAME
3585               valueFrom:
3586                 fieldRef:
3587                   fieldPath: spec.nodeName
3588             # CNI MTU Config variable
3589             - name: CNI_MTU
3590               valueFrom:
3591                 configMapKeyRef:
3592                   name: calico-config
3593                   key: veth_mtu
3594             # Prevents the container from sleeping forever.
3595             - name: SLEEP
3596               value: "false"
3597           volumeMounts:
3598             - mountPath: /host/opt/cni/bin
3599               name: cni-bin-dir
3600             - mountPath: /host/etc/cni/net.d
3601               name: cni-net-dir
3602           securityContext:
3603             privileged: true
3604         # Adds a Flex Volume Driver that creates a per-pod Unix Domain Socket to allow Dikastes
3605         # to communicate with Felix over the Policy Sync API.
3606         - name: flexvol-driver
3607           #image: docker.io/calico/pod2daemon-flexvol:v3.18.1
3608           image: docker.io/calico/pod2daemon-flexvol:release-v3.18
3609           volumeMounts:
3610           - name: flexvol-driver-host
3611             mountPath: /host/driver
3612           securityContext:
3613             privileged: true
3614       containers:
3615         # Runs calico-node container on each Kubernetes node. This
3616         # container programs network policy and routes on each
3617         # host.
3618         - name: calico-node
3619           image: docker.io/calico/node:release-v3.18
3620           envFrom:
3621           - configMapRef:
3622               # Allow KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT to be overridden for eBPF mode.
3623               name: kubernetes-services-endpoint
3624               optional: true
3625           env:
3626             # Use Kubernetes API as the backing datastore.
3627             - name: DATASTORE_TYPE
3628               value: "kubernetes"
3629             # Wait for the datastore.
3630             - name: WAIT_FOR_DATASTORE
3631               value: "true"
3632             # Set based on the k8s node name.
3633             - name: NODENAME
3634               valueFrom:
3635                 fieldRef:
3636                   fieldPath: spec.nodeName
3637             # Choose the backend to use.
3638             - name: CALICO_NETWORKING_BACKEND
3639               valueFrom:
3640                 configMapKeyRef:
3641                   name: calico-config
3642                   key: calico_backend
3643             # Cluster type to identify the deployment type
3644             - name: CLUSTER_TYPE
3645               value: "k8s,bgp"
3646             # Auto-detect the BGP IP address.
3647             - name: IP
3648               value: "autodetect"
3649             # Enable IPIP
3650             - name: CALICO_IPV4POOL_IPIP
3651               value: "Always"
3652             # Enable or Disable VXLAN on the default IP pool.
3653             - name: CALICO_IPV4POOL_VXLAN
3654               value: "Never"
3655             # Set MTU for tunnel device used if ipip is enabled
3656             - name: FELIX_IPINIPMTU
3657               valueFrom:
3658                 configMapKeyRef:
3659                   name: calico-config
3660                   key: veth_mtu
3661             # Set MTU for the VXLAN tunnel device.
3662             - name: FELIX_VXLANMTU
3663               valueFrom:
3664                 configMapKeyRef:
3665                   name: calico-config
3666                   key: veth_mtu
3667             # Set MTU for the Wireguard tunnel device.
3668             - name: FELIX_WIREGUARDMTU
3669               valueFrom:
3670                 configMapKeyRef:
3671                   name: calico-config
3672                   key: veth_mtu
3673             # The default IPv4 pool to create on startup if none exists. Pod IPs will be
3674             # chosen from this range. Changing this value after installation will have
3675             # no effect. This should fall within `--cluster-cidr`.
3676             - name: CALICO_IPV4POOL_CIDR
3677               value: "192.168.0.0/16"
3678             # Disable file logging so `kubectl logs` works.
3679             - name: CALICO_DISABLE_FILE_LOGGING
3680               value: "true"
3681             # Set Felix endpoint to host default action to ACCEPT.
3682             - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
3683               value: "ACCEPT"
3684             # Disable IPv6 on Kubernetes.
3685             - name: FELIX_IPV6SUPPORT
3686               value: "false"
3687             # Set Felix logging to "info"
3688             - name: FELIX_LOGSEVERITYSCREEN
3689               value: "info"
3690             - name: FELIX_HEALTHENABLED
3691               value: "true"
3692           securityContext:
3693             privileged: true
3694           resources:
3695             requests:
3696               cpu: 250m
3697           livenessProbe:
3698             exec:
3699               command:
3700               - /bin/calico-node
3701               - -felix-live
3702               - -bird-live
3703             periodSeconds: 10
3704             initialDelaySeconds: 10
3705             failureThreshold: 6
3706           readinessProbe:
3707             exec:
3708               command:
3709               - /bin/calico-node
3710               - -felix-ready
3711               - -bird-ready
3712             periodSeconds: 10
3713           volumeMounts:
3714             - mountPath: /lib/modules
3715               name: lib-modules
3716               readOnly: true
3717             - mountPath: /run/xtables.lock
3718               name: xtables-lock
3719               readOnly: false
3720             - mountPath: /var/run/calico
3721               name: var-run-calico
3722               readOnly: false
3723             - mountPath: /var/lib/calico
3724               name: var-lib-calico
3725               readOnly: false
3726             - name: policysync
3727               mountPath: /var/run/nodeagent
3728             # For eBPF mode, we need to be able to mount the BPF filesystem at /sys/fs/bpf so we mount in the
3729             # parent directory.
3730             - name: sysfs
3731               mountPath: /sys/fs/
3732               # Bidirectional means that, if we mount the BPF filesystem at /sys/fs/bpf it will propagate to the host.
3733               # If the host is known to mount that filesystem already then Bidirectional can be omitted.
3734               mountPropagation: Bidirectional
3735             - name: cni-log-dir
3736               mountPath: /var/log/calico/cni
3737               readOnly: true
3738       volumes:
3739         # Used by calico-node.
3740         - name: lib-modules
3741           hostPath:
3742             path: /lib/modules
3743         - name: var-run-calico
3744           hostPath:
3745             path: /var/run/calico
3746         - name: var-lib-calico
3747           hostPath:
3748             path: /var/lib/calico
3749         - name: xtables-lock
3750           hostPath:
3751             path: /run/xtables.lock
3752             type: FileOrCreate
3753         - name: sysfs
3754           hostPath:
3755             path: /sys/fs/
3756             type: DirectoryOrCreate
3757         # Used to install CNI.
3758         - name: cni-bin-dir
3759           hostPath:
3760             path: /opt/cni/bin
3761         - name: cni-net-dir
3762           hostPath:
3763             path: /etc/cni/net.d
3764         # Used to access CNI logs.
3765         - name: cni-log-dir
3766           hostPath:
3767             path: /var/log/calico/cni
3768         # Mount in the directory for host-local IPAM allocations. This is
3769         # used when upgrading from host-local to calico-ipam, and can be removed
3770         # if not using the upgrade-ipam init container.
3771         - name: host-local-net-dir
3772           hostPath:
3773             path: /var/lib/cni/networks
3774         # Used to create per-pod Unix Domain Sockets
3775         - name: policysync
3776           hostPath:
3777             type: DirectoryOrCreate
3778             path: /var/run/nodeagent
3779         # Used to install Flex Volume Driver
3780         - name: flexvol-driver-host
3781           hostPath:
3782             type: DirectoryOrCreate
3783             path: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds
3784 ---
3785
3786 apiVersion: v1
3787 kind: ServiceAccount
3788 metadata:
3789   name: calico-node
3790   namespace: kube-system
3791
3792 ---
3793 # Source: calico/templates/calico-kube-controllers.yaml
3794 # See https://github.com/projectcalico/kube-controllers
3795 apiVersion: apps/v1
3796 kind: Deployment
3797 metadata:
3798   name: calico-kube-controllers
3799   namespace: kube-system
3800   labels:
3801     k8s-app: calico-kube-controllers
3802 spec:
3803   # The controllers can only have a single active instance.
3804   replicas: 1
3805   selector:
3806     matchLabels:
3807       k8s-app: calico-kube-controllers
3808   strategy:
3809     type: Recreate
3810   template:
3811     metadata:
3812       name: calico-kube-controllers
3813       namespace: kube-system
3814       labels:
3815         k8s-app: calico-kube-controllers
3816     spec:
3817       nodeSelector:
3818         kubernetes.io/os: linux
3819       tolerations:
3820         # Mark the pod as a critical add-on for rescheduling.
3821         - key: CriticalAddonsOnly
3822           operator: Exists
3823         - key: node-role.kubernetes.io/master
3824           effect: NoSchedule
3825       serviceAccountName: calico-kube-controllers
3826       priorityClassName: system-cluster-critical
3827       containers:
3828         - name: calico-kube-controllers
3829           #image: docker.io/calico/kube-controllers:v3.18.1
3830           #image: docker.io/calico/kube-controllers:release-v3.18
3831           image: docker.io/calico/kube-controllers:v3.18.1-6-g4a6327b94a4a
3832           env:
3833             # Choose which controllers to run.
3834             - name: ENABLED_CONTROLLERS
3835               value: node
3836             - name: DATASTORE_TYPE
3837               value: kubernetes
3838           readinessProbe:
3839             exec:
3840               command:
3841               - /usr/bin/check-status
3842               - -r
3843
3844 ---
3845
3846 apiVersion: v1
3847 kind: ServiceAccount
3848 metadata:
3849   name: calico-kube-controllers
3850   namespace: kube-system
3851
3852 ---
3853
3854 # This manifest creates a Pod Disruption Budget for Controller to allow K8s Cluster Autoscaler to evict
3855
3856 apiVersion: policy/v1beta1
3857 kind: PodDisruptionBudget
3858 metadata:
3859   name: calico-kube-controllers
3860   namespace: kube-system
3861   labels:
3862     k8s-app: calico-kube-controllers
3863 spec:
3864   maxUnavailable: 1
3865   selector:
3866     matchLabels:
3867       k8s-app: calico-kube-controllers
3868
3869 ---
3870 # Source: calico/templates/calico-etcd-secrets.yaml
3871
3872 ---
3873 # Source: calico/templates/calico-typha.yaml
3874
3875 ---
3876 # Source: calico/templates/configure-canal.yaml
3877
3878