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