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