Skip to main content

Host Groups

A host group is a set of one or more wasmCloud host pods that run your Wasm workloads. Every Cosmonic Control installation needs at least one host group. Each pod runs a wasmCloud host that connects to Control's nexus NATS service and registers itself as available for workload scheduling.

Host groups are deployed with the cosmonic-control-hostgroup Helm chart — not as a Kubernetes custom resource. There is no HostGroup CRD to kubectl apply; you install, scale, and configure a host group entirely through Helm values. (An earlier k8s.cosmonic.io HostGroup CRD was removed from Cosmonic Control in favor of this chart.)

Host groups and hosts

Each pod a host group creates runs one wasmCloud host, represented in the cluster by the Host resource (runtime.wasmcloud.dev/v1alpha1). A host group is therefore a horizontally scalable Deployment of hosts that share the same configuration and serve the same kind of workloads. Cosmonic Control load-balances workloads across all available hosts in a group (round-robin) and redistributes them if a host crashes.

Components scheduled onto the same host pod remain sandbox-isolated from one another — there is no shared memory or direct call path between components in different namespaces unless an explicit link is declared.

Scheduling and labels

A host group carries a name and an optional environment and labels that the scheduler uses to place workloads:

  • hostgroup — the group's name, reported by every host in the group (as the cosmonic.io/hostgroup label) and used in scheduling decisions. Use a distinct name for each different type of host.
  • environment — hosts only run workloads from HTTPTriggers (and other resources) whose spec.environment matches. When empty, the host reads its environment from the pod (defaulting to the pod's namespace). A trigger with no environment is left unpinned and may land on any host, including a shared group.

To confine a tenant's workloads to a specific group, set HTTPTrigger.spec.environment — or a WorkloadDeployment hostSelector matching the group's hostgroup name — accordingly. See Multitenancy for the full isolation model.

Key chart values

ValueDefaultPurpose
hostgroupdefaultGroup name used in scheduling decisions
environment"" (pod namespace)Restricts which triggers schedule onto this group
replicaCount1Number of host pods; scale horizontally
controlNamespacecosmonic-systemNamespace where Cosmonic Control is installed
nexus.url"" (templated)NATS control-plane connection to Nexus
gpufalsePasses --wasi-webgpu so workloads can call wasi:webgpu
resources250m CPU request, 512Mi memory limitPer-pod requests and limits

Install

helm install hostgroup oci://ghcr.io/cosmonic/cosmonic-control-hostgroup \
  --version 0.8.1 \
  --namespace cosmonic-system

Wait for it to be ready:

kubectl rollout status deploy -l app.kubernetes.io/instance=hostgroup -n cosmonic-system

For the full value reference and operational procedures — scaling, running multiple groups, and GPU groups — see Installing HostGroups in the Operator Manual.