Skip to content

Cluster

The no-op cluster module stands in for what a real cluster module creates around a workload cluster’s nodes. Its image is ghcr.io/captf-io/noop-cluster.

What it creates

One terraform_data resource, load_balancer, the stand-in for a load balancer and a network. It holds the inputs below, so a change to any of them shows as a change in the plan. Its id feeds the exports, so machines receive a value that exists only after this module applied.

Inputs

The module declares the contract inputs only; it has no variables of its own, so spec.variables has nothing to set.

Input Use
captf_contract Declared, as the contract requires
captf_cluster, captf_object Recorded; the object’s name also names the default endpoint
captf_tags Recorded
control_plane_endpoint Returned as the endpoint when set
kubernetes_version, control_plane_initialized, cluster_network Recorded

Outputs

Output Value
control_plane_endpoint control_plane_endpoint when set; otherwise host noop-<name>.invalid, port 6443
failure_domains One failure domain, fd1, eligible for the control plane
exports { backend_id = "noop-backend-<id>" }, the stand-in load balancer’s id
health Always running and healthy

The .invalid top-level domain never resolves (RFC 2606), so the default endpoint is valid and stable but reaches nothing.

Health

The module always reports running and healthy: there is no infrastructure to check.

Limitations

  • The endpoint reaches nothing. No load balancer exists behind it.
  • One failure domain. Machines and pools all land in fd1.

Example

terraformcluster.yaml
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
kind: TerraformCluster
metadata:
  name: demo
spec:
  source:
    image: ghcr.io/captf-io/noop-cluster:opentofu
  identityRef:
    name: noop
  defaults:
    identityRef:
      name: noop