Parent: #441
Summary
Add Kubernetes as a configurable Manager node type and persist the connection settings required by the Kubernetes provider.
This issue only establishes the Manager-side node configuration and provider dispatch. Actual Kubernetes API operations and workload management will be implemented in follow-up issues.
Scope
- Add
kubernetes as a valid nodeType.
- Add Kubernetes node configuration fields:
kubeconfigPath
kubeContext
kubeNamespace
- Default
kubeNamespace to default.
- Add a backwards-compatible Sequelize migration.
- Update node create/update validation.
- Update
Node.hasApiAccess().
- Update
Node.provisionableWhere().
- Add Kubernetes dispatch in
Node.api().
- Add a minimal
KubernetesApi provider skeleton.
- Update node serialization.
- Update OpenAPI.
- Update client TypeScript types.
- Update node create/edit UI.
- Add tests for configuration and provider dispatch.
Security
- Do not expose kubeconfig contents through API responses.
- Do not log Kubernetes credentials, certificates, or tokens.
- TLS verification should remain enabled by default.
Acceptance criteria
Out of scope
- Connecting to the Kubernetes API
- Cluster discovery
- Deployment creation
- Workload lifecycle
- Reconfiguration
- Kubernetes Services, Ingress, or storage
Parent: #441
Summary
Add Kubernetes as a configurable Manager node type and persist the connection settings required by the Kubernetes provider.
This issue only establishes the Manager-side node configuration and provider dispatch. Actual Kubernetes API operations and workload management will be implemented in follow-up issues.
Scope
kubernetesas a validnodeType.kubeconfigPathkubeContextkubeNamespacekubeNamespacetodefault.Node.hasApiAccess().Node.provisionableWhere().Node.api().KubernetesApiprovider skeleton.Security
Acceptance criteria
kubernetesis accepted as a node type.Node.api()dispatches Kubernetes nodes toKubernetesApi.hasApiAccess()supports Kubernetes.provisionableWhere()supports Kubernetes.Out of scope