hashgraph / hashgraph/solo-weaver
kube cluster install: multi-type --node-type hardware-floor sizing
- Dominant language
- Go
- Stars
- 3
- Forks
- 0
- Avg merge
- 3d 5h
- Merged PRs (30d)
- 47
Description
## Summary
`kube cluster install` accepts `--node-type` as a comma-separated list of the components that will run on the cluster (drives CRD/operator install). `--profile` sizes the preflight hardware floor but currently requires a **single** `--node-type` — multi-type sizing (e.g. `--node-type consensus,block --profile local`) is rejected with a clear error.
Implement multi-type hardware-floor sizing so a host intended to run multiple components can be validated in one cluster install.
## Design questions
- **Composition:** how to combine per-type floors — **sum** (correct when both workloads share the host, e.g. single-node/dev), **max** (loose upper bound), or validate each independently. `hardware.DeploymentSpec` currently carries a single `NodeType`, so this needs a multi-type spec or an aggregation step.
- **Topology awareness:** on a multi-node cluster, components land on different nodes (affinity), so summing onto the install host is only right for co-located/single-node. Consider whether sizing should stay single-host (the machine running install) or model per-role nodes.
## Current behavior (already implemented)
- `--node-type consensus,block` → installs the solo-operator (any operator-based component ⇒ the single cluster-scoped operator, which bundles all CRDs). Block node is helm-only today; it becomes operator-based later, at which point it joins `operatorBasedNodeTypes` in `cmd/cli/commands/kube/cluster/install.go`.
- `--node-type` may stand alone (dependencies only, substrate floor).
- `--profile` requires `--node-type`, single type only (this ticket lifts the single-type restriction).
## Context
From the consensus-install branch (feat/01044-consensus-node-install). Related: the `--resource-size` presets ticket #1116 (consensus-node container sizing) and the diagnostics epic #1110.
Contributor guide
Research direction
Start in cmd/cli/commands/kube/cluster/install.go, then inspect hardware.DeploymentSpec and the existing --node-type and --profile validation. Decide how multi-type floors should compose and how topology affects sizing before implementing the behavior. Done means a multi-type node selection with a profile is accepted and validates the intended hardware floor without breaking single-type cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, kubernetes
- Domain
- cli, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100