apiVersion: v1 kind: Namespace metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 control-plane: controller-manager name: rke2-bootstrap-system --- apiVersion: v1 data: components: | apiVersion: v1 kind: Namespace metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 control-plane: controller-manager name: rke2-bootstrap-system --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert controller-gen.kubebuilder.io/version: v0.14.0 labels: cluster.x-k8s.io/provider: bootstrap-rke2 cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1 name: rke2configs.bootstrap.cluster.x-k8s.io spec: conversion: strategy: Webhook webhook: clientConfig: caBundle: Cg== service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /convert conversionReviewVersions: - v1 - v1beta1 group: bootstrap.cluster.x-k8s.io names: kind: RKE2Config listKind: RKE2ConfigList plural: rke2configs singular: rke2config scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: RKE2Config is the Schema for the rke2configs API. properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: RKE2ConfigSpec defines the desired state of RKE2Config. properties: agentConfig: description: AgentConfig specifies configuration for the agent nodes. properties: additionalUserData: description: |- AdditionalUserData is a field that allows users to specify additional cloud-init or ignition configuration to be included in the generated cloud-init/ignition script. properties: config: description: |- In case of using ignition, the data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/ NOTE: All fields of the UserData that are managed by the RKE2Config controller will be ignored, this include "write_files", "runcmd", "ntp". Deprecated: Data is reserved for the arbitrary cloud-init data type: string data: additionalProperties: type: string description: |- Data allows to pass arbitrary set of key/value pairs consistent with https://cloudinit.readthedocs.io/en/latest/reference/modules.html to extend existing cloud-init configuration type: object strict: description: Strict controls if Config should be strictly parsed. If so, warnings are treated as errors. type: boolean type: object x-kubernetes-validations: - message: Only config or data could be populated at once rule: '!has(self.data) || !has(self.config)' airGapped: description: |- AirGapped is a boolean value to define if the bootstrapping should be air-gapped, basically supposing that online container registries and RKE2 install scripts are not reachable. type: boolean cisProfile: description: CISProfile activates CIS compliance of RKE2 for a certain profile enum: - cis - cis-1.23 - cis-1.5 - cis-1.6 type: string containerRuntimeEndpoint: description: ContainerRuntimeEndpoint Disable embedded containerd and use alternative CRI implementation. type: string dataDir: description: DataDir Folder to hold state. type: string enableContainerdSElinux: description: |- EnableContainerdSElinux defines the policy for enabling SELinux for Containerd if value is true, Containerd will run with selinux-enabled=true flag if value is false, Containerd will run without the above flag type: boolean format: description: Format specifies the output format of the bootstrap data. Defaults to cloud-config. enum: - cloud-config - ignition type: string imageCredentialProviderConfigMap: description: |- ImageCredentialProviderConfigMap is a reference to the ConfigMap that contains credential provider plugin config The config map should contain a key "credential-config.yaml" with YAML file content and a key "credential-provider-binaries" with the a path to the binaries for the credential provider. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic kubeProxy: description: KubeProxyArgs Customized flag for kube-proxy process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubelet: description: KubeletArgs Customized flag for kubelet process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubeletPath: description: KubeletPath Override kubelet binary path. type: string loadBalancerPort: description: |- LoadBalancerPort local port for supervisor client load-balancer. If the supervisor and apiserver are not colocated an additional port 1 less than this port will also be used for the apiserver client load-balancer (default: 6444). type: integer nodeAnnotations: additionalProperties: type: string description: |- NodeAnnotations are annotations that are created on nodes post bootstrap phase. Unfortunately it is not possible to apply annotations via kubelet using current bootstrap configurations. Issue: https://github.com/kubernetes/kubernetes/issues/108046 type: object nodeLabels: description: NodeLabels Registering and starting kubelet with set of labels. items: type: string type: array nodeName: description: NodeNamePrefix Prefix to the Node Name that CAPI will generate. type: string nodeTaints: description: NodeTaints Registering kubelet with set of taints. items: type: string type: array ntp: description: NTP specifies NTP configuration properties: enabled: description: Enabled specifies whether NTP should be enabled type: boolean servers: description: Servers specifies which NTP servers to use items: type: string type: array type: object protectKernelDefaults: description: |- ProtectKernelDefaults defines Kernel tuning behavior. If true, error if kernel tunables are different than kubelet defaults. if false, kernel tunable can be different from kubelet defaults type: boolean resolvConf: description: ResolvConf is a reference to a ConfigMap containing resolv.conf content for the node. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic runtimeImage: description: RuntimeImage override image to use for runtime binaries (containerd, kubectl, crictl, etc). type: string snapshotter: description: 'Snapshotter override default containerd snapshotter (default: "overlayfs").' type: string systemDefaultRegistry: description: SystemDefaultRegistry Private registry to be used for all system images. type: string version: description: Version specifies the rke2 version. type: string type: object files: description: Files specifies extra files to be passed to user_data upon creation. items: description: File defines the input for generating write_files in cloud-init. properties: content: description: Content is the actual content of the file. type: string contentFrom: description: ContentFrom is a referenced source of content to populate the file. properties: secret: description: SecretFileSource represents a secret that should populate this file. properties: key: description: Key is the key in the secret's data map for this value. type: string name: description: Name of the secret in the RKE2BootstrapConfig's namespace to use. type: string required: - key - name type: object required: - secret type: object encoding: description: Encoding specifies the encoding of the file contents. enum: - base64 - gzip - gzip+base64 type: string owner: description: Owner specifies the ownership of the file, e.g. "root:root". type: string path: description: Path specifies the full path on disk where to store the file. type: string permissions: description: Permissions specifies the permissions to assign to the file, e.g. "0640". type: string required: - path type: object type: array postRKE2Commands: description: PostRKE2Commands specifies extra commands to run after rke2 setup runs. items: type: string type: array preRKE2Commands: description: PreRKE2Commands specifies extra commands to run before rke2 setup runs. items: type: string type: array privateRegistriesConfig: description: PrivateRegistriesConfig defines the containerd configuration for private registries and local registry mirrors. properties: configs: additionalProperties: description: RegistryConfig contains configuration used to communicate with the registry. properties: authSecret: description: |- Auth si a reference to a Secret containing information to authenticate to the registry. The Secret must provite a username and a password data entry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic tls: description: |- TLS is a pair of CA/Cert/Key which then are used when creating the transport that communicates with the registry. properties: insecureSkipVerify: description: InsecureSkipVerify may be set to false to skip verifying the registry's certificate, default is true. type: boolean tlsConfigSecret: description: |- TLSConfigSecret is a reference to a secret of type `kubernetes.io/tls` thich has up to 3 entries: tls.crt, tls.key and ca.crt which describe the TLS configuration necessary to connect to the registry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic type: object type: object description: |- Configs are configs for each registry. The key is the FDQN or IP of the registry. type: object mirrors: additionalProperties: description: Mirror contains the config related to the registry mirror. properties: endpoint: description: |- Endpoints are endpoints for a namespace. CRI plugin will try the endpoints one by one until a working one is found. The endpoint must be a valid url with host specified. The scheme, host and path from the endpoint URL will be used. items: type: string type: array rewrite: additionalProperties: type: string description: |- Rewrites are repository rewrite rules for a namespace. When fetching image resources from an endpoint and a key matches the repository via regular expression matching it will be replaced with the corresponding value from the map in the resource request. type: object type: object description: Mirrors are namespace to mirror mapping for all namespaces. type: object type: object type: object status: description: RKE2ConfigStatus defines the observed state of RKE2Config. properties: conditions: description: Conditions defines current service state of the RKE2Config. items: description: Condition defines an observation of a Cluster API resource operational state. properties: lastTransitionTime: description: |- Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- A human readable message indicating details about the transition. This field may be empty. type: string reason: description: |- The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty. type: string severity: description: |- Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: |- Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. type: string required: - lastTransitionTime - status - type type: object type: array dataSecretName: description: DataSecretName is the name of the secret that stores the bootstrap data script. type: string failureMessage: description: FailureMessage will be set on non-retryable errors. type: string failureReason: description: FailureReason will be set on non-retryable errors. type: string observedGeneration: description: ObservedGeneration is the latest generation observed by the controller. format: int64 type: integer ready: description: Ready indicates the BootstrapData field is ready to be consumed. type: boolean type: object type: object served: true storage: false subresources: status: {} - name: v1beta1 schema: openAPIV3Schema: description: RKE2Config is the Schema for the rke2configs API. properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: RKE2ConfigSpec defines the desired state of RKE2Config. properties: agentConfig: description: AgentConfig specifies configuration for the agent nodes. properties: additionalUserData: description: |- AdditionalUserData is a field that allows users to specify additional cloud-init or ignition configuration to be included in the generated cloud-init/ignition script. properties: config: description: |- In case of using ignition, the data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/ NOTE: All fields of the UserData that are managed by the RKE2Config controller will be ignored, this include "write_files", "runcmd", "ntp". type: string data: additionalProperties: type: string description: |- Data allows to pass arbitrary set of key/value pairs consistent with https://cloudinit.readthedocs.io/en/latest/reference/modules.html to extend existing cloud-init configuration type: object strict: description: Strict controls if Config should be strictly parsed. If so, warnings are treated as errors. type: boolean type: object x-kubernetes-validations: - message: Only config or data could be populated at once rule: '!has(self.data) || !has(self.config)' airGapped: description: |- AirGapped is a boolean value to define if the bootstrapping should be air-gapped, basically supposing that online container registries and RKE2 install scripts are not reachable. type: boolean airGappedChecksum: description: |- AirGappedChecksum is a string value with a sha256sum checksum to compare with checksum of existing sha256sum-.txt file for packages already available on the machine before performing air-gapped installation. type: string cisProfile: description: CISProfile activates CIS compliance of RKE2 for a certain profile enum: - cis - cis-1.23 - cis-1.5 - cis-1.6 type: string containerRuntimeEndpoint: description: ContainerRuntimeEndpoint Disable embedded containerd and use alternative CRI implementation. type: string dataDir: description: DataDir Folder to hold state. type: string enableContainerdSElinux: description: |- EnableContainerdSElinux defines the policy for enabling SELinux for Containerd if value is true, Containerd will run with selinux-enabled=true flag if value is false, Containerd will run without the above flag type: boolean format: description: Format specifies the output format of the bootstrap data. Defaults to cloud-config. enum: - cloud-config - ignition type: string imageCredentialProviderConfigMap: description: |- ImageCredentialProviderConfigMap is a reference to the ConfigMap that contains credential provider plugin config The config map should contain a key "credential-config.yaml" with YAML file content and a key "credential-provider-binaries" with the a path to the binaries for the credential provider. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic kubeProxy: description: KubeProxyArgs Customized flag for kube-proxy process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubelet: description: KubeletArgs Customized flag for kubelet process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubeletPath: description: KubeletPath Override kubelet binary path. type: string loadBalancerPort: description: |- LoadBalancerPort local port for supervisor client load-balancer. If the supervisor and apiserver are not colocated an additional port 1 less than this port will also be used for the apiserver client load-balancer (default: 6444). type: integer nodeAnnotations: additionalProperties: type: string description: |- NodeAnnotations are annotations that are created on nodes post bootstrap phase. Unfortunately it is not possible to apply annotations via kubelet using current bootstrap configurations. Issue: https://github.com/kubernetes/kubernetes/issues/108046 type: object nodeLabels: description: NodeLabels Registering and starting kubelet with set of labels. items: type: string type: array nodeName: description: NodeNamePrefix Prefix to the Node Name that CAPI will generate. type: string nodeTaints: description: NodeTaints Registering kubelet with set of taints. items: type: string type: array ntp: description: NTP specifies NTP configuration properties: enabled: description: Enabled specifies whether NTP should be enabled type: boolean servers: description: Servers specifies which NTP servers to use items: type: string type: array type: object protectKernelDefaults: description: |- ProtectKernelDefaults defines Kernel tuning behavior. If true, error if kernel tunables are different than kubelet defaults. if false, kernel tunable can be different from kubelet defaults type: boolean resolvConf: description: ResolvConf is a reference to a ConfigMap containing resolv.conf content for the node. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic runtimeImage: description: RuntimeImage override image to use for runtime binaries (containerd, kubectl, crictl, etc). type: string snapshotter: description: 'Snapshotter override default containerd snapshotter (default: "overlayfs").' type: string systemDefaultRegistry: description: SystemDefaultRegistry Private registry to be used for all system images. type: string type: object files: description: Files specifies extra files to be passed to user_data upon creation. items: description: File defines the input for generating write_files in cloud-init. properties: content: description: Content is the actual content of the file. type: string contentFrom: description: ContentFrom is a referenced source of content to populate the file. properties: secret: description: SecretFileSource represents a secret that should populate this file. properties: key: description: Key is the key in the secret's data map for this value. type: string name: description: Name of the secret in the RKE2BootstrapConfig's namespace to use. type: string required: - key - name type: object required: - secret type: object encoding: description: Encoding specifies the encoding of the file contents. enum: - base64 - gzip - gzip+base64 type: string owner: description: Owner specifies the ownership of the file, e.g. "root:root". type: string path: description: Path specifies the full path on disk where to store the file. type: string permissions: description: Permissions specifies the permissions to assign to the file, e.g. "0640". type: string required: - path type: object type: array postRKE2Commands: description: PostRKE2Commands specifies extra commands to run after rke2 setup runs. items: type: string type: array preRKE2Commands: description: PreRKE2Commands specifies extra commands to run before rke2 setup runs. items: type: string type: array privateRegistriesConfig: description: PrivateRegistriesConfig defines the containerd configuration for private registries and local registry mirrors. properties: configs: additionalProperties: description: RegistryConfig contains configuration used to communicate with the registry. properties: authSecret: description: |- Auth is a reference to a Secret containing information to authenticate to the registry. The Secret must provite a username and a password data entry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic tls: description: |- TLS is a pair of CA/Cert/Key which then are used when creating the transport that communicates with the registry. properties: insecureSkipVerify: description: InsecureSkipVerify may be set to false to skip verifying the registry's certificate, default is true. type: boolean tlsConfigSecret: description: |- TLSConfigSecret is a reference to a secret of type `kubernetes.io/tls` thich has up to 3 entries: tls.crt, tls.key and ca.crt which describe the TLS configuration necessary to connect to the registry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic type: object type: object description: |- Configs are configs for each registry. The key is the FDQN or IP of the registry. type: object mirrors: additionalProperties: description: Mirror contains the config related to the registry mirror. properties: endpoint: description: |- Endpoints are endpoints for a namespace. CRI plugin will try the endpoints one by one until a working one is found. The endpoint must be a valid url with host specified. The scheme, host and path from the endpoint URL will be used. items: type: string type: array rewrite: additionalProperties: type: string description: |- Rewrites are repository rewrite rules for a namespace. When fetching image resources from an endpoint and a key matches the repository via regular expression matching it will be replaced with the corresponding value from the map in the resource request. type: object type: object description: Mirrors are namespace to mirror mapping for all namespaces. type: object type: object type: object status: description: RKE2ConfigStatus defines the observed state of RKE2Config. properties: conditions: description: Conditions defines current service state of the RKE2Config. items: description: Condition defines an observation of a Cluster API resource operational state. properties: lastTransitionTime: description: |- Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- A human readable message indicating details about the transition. This field may be empty. type: string reason: description: |- The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty. type: string severity: description: |- Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: |- Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. type: string required: - lastTransitionTime - status - type type: object type: array dataSecretName: description: DataSecretName is the name of the secret that stores the bootstrap data script. type: string failureMessage: description: FailureMessage will be set on non-retryable errors. type: string failureReason: description: FailureReason will be set on non-retryable errors. type: string observedGeneration: description: ObservedGeneration is the latest generation observed by the controller. format: int64 type: integer ready: description: Ready indicates the BootstrapData field is ready to be consumed. type: boolean type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert controller-gen.kubebuilder.io/version: v0.14.0 labels: cluster.x-k8s.io/provider: bootstrap-rke2 cluster.x-k8s.io/v1beta1: v1alpha1_v1beta1 name: rke2configtemplates.bootstrap.cluster.x-k8s.io spec: conversion: strategy: Webhook webhook: clientConfig: caBundle: Cg== service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /convert conversionReviewVersions: - v1 group: bootstrap.cluster.x-k8s.io names: kind: RKE2ConfigTemplate listKind: RKE2ConfigTemplateList plural: rke2configtemplates singular: rke2configtemplate scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: RKE2ConfigTemplate is the Schema for the RKE2configtemplates API. properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: Spec details the RKE2ConfigTemplate specification. properties: template: description: "Template references a RKE2ConfigTemplate, which is used to include an RKE2ConfigSpec struct.\n\tThis is used to include a desired RKE2ConfigSpec configuration when an RKE2Config resource is generated by a MachineDeployment resource." properties: spec: description: Spec is the RKE2ConfigSpec that should be used for the template. properties: agentConfig: description: AgentConfig specifies configuration for the agent nodes. properties: additionalUserData: description: |- AdditionalUserData is a field that allows users to specify additional cloud-init or ignition configuration to be included in the generated cloud-init/ignition script. properties: config: description: |- In case of using ignition, the data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/ NOTE: All fields of the UserData that are managed by the RKE2Config controller will be ignored, this include "write_files", "runcmd", "ntp". Deprecated: Data is reserved for the arbitrary cloud-init data type: string data: additionalProperties: type: string description: |- Data allows to pass arbitrary set of key/value pairs consistent with https://cloudinit.readthedocs.io/en/latest/reference/modules.html to extend existing cloud-init configuration type: object strict: description: Strict controls if Config should be strictly parsed. If so, warnings are treated as errors. type: boolean type: object x-kubernetes-validations: - message: Only config or data could be populated at once rule: '!has(self.data) || !has(self.config)' airGapped: description: |- AirGapped is a boolean value to define if the bootstrapping should be air-gapped, basically supposing that online container registries and RKE2 install scripts are not reachable. type: boolean cisProfile: description: CISProfile activates CIS compliance of RKE2 for a certain profile enum: - cis - cis-1.23 - cis-1.5 - cis-1.6 type: string containerRuntimeEndpoint: description: ContainerRuntimeEndpoint Disable embedded containerd and use alternative CRI implementation. type: string dataDir: description: DataDir Folder to hold state. type: string enableContainerdSElinux: description: |- EnableContainerdSElinux defines the policy for enabling SELinux for Containerd if value is true, Containerd will run with selinux-enabled=true flag if value is false, Containerd will run without the above flag type: boolean format: description: Format specifies the output format of the bootstrap data. Defaults to cloud-config. enum: - cloud-config - ignition type: string imageCredentialProviderConfigMap: description: |- ImageCredentialProviderConfigMap is a reference to the ConfigMap that contains credential provider plugin config The config map should contain a key "credential-config.yaml" with YAML file content and a key "credential-provider-binaries" with the a path to the binaries for the credential provider. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic kubeProxy: description: KubeProxyArgs Customized flag for kube-proxy process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubelet: description: KubeletArgs Customized flag for kubelet process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubeletPath: description: KubeletPath Override kubelet binary path. type: string loadBalancerPort: description: |- LoadBalancerPort local port for supervisor client load-balancer. If the supervisor and apiserver are not colocated an additional port 1 less than this port will also be used for the apiserver client load-balancer (default: 6444). type: integer nodeAnnotations: additionalProperties: type: string description: |- NodeAnnotations are annotations that are created on nodes post bootstrap phase. Unfortunately it is not possible to apply annotations via kubelet using current bootstrap configurations. Issue: https://github.com/kubernetes/kubernetes/issues/108046 type: object nodeLabels: description: NodeLabels Registering and starting kubelet with set of labels. items: type: string type: array nodeName: description: NodeNamePrefix Prefix to the Node Name that CAPI will generate. type: string nodeTaints: description: NodeTaints Registering kubelet with set of taints. items: type: string type: array ntp: description: NTP specifies NTP configuration properties: enabled: description: Enabled specifies whether NTP should be enabled type: boolean servers: description: Servers specifies which NTP servers to use items: type: string type: array type: object protectKernelDefaults: description: |- ProtectKernelDefaults defines Kernel tuning behavior. If true, error if kernel tunables are different than kubelet defaults. if false, kernel tunable can be different from kubelet defaults type: boolean resolvConf: description: ResolvConf is a reference to a ConfigMap containing resolv.conf content for the node. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic runtimeImage: description: RuntimeImage override image to use for runtime binaries (containerd, kubectl, crictl, etc). type: string snapshotter: description: 'Snapshotter override default containerd snapshotter (default: "overlayfs").' type: string systemDefaultRegistry: description: SystemDefaultRegistry Private registry to be used for all system images. type: string version: description: Version specifies the rke2 version. type: string type: object files: description: Files specifies extra files to be passed to user_data upon creation. items: description: File defines the input for generating write_files in cloud-init. properties: content: description: Content is the actual content of the file. type: string contentFrom: description: ContentFrom is a referenced source of content to populate the file. properties: secret: description: SecretFileSource represents a secret that should populate this file. properties: key: description: Key is the key in the secret's data map for this value. type: string name: description: Name of the secret in the RKE2BootstrapConfig's namespace to use. type: string required: - key - name type: object required: - secret type: object encoding: description: Encoding specifies the encoding of the file contents. enum: - base64 - gzip - gzip+base64 type: string owner: description: Owner specifies the ownership of the file, e.g. "root:root". type: string path: description: Path specifies the full path on disk where to store the file. type: string permissions: description: Permissions specifies the permissions to assign to the file, e.g. "0640". type: string required: - path type: object type: array postRKE2Commands: description: PostRKE2Commands specifies extra commands to run after rke2 setup runs. items: type: string type: array preRKE2Commands: description: PreRKE2Commands specifies extra commands to run before rke2 setup runs. items: type: string type: array privateRegistriesConfig: description: PrivateRegistriesConfig defines the containerd configuration for private registries and local registry mirrors. properties: configs: additionalProperties: description: RegistryConfig contains configuration used to communicate with the registry. properties: authSecret: description: |- Auth si a reference to a Secret containing information to authenticate to the registry. The Secret must provite a username and a password data entry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic tls: description: |- TLS is a pair of CA/Cert/Key which then are used when creating the transport that communicates with the registry. properties: insecureSkipVerify: description: InsecureSkipVerify may be set to false to skip verifying the registry's certificate, default is true. type: boolean tlsConfigSecret: description: |- TLSConfigSecret is a reference to a secret of type `kubernetes.io/tls` thich has up to 3 entries: tls.crt, tls.key and ca.crt which describe the TLS configuration necessary to connect to the registry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic type: object type: object description: |- Configs are configs for each registry. The key is the FDQN or IP of the registry. type: object mirrors: additionalProperties: description: Mirror contains the config related to the registry mirror. properties: endpoint: description: |- Endpoints are endpoints for a namespace. CRI plugin will try the endpoints one by one until a working one is found. The endpoint must be a valid url with host specified. The scheme, host and path from the endpoint URL will be used. items: type: string type: array rewrite: additionalProperties: type: string description: |- Rewrites are repository rewrite rules for a namespace. When fetching image resources from an endpoint and a key matches the repository via regular expression matching it will be replaced with the corresponding value from the map in the resource request. type: object type: object description: Mirrors are namespace to mirror mapping for all namespaces. type: object type: object type: object required: - spec type: object required: - template type: object required: - spec type: object served: true storage: false subresources: status: {} - name: v1beta1 schema: openAPIV3Schema: description: RKE2ConfigTemplate is the Schema for the RKE2configtemplates API. properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: Spec details the RKE2ConfigTemplate specification. properties: template: description: "Template references a RKE2ConfigTemplate, which is used to include an RKE2ConfigSpec struct.\n\tThis is used to include a desired RKE2ConfigSpec configuration when an RKE2Config resource is generated by a MachineDeployment resource." properties: spec: description: Spec is the RKE2ConfigSpec that should be used for the template. properties: agentConfig: description: AgentConfig specifies configuration for the agent nodes. properties: additionalUserData: description: |- AdditionalUserData is a field that allows users to specify additional cloud-init or ignition configuration to be included in the generated cloud-init/ignition script. properties: config: description: |- In case of using ignition, the data format is documented here: https://kinvolk.io/docs/flatcar-container-linux/latest/provisioning/cl-config/ NOTE: All fields of the UserData that are managed by the RKE2Config controller will be ignored, this include "write_files", "runcmd", "ntp". type: string data: additionalProperties: type: string description: |- Data allows to pass arbitrary set of key/value pairs consistent with https://cloudinit.readthedocs.io/en/latest/reference/modules.html to extend existing cloud-init configuration type: object strict: description: Strict controls if Config should be strictly parsed. If so, warnings are treated as errors. type: boolean type: object x-kubernetes-validations: - message: Only config or data could be populated at once rule: '!has(self.data) || !has(self.config)' airGapped: description: |- AirGapped is a boolean value to define if the bootstrapping should be air-gapped, basically supposing that online container registries and RKE2 install scripts are not reachable. type: boolean airGappedChecksum: description: |- AirGappedChecksum is a string value with a sha256sum checksum to compare with checksum of existing sha256sum-.txt file for packages already available on the machine before performing air-gapped installation. type: string cisProfile: description: CISProfile activates CIS compliance of RKE2 for a certain profile enum: - cis - cis-1.23 - cis-1.5 - cis-1.6 type: string containerRuntimeEndpoint: description: ContainerRuntimeEndpoint Disable embedded containerd and use alternative CRI implementation. type: string dataDir: description: DataDir Folder to hold state. type: string enableContainerdSElinux: description: |- EnableContainerdSElinux defines the policy for enabling SELinux for Containerd if value is true, Containerd will run with selinux-enabled=true flag if value is false, Containerd will run without the above flag type: boolean format: description: Format specifies the output format of the bootstrap data. Defaults to cloud-config. enum: - cloud-config - ignition type: string imageCredentialProviderConfigMap: description: |- ImageCredentialProviderConfigMap is a reference to the ConfigMap that contains credential provider plugin config The config map should contain a key "credential-config.yaml" with YAML file content and a key "credential-provider-binaries" with the a path to the binaries for the credential provider. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic kubeProxy: description: KubeProxyArgs Customized flag for kube-proxy process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubelet: description: KubeletArgs Customized flag for kubelet process. properties: extraArgs: description: 'ExtraArgs is a list of command line arguments (format: flag=value) to pass to a Kubernetes Component command.' items: type: string type: array extraEnv: additionalProperties: type: string description: ExtraEnv is a map of environment variables to pass on to a Kubernetes Component command. type: object extraMounts: additionalProperties: type: string description: ExtraMounts is a map of volume mounts to be added for the Kubernetes component StaticPod type: object overrideImage: description: OverrideImage is a string that references a container image to override the default one for the Kubernetes Component type: string type: object kubeletPath: description: KubeletPath Override kubelet binary path. type: string loadBalancerPort: description: |- LoadBalancerPort local port for supervisor client load-balancer. If the supervisor and apiserver are not colocated an additional port 1 less than this port will also be used for the apiserver client load-balancer (default: 6444). type: integer nodeAnnotations: additionalProperties: type: string description: |- NodeAnnotations are annotations that are created on nodes post bootstrap phase. Unfortunately it is not possible to apply annotations via kubelet using current bootstrap configurations. Issue: https://github.com/kubernetes/kubernetes/issues/108046 type: object nodeLabels: description: NodeLabels Registering and starting kubelet with set of labels. items: type: string type: array nodeName: description: NodeNamePrefix Prefix to the Node Name that CAPI will generate. type: string nodeTaints: description: NodeTaints Registering kubelet with set of taints. items: type: string type: array ntp: description: NTP specifies NTP configuration properties: enabled: description: Enabled specifies whether NTP should be enabled type: boolean servers: description: Servers specifies which NTP servers to use items: type: string type: array type: object protectKernelDefaults: description: |- ProtectKernelDefaults defines Kernel tuning behavior. If true, error if kernel tunables are different than kubelet defaults. if false, kernel tunable can be different from kubelet defaults type: boolean resolvConf: description: ResolvConf is a reference to a ConfigMap containing resolv.conf content for the node. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic runtimeImage: description: RuntimeImage override image to use for runtime binaries (containerd, kubectl, crictl, etc). type: string snapshotter: description: 'Snapshotter override default containerd snapshotter (default: "overlayfs").' type: string systemDefaultRegistry: description: SystemDefaultRegistry Private registry to be used for all system images. type: string type: object files: description: Files specifies extra files to be passed to user_data upon creation. items: description: File defines the input for generating write_files in cloud-init. properties: content: description: Content is the actual content of the file. type: string contentFrom: description: ContentFrom is a referenced source of content to populate the file. properties: secret: description: SecretFileSource represents a secret that should populate this file. properties: key: description: Key is the key in the secret's data map for this value. type: string name: description: Name of the secret in the RKE2BootstrapConfig's namespace to use. type: string required: - key - name type: object required: - secret type: object encoding: description: Encoding specifies the encoding of the file contents. enum: - base64 - gzip - gzip+base64 type: string owner: description: Owner specifies the ownership of the file, e.g. "root:root". type: string path: description: Path specifies the full path on disk where to store the file. type: string permissions: description: Permissions specifies the permissions to assign to the file, e.g. "0640". type: string required: - path type: object type: array postRKE2Commands: description: PostRKE2Commands specifies extra commands to run after rke2 setup runs. items: type: string type: array preRKE2Commands: description: PreRKE2Commands specifies extra commands to run before rke2 setup runs. items: type: string type: array privateRegistriesConfig: description: PrivateRegistriesConfig defines the containerd configuration for private registries and local registry mirrors. properties: configs: additionalProperties: description: RegistryConfig contains configuration used to communicate with the registry. properties: authSecret: description: |- Auth is a reference to a Secret containing information to authenticate to the registry. The Secret must provite a username and a password data entry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic tls: description: |- TLS is a pair of CA/Cert/Key which then are used when creating the transport that communicates with the registry. properties: insecureSkipVerify: description: InsecureSkipVerify may be set to false to skip verifying the registry's certificate, default is true. type: boolean tlsConfigSecret: description: |- TLSConfigSecret is a reference to a secret of type `kubernetes.io/tls` thich has up to 3 entries: tls.crt, tls.key and ca.crt which describe the TLS configuration necessary to connect to the registry. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic type: object type: object description: |- Configs are configs for each registry. The key is the FDQN or IP of the registry. type: object mirrors: additionalProperties: description: Mirror contains the config related to the registry mirror. properties: endpoint: description: |- Endpoints are endpoints for a namespace. CRI plugin will try the endpoints one by one until a working one is found. The endpoint must be a valid url with host specified. The scheme, host and path from the endpoint URL will be used. items: type: string type: array rewrite: additionalProperties: type: string description: |- Rewrites are repository rewrite rules for a namespace. When fetching image resources from an endpoint and a key matches the repository via regular expression matching it will be replaced with the corresponding value from the map in the resource request. type: object type: object description: Mirrors are namespace to mirror mapping for all namespaces. type: object type: object type: object required: - spec type: object required: - template type: object required: - spec type: object served: true storage: true subresources: status: {} --- apiVersion: v1 kind: ServiceAccount metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-manager namespace: rke2-bootstrap-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-leader-election-role namespace: rke2-bootstrap-system rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - create - update - patch - delete - apiGroups: - coordination.k8s.io resources: - leases verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - events verbs: - create - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-manager-role rules: - apiGroups: - "" resources: - configmaps - events - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - bootstrap.cluster.x-k8s.io resources: - rke2configs - rke2configs/finalizers - rke2configs/status verbs: - create - delete - get - list - patch - update - watch - apiGroups: - cluster.x-k8s.io resources: - clusters - clusters/status - machinepools - machinepools/status - machines - machines/status - machinesets verbs: - get - list - watch - apiGroups: - controlplane.cluster.x-k8s.io resources: - rke2controlplanes - rke2controlplanes/status verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-leader-election-rolebinding namespace: rke2-bootstrap-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: rke2-bootstrap-leader-election-role subjects: - kind: ServiceAccount name: rke2-bootstrap-manager namespace: rke2-bootstrap-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: rke2-bootstrap-manager-role subjects: - kind: ServiceAccount name: rke2-bootstrap-manager namespace: rke2-bootstrap-system --- apiVersion: v1 kind: Service metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system spec: ports: - port: 443 targetPort: webhook-server selector: cluster.x-k8s.io/provider: bootstrap-rke2 --- apiVersion: apps/v1 kind: Deployment metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 control-plane: controller-manager name: rke2-bootstrap-controller-manager namespace: rke2-bootstrap-system spec: replicas: 1 selector: matchLabels: cluster.x-k8s.io/provider: bootstrap-rke2 control-plane: controller-manager template: metadata: annotations: kubectl.kubernetes.io/default-container: manager labels: cluster.x-k8s.io/provider: bootstrap-rke2 control-plane: controller-manager spec: containers: - args: - --leader-elect - --diagnostics-address=${CAPRKE2_DIAGNOSTICS_ADDRESS:=:8443} - --insecure-diagnostics=${CAPRKE2_INSECURE_DIAGNOSTICS:=false} command: - /manager image: ghcr.io/rancher/cluster-api-provider-rke2-bootstrap:v0.7.1 imagePullPolicy: IfNotPresent livenessProbe: httpGet: path: /healthz port: healthz name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP - containerPort: 9440 name: healthz protocol: TCP - containerPort: 8443 name: metrics protocol: TCP readinessProbe: httpGet: path: /readyz port: healthz securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false runAsGroup: 65532 runAsUser: 65532 volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccountName: rke2-bootstrap-manager terminationGracePeriodSeconds: 10 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master - effect: NoSchedule key: node-role.kubernetes.io/control-plane volumes: - name: cert secret: secretName: rke2-bootstrap-webhook-service-cert --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-serving-cert namespace: rke2-bootstrap-system spec: dnsNames: - rke2-bootstrap-webhook-service.rke2-bootstrap-system.svc - rke2-bootstrap-webhook-service.rke2-bootstrap-system.svc.cluster.local issuerRef: kind: Issuer name: rke2-bootstrap-selfsigned-issuer secretName: rke2-bootstrap-webhook-service-cert subject: organizations: - Rancher by SUSE --- apiVersion: cert-manager.io/v1 kind: Issuer metadata: labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-selfsigned-issuer namespace: rke2-bootstrap-system spec: selfSigned: {} --- apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: annotations: cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-mutating-webhook-configuration webhooks: - admissionReviewVersions: - v1 clientConfig: service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /mutate-bootstrap-cluster-x-k8s-io-v1beta1-rke2config failurePolicy: Fail name: mrke2config.kb.io rules: - apiGroups: - bootstrap.cluster.x-k8s.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - rke2configs sideEffects: None - admissionReviewVersions: - v1 clientConfig: service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /mutate-bootstrap-cluster-x-k8s-io-v1beta1-rke2configtemplate failurePolicy: Fail name: mrke2configtemplate.kb.io rules: - apiGroups: - bootstrap.cluster.x-k8s.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - rke2configtemplates sideEffects: None --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: annotations: cert-manager.io/inject-ca-from: rke2-bootstrap-system/rke2-bootstrap-serving-cert labels: cluster.x-k8s.io/provider: bootstrap-rke2 name: rke2-bootstrap-validating-webhook-configuration webhooks: - admissionReviewVersions: - v1 clientConfig: service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /validate-bootstrap-cluster-x-k8s-io-v1beta1-rke2config failurePolicy: Fail name: vrke2config.kb.io rules: - apiGroups: - bootstrap.cluster.x-k8s.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - rke2configs sideEffects: None - admissionReviewVersions: - v1 clientConfig: service: name: rke2-bootstrap-webhook-service namespace: rke2-bootstrap-system path: /validate-bootstrap-cluster-x-k8s-io-v1beta1-rke2configtemplate failurePolicy: Fail name: vrke2configtemplate.kb.io rules: - apiGroups: - bootstrap.cluster.x-k8s.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - rke2configtemplates sideEffects: None metadata: | # maps release series of major.minor to cluster-api contract version # the contract version may change between minor or major versions, but *not* # between patch versions. # # update this file only when a new major or minor version is released apiVersion: clusterctl.cluster.x-k8s.io/v1alpha3 kind: Metadata releaseSeries: - major: 0 minor: 1 contract: v1beta1 - major: 0 minor: 2 contract: v1beta1 - major: 0 minor: 3 contract: v1beta1 - major: 0 minor: 4 contract: v1beta1 - major: 0 minor: 5 contract: v1beta1 - major: 0 minor: 6 contract: v1beta1 - major: 0 minor: 7 contract: v1beta1 kind: ConfigMap metadata: creationTimestamp: null name: v0.7.1 namespace: rke2-bootstrap-system labels: provider-components: rke2-bootstrap