infrastructure.cluster.x-k8s.io/v1alpha2

package v1alpha2 contains API Schema definitions for the infrastructure v1alpha2 API group

Resource Types:

    LXCCluster

    LXCCluster is the Schema for the lxcclusters API.

    Field Description
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCClusterSpec


    controlPlaneEndpoint
    sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint

    ControlPlaneEndpoint represents the endpoint to communicate with the control plane.

    secretRef
    SecretRef

    SecretRef references a secret with credentials to access the LXC (e.g. Incus, LXD) server.

    loadBalancer
    LXCClusterLoadBalancer

    LoadBalancer is configuration for provisioning the load balancer of the cluster.

    unprivileged
    bool
    (Optional)

    Unprivileged will launch unprivileged LXC containers for the cluster machines.

    Known limitations apply for unprivileged LXC containers (e.g. cannot use NFS volumes).

    skipDefaultKubeadmProfile
    bool
    (Optional)

    Do not apply the default kubeadm profile on container instances.

    In this case, the cluster administrator is responsible to create the profile manually and set the .spec.template.spec.profiles field of all LXCMachineTemplate objects.

    For more details on the default kubeadm profile that is applied, see https://lxc.github.io/cluster-api-provider-incus/reference/profile/kubeadm.html

    status
    LXCClusterStatus

    LXCClusterLoadBalancer

    (Appears on: LXCClusterSpec)

    LXCClusterLoadBalancer is configuration for provisioning the load balancer of the cluster.

    Field Description
    lxc
    LXCLoadBalancerInstance
    (Optional)

    LXC will spin up a plain Ubuntu instance with haproxy installed.

    The controller will automatically update the list of backends on the haproxy configuration as control plane nodes are added or removed from the cluster.

    No other configuration is required for “lxc” mode. The load balancer instance can be configured through the .instanceSpec field.

    The load balancer container is a single point of failure to access the workload cluster control plane. Therefore, it should only be used for development or evaluation clusters.

    oci
    LXCLoadBalancerInstance
    (Optional)

    OCI will spin up an OCI instance running the kindest/haproxy image.

    The controller will automatically update the list of backends on the haproxy configuration as control plane nodes are added or removed from the cluster.

    No other configuration is required for “oci” mode. The load balancer instance can be configured through the .instanceSpec field.

    The load balancer container is a single point of failure to access the workload cluster control plane. Therefore, it should only be used for development or evaluation clusters.

    Requires server extensions: “instance_oci”

    ovn
    LXCLoadBalancerOVN
    (Optional)

    OVN will create a network load balancer.

    The controller will automatically update the list of backends for the network load balancer as control plane nodes are added or removed from the cluster.

    The cluster administrator is responsible to ensure that the OVN network is configured properly and that the LXCMachineTemplate objects have appropriate profiles to use the OVN network.

    When using the “ovn” mode, the load balancer address must be set in .spec.controlPlaneEndpoint.host on the LXCCluster object.

    Requires server extensions: “network_load_balancer”, “network_load_balancer_health_checks”

    external
    LXCLoadBalancerExternal
    (Optional)

    External will not create a load balancer. It must be used alongside something like kube-vip, otherwise the cluster will fail to provision.

    When using the “external” mode, the load balancer address must be set in .spec.controlPlaneEndpoint.host on the LXCCluster object.

    LXCClusterSpec

    (Appears on: LXCCluster, LXCClusterTemplateResource)

    LXCClusterSpec defines the desired state of LXCCluster.

    Field Description
    controlPlaneEndpoint
    sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint

    ControlPlaneEndpoint represents the endpoint to communicate with the control plane.

    secretRef
    SecretRef

    SecretRef references a secret with credentials to access the LXC (e.g. Incus, LXD) server.

    loadBalancer
    LXCClusterLoadBalancer

    LoadBalancer is configuration for provisioning the load balancer of the cluster.

    unprivileged
    bool
    (Optional)

    Unprivileged will launch unprivileged LXC containers for the cluster machines.

    Known limitations apply for unprivileged LXC containers (e.g. cannot use NFS volumes).

    skipDefaultKubeadmProfile
    bool
    (Optional)

    Do not apply the default kubeadm profile on container instances.

    In this case, the cluster administrator is responsible to create the profile manually and set the .spec.template.spec.profiles field of all LXCMachineTemplate objects.

    For more details on the default kubeadm profile that is applied, see https://lxc.github.io/cluster-api-provider-incus/reference/profile/kubeadm.html

    LXCClusterStatus

    (Appears on: LXCCluster)

    LXCClusterStatus defines the observed state of LXCCluster.

    Field Description
    ready
    bool
    (Optional)

    Ready denotes that the LXC cluster (infrastructure) is ready.

    conditions
    sigs.k8s.io/cluster-api/api/v1beta1.Conditions
    (Optional)

    Conditions defines current service state of the LXCCluster.

    v1beta2
    LXCClusterV1Beta2Status
    (Optional)

    V1Beta2 groups all status fields that will be added in LXCCluster’s status with the v1beta2 version.

    LXCClusterTemplate

    LXCClusterTemplate is the Schema for the lxcclustertemplates API.

    Field Description
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCClusterTemplateSpec


    template
    LXCClusterTemplateResource

    LXCClusterTemplateResource

    (Appears on: LXCClusterTemplateSpec)

    LXCClusterTemplateResource describes the data needed to create a LXCCluster from a template.

    Field Description
    metadata
    sigs.k8s.io/cluster-api/api/v1beta1.ObjectMeta
    (Optional)

    Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCClusterSpec


    controlPlaneEndpoint
    sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint

    ControlPlaneEndpoint represents the endpoint to communicate with the control plane.

    secretRef
    SecretRef

    SecretRef references a secret with credentials to access the LXC (e.g. Incus, LXD) server.

    loadBalancer
    LXCClusterLoadBalancer

    LoadBalancer is configuration for provisioning the load balancer of the cluster.

    unprivileged
    bool
    (Optional)

    Unprivileged will launch unprivileged LXC containers for the cluster machines.

    Known limitations apply for unprivileged LXC containers (e.g. cannot use NFS volumes).

    skipDefaultKubeadmProfile
    bool
    (Optional)

    Do not apply the default kubeadm profile on container instances.

    In this case, the cluster administrator is responsible to create the profile manually and set the .spec.template.spec.profiles field of all LXCMachineTemplate objects.

    For more details on the default kubeadm profile that is applied, see https://lxc.github.io/cluster-api-provider-incus/reference/profile/kubeadm.html

    LXCClusterTemplateSpec

    (Appears on: LXCClusterTemplate)

    LXCClusterTemplateSpec defines the desired state of LXCClusterTemplate.

    Field Description
    template
    LXCClusterTemplateResource

    LXCClusterV1Beta2Status

    (Appears on: LXCClusterStatus)

    LXCClusterV1Beta2Status groups all the fields that will be added or modified in LXCCluster with the V1Beta2 version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

    Field Description
    conditions
    []Kubernetes meta/v1.Condition
    (Optional)

    conditions represents the observations of a LXCCluster’s current state. Known condition types are Ready, LoadBalancerAvailable, Deleting, Paused.

    LXCLoadBalancerExternal

    (Appears on: LXCClusterLoadBalancer)

    LXCLoadBalancerInstance

    (Appears on: LXCClusterLoadBalancer)

    Field Description
    instanceSpec
    LXCLoadBalancerMachineSpec
    (Optional)

    InstanceSpec can be used to adjust the load balancer instance configuration.

    LXCLoadBalancerMachineSpec

    (Appears on: LXCLoadBalancerInstance)

    LXCLoadBalancerMachineSpec is configuration for the container that will host the cluster load balancer, when using the “lxc” or “oci” load balancer type.

    Field Description
    flavor
    string
    (Optional)

    Flavor is configuration for the instance size (e.g. t3.micro, or c2-m4).

    Examples:

    • t3.micro – match specs of an EC2 t3.micro instance
    • c2-m4 – 2 cores, 4 GB RAM
    profiles
    []string
    (Optional)

    Profiles is a list of profiles to attach to the instance.

    image
    LXCMachineImageSource
    (Optional)

    Image to use for provisioning the load balancer machine. If not set, a default image based on the load balancer type will be used.

    • “oci”: ghcr.io/neoaggelos/cluster-api-provider-lxc/haproxy:v0.0.1
    • “lxc”: haproxy from the default simplestreams server
    target
    string
    (Optional)

    Target where the load balancer machine should be provisioned, when infrastructure is a production cluster.

    Can be one of:

    • name: where name is the name of a cluster member.
    • @name: where name is the name of a cluster group.

    Target is ignored when infrastructure is single-node (e.g. for development purposes).

    For more information on cluster groups, you can refer to https://linuxcontainers.org/incus/docs/main/explanation/clustering/#cluster-groups

    LXCLoadBalancerOVN

    (Appears on: LXCClusterLoadBalancer)

    Field Description
    networkName
    string

    NetworkName is the name of the network to create the load balancer.

    LXCMachine

    LXCMachine is the Schema for the lxcmachines API.

    Field Description
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCMachineSpec


    providerID
    string
    (Optional)

    ProviderID is the container name in ProviderID format (lxc:///).

    instanceType
    string
    (Optional)

    InstanceType is “container” or “virtual-machine”. Empty defaults to “container”.

    flavor
    string
    (Optional)

    Flavor is configuration for the instance size (e.g. t3.micro, or c2-m4).

    Examples:

    • t3.micro – match specs of an EC2 t3.micro instance
    • c2-m4 – 2 cores, 4 GB RAM
    profiles
    []string
    (Optional)

    Profiles is a list of profiles to attach to the instance.

    devices
    []string
    (Optional)

    Devices allows overriding the configuration of the instance disk or network.

    Device configuration must be formatted using the syntax “,=”.

    For example, to specify a different network for an instance, you can use:

      # override device "eth0", to be of type "nic" and use network "my-network"
    devices:
    - eth0,type=nic,network=my-network
    
    config
    map[string]string
    (Optional)

    Config allows overriding instance configuration keys.

    Note that the provider will always set the following configuration keys:

    • “cloud-init.user-data”: cloud-init config data
    • “user.cluster-name”: name of owning cluster
    • “user.cluster-namespace”: namespace of owning cluster
    • “user.cluster-role”: instance role (e.g. control-plane, worker)
    • “user.machine-name”: name of machine (should match instance hostname)

    See https://linuxcontainers.org/incus/docs/main/reference/instance_options/#instance-options for details.

    image
    LXCMachineImageSource
    (Optional)

    Image to use for provisioning the machine. If not set, a kubeadm image from the default upstream simplestreams source will be used, based on the version of the machine.

    Note that the default source does not support images for all Kubernetes versions, refer to the documentation for more details on which versions are supported and how to build a base image for any version.

    target
    string
    (Optional)

    Target where the machine should be provisioned, when infrastructure is a production cluster.

    Can be one of:

    • name: where name is the name of a cluster member.
    • @name: where name is the name of a cluster group.

    Target is ignored when infrastructure is single-node (e.g. for development purposes).

    For more information on cluster groups, you can refer to https://linuxcontainers.org/incus/docs/main/explanation/clustering/#cluster-groups

    status
    LXCMachineStatus

    LXCMachineImageSource

    (Appears on: LXCLoadBalancerMachineSpec, LXCMachineSpec)

    Field Description
    name
    string
    (Optional)

    Name is the image name or alias.

    Note that Incus and Canonical LXD use incompatible image servers for Ubuntu images. To address this issue, setting image name to ubuntu:VERSION is a shortcut for:

    fingerprint
    string
    (Optional)

    Fingerprint is the image fingerprint.

    server
    string
    (Optional)

    Server is the remote server, e.g. “https://images.linuxcontainers.org”

    protocol
    string
    (Optional)

    Protocol is the protocol to use for fetching the image, e.g. “simplestreams”.

    LXCMachineSpec

    (Appears on: LXCMachine, LXCMachineTemplateResource)

    LXCMachineSpec defines the desired state of LXCMachine.

    Field Description
    providerID
    string
    (Optional)

    ProviderID is the container name in ProviderID format (lxc:///).

    instanceType
    string
    (Optional)

    InstanceType is “container” or “virtual-machine”. Empty defaults to “container”.

    flavor
    string
    (Optional)

    Flavor is configuration for the instance size (e.g. t3.micro, or c2-m4).

    Examples:

    • t3.micro – match specs of an EC2 t3.micro instance
    • c2-m4 – 2 cores, 4 GB RAM
    profiles
    []string
    (Optional)

    Profiles is a list of profiles to attach to the instance.

    devices
    []string
    (Optional)

    Devices allows overriding the configuration of the instance disk or network.

    Device configuration must be formatted using the syntax “,=”.

    For example, to specify a different network for an instance, you can use:

      # override device "eth0", to be of type "nic" and use network "my-network"
    devices:
    - eth0,type=nic,network=my-network
    
    config
    map[string]string
    (Optional)

    Config allows overriding instance configuration keys.

    Note that the provider will always set the following configuration keys:

    • “cloud-init.user-data”: cloud-init config data
    • “user.cluster-name”: name of owning cluster
    • “user.cluster-namespace”: namespace of owning cluster
    • “user.cluster-role”: instance role (e.g. control-plane, worker)
    • “user.machine-name”: name of machine (should match instance hostname)

    See https://linuxcontainers.org/incus/docs/main/reference/instance_options/#instance-options for details.

    image
    LXCMachineImageSource
    (Optional)

    Image to use for provisioning the machine. If not set, a kubeadm image from the default upstream simplestreams source will be used, based on the version of the machine.

    Note that the default source does not support images for all Kubernetes versions, refer to the documentation for more details on which versions are supported and how to build a base image for any version.

    target
    string
    (Optional)

    Target where the machine should be provisioned, when infrastructure is a production cluster.

    Can be one of:

    • name: where name is the name of a cluster member.
    • @name: where name is the name of a cluster group.

    Target is ignored when infrastructure is single-node (e.g. for development purposes).

    For more information on cluster groups, you can refer to https://linuxcontainers.org/incus/docs/main/explanation/clustering/#cluster-groups

    LXCMachineStatus

    (Appears on: LXCMachine)

    LXCMachineStatus defines the observed state of LXCMachine.

    Field Description
    ready
    bool
    (Optional)

    Ready denotes that the LXC machine is ready.

    loadBalancerConfigured
    bool
    (Optional)

    LoadBalancerConfigured will be set to true once for each control plane node, after the load balancer instance is reconfigured.

    addresses
    []sigs.k8s.io/cluster-api/api/v1beta1.MachineAddress
    (Optional)

    Addresses is the list of addresses of the LXC machine.

    conditions
    sigs.k8s.io/cluster-api/api/v1beta1.Conditions
    (Optional)

    Conditions defines current service state of the LXCMachine.

    v1beta2
    LXCMachineV1Beta2Status
    (Optional)

    V1Beta2 groups all status fields that will be added in LXCMachine’s status with the v1beta2 version.

    LXCMachineTemplate

    LXCMachineTemplate is the Schema for the lxcmachinetemplates API.

    Field Description
    metadata
    Kubernetes meta/v1.ObjectMeta
    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCMachineTemplateSpec


    template
    LXCMachineTemplateResource

    LXCMachineTemplateResource

    (Appears on: LXCMachineTemplateSpec)

    LXCMachineTemplateResource describes the data needed to create a LXCMachine from a template.

    Field Description
    metadata
    sigs.k8s.io/cluster-api/api/v1beta1.ObjectMeta
    (Optional)

    Standard object’s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    Refer to the Kubernetes API documentation for the fields of the metadata field.
    spec
    LXCMachineSpec

    Spec is the specification of the desired behavior of the machine.



    providerID
    string
    (Optional)

    ProviderID is the container name in ProviderID format (lxc:///).

    instanceType
    string
    (Optional)

    InstanceType is “container” or “virtual-machine”. Empty defaults to “container”.

    flavor
    string
    (Optional)

    Flavor is configuration for the instance size (e.g. t3.micro, or c2-m4).

    Examples:

    • t3.micro – match specs of an EC2 t3.micro instance
    • c2-m4 – 2 cores, 4 GB RAM
    profiles
    []string
    (Optional)

    Profiles is a list of profiles to attach to the instance.

    devices
    []string
    (Optional)

    Devices allows overriding the configuration of the instance disk or network.

    Device configuration must be formatted using the syntax “,=”.

    For example, to specify a different network for an instance, you can use:

      # override device "eth0", to be of type "nic" and use network "my-network"
    devices:
    - eth0,type=nic,network=my-network
    
    config
    map[string]string
    (Optional)

    Config allows overriding instance configuration keys.

    Note that the provider will always set the following configuration keys:

    • “cloud-init.user-data”: cloud-init config data
    • “user.cluster-name”: name of owning cluster
    • “user.cluster-namespace”: namespace of owning cluster
    • “user.cluster-role”: instance role (e.g. control-plane, worker)
    • “user.machine-name”: name of machine (should match instance hostname)

    See https://linuxcontainers.org/incus/docs/main/reference/instance_options/#instance-options for details.

    image
    LXCMachineImageSource
    (Optional)

    Image to use for provisioning the machine. If not set, a kubeadm image from the default upstream simplestreams source will be used, based on the version of the machine.

    Note that the default source does not support images for all Kubernetes versions, refer to the documentation for more details on which versions are supported and how to build a base image for any version.

    target
    string
    (Optional)

    Target where the machine should be provisioned, when infrastructure is a production cluster.

    Can be one of:

    • name: where name is the name of a cluster member.
    • @name: where name is the name of a cluster group.

    Target is ignored when infrastructure is single-node (e.g. for development purposes).

    For more information on cluster groups, you can refer to https://linuxcontainers.org/incus/docs/main/explanation/clustering/#cluster-groups

    LXCMachineTemplateSpec

    (Appears on: LXCMachineTemplate)

    LXCMachineTemplateSpec defines the desired state of LXCMachineTemplate.

    Field Description
    template
    LXCMachineTemplateResource

    LXCMachineV1Beta2Status

    (Appears on: LXCMachineStatus)

    LXCMachineV1Beta2Status groups all the fields that will be added or modified in LXCMachine with the V1Beta2 version. See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.

    Field Description
    conditions
    []Kubernetes meta/v1.Condition
    (Optional)

    conditions represents the observations of a LXCMachine’s current state. Known condition types are Ready, InstanceProvisioned, Deleting, Paused.

    SecretRef

    (Appears on: LXCClusterSpec)

    SecretRef is a reference to a secret in the cluster.

    Field Description
    name
    string

    Name is the name of the secret to use. The secret must already exist in the same namespace as the parent object.


    Generated with gen-crd-api-reference-docs.