@nodevisor/cluster
v0.0.83
Published
Module provides ability to manage cluster of services
Downloads
50
Readme
@nodevisor/cluster
Abstract cluster primitives for multi-node orchestration — nodes, services, users, and deployment.
Part of Nodevisor — TypeScript Infrastructure Automation Platform
Install
npm install @nodevisor/clusterQuick Start
In practice, you'll use @nodevisor/docker which extends these abstractions with Docker-specific implementations.
import { ClusterUser, Mode } from '@nodevisor/cluster';
import { DockerCluster, DockerNode } from '@nodevisor/docker';
const cluster = new DockerCluster({
name: 'production',
nodes: [
new DockerNode({ host: '10.0.0.1' }),
new DockerNode({ host: '10.0.0.2' }),
],
users: [
new ClusterUser({
username: 'root',
privateKeyPath: '~/.ssh/id_ed25519',
}),
],
});
await cluster.setup();
await cluster.deploy();Core Abstractions
ClusterService
Define deployable services with ports, resources, environment, and more.
ClusterNode
Represents a server in the cluster. The setup() method installs packages, configures firewall, adds SSH keys, and creates deploy users.
Cluster
Orchestrates nodes and services together.
| Method | Description |
|--------|-------------|
| addDependency(service) | Add a service to the cluster |
| getDependencies() | Get all cluster services |
| setup() | Setup all nodes |
| build(options?) | Build all service images |
| deploy(options?) | Deploy all services |
| deployLocal(options?) | Deploy locally for development |
| run(service, options?) | Run a one-off service |
ClusterUser
SSH credentials for connecting to cluster nodes.
const admin = new ClusterUser({
username: 'root',
privateKeyPath: '~/.ssh/id_ed25519',
publicKeyPath: '~/.ssh/id_ed25519.pub',
});Enums
enum Mode {
GLOBAL = 'GLOBAL', // One instance per node
REPLICATED = 'REPLICATED', // Specified number of replicas
}
enum ClusterType {
DOCKER_SWARM = 'DOCKER_SWARM',
DOCKER_COMPOSE = 'DOCKER_COMPOSE',
}Related Packages
@nodevisor/docker— Concrete Docker implementation of cluster@nodevisor/builder— Image building interface@nodevisor/registry— Container registry interface
Documentation
Full documentation available at nodevisor.com/docs/packages/cluster
License
Nodevisor uses a single O'Saasy license across all packages and applications. See the full terms in LICENSE.
