Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
198 changes: 198 additions & 0 deletions edge-ai/autoinstaller.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
---
title: "Autoinstaller"
sidebarTitle: "Autoinstaller"

Check warning on line 3 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L3

Did you really mean 'Autoinstaller'?
---

The Everywhere AI autoinstaller is a command-line tool that automates platform deployment on Kubernetes clusters. Instead of manual component installation, administrators run a single utility with a configuration file.

Check warning on line 6 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L6

Did you really mean 'autoinstaller'?

The installer uses a GitOps approach: it bootstraps Argo CD and a Git repository on the master cluster, then sequentially deploys Argo Applications for each platform component. Argo CD synchronizes the desired state from the repository to the cluster. Configuration parameters and credentials are stored in Kubernetes secrets, making the deployment reproducible and auditable through standard Kubernetes tooling.

Check warning on line 8 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L8

Did you really mean 'auditable'?

## Prerequisites

### Kubernetes cluster

A Kubernetes cluster with administrative access serves as the master cluster. The cluster nodes must have the following labels assigned:

| Label | Minimum nodes | Description |
|-------|---------------|-------------|
| `worker` | — | General workload nodes |
| `infra` | 3 | Infrastructure components (minimum 3 for controller quorum) |
| `ingress` | 1 | Ingress controller nodes |

kubectl must be configured with access to the cluster.

### Container registry

A container registry with Everywhere AI component images must be accessible from the cluster:

- **Gcore-hosted registry**: The installer connects to Gcore's registry using provided credentials.

Check warning on line 28 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L28

Did you really mean 'Gcore's'?
- **Customer registry**: Images are pre-loaded into a private registry that the cluster can access.

<Warning>
Air-gapped environments require pre-loading all component images into a local registry before installation. This scenario is handled separately from the standard installation process.
</Warning>

### Domain

A base domain that the administrator can manage is required. DNS records are created under this domain for platform services.

## Configuration

The installer reads deployment parameters from two files: a main configuration file and a separate secrets file.

### Main configuration file

The main configuration file contains non-sensitive parameters:

```yaml
# Path to secrets file
secrets_path: /path/to/secrets.yaml

# Base domain for the installation
domain: box1.example.com

# Master cluster configuration
master:
name: master-cluster
kubeconfig: /path/to/kubeconfig

# Container registry
registry:
host: registry.example.com
```

### Secrets file

Sensitive credentials are stored in a separate file:

```yaml
# DNS provider API token
dns_token: <token>

# Container registry credentials
registry:
username: <username>
password: <password>
```

Separating secrets from the main configuration allows storing the configuration file in version control while keeping credentials on a secure medium.

## Installation process

The installation consists of sequential phases. Each phase must complete before proceeding to the next.

### Phase 1: Bootstrap master cluster

```bash
box-installer --config config.yaml install bootstrap-master
```

This command installs the core GitOps infrastructure:

| Component | Purpose |
|-----------|---------|
| Gitea | Lightweight Git server for storing Argo CD manifests |

Check warning on line 94 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L94

Did you really mean 'Gitea'?
| Argo CD | GitOps controller that synchronizes cluster state from Git |
| Vault | Central secrets storage |
| External Secrets | Operator that syncs secrets from Vault to Kubernetes |

The installer creates two repositories in Gitea:

Check warning on line 99 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L99

Did you really mean 'Gitea'?
- **box-cluster**: Argo CD Application manifests
- **box-helmli**: Helm charts for components

### Phase 2: Certificates (optional)

If automatic certificate management is required:

```bash
box-installer --config config.yaml install cert-manager
box-installer --config config.yaml install dns-provider
```

The `cert-manager` command installs Cert Manager. The `dns-provider` command configures the DNS provider for DNS-01 challenge validation.

Certificates can also be installed manually. Three certificates with specific names are required. After creating certificates manually, proceed to the next phase.

### Phase 3: Infrastructure

```bash
box-installer --config config.yaml install infra
```

Installs infrastructure components including gateways and networking. Platform components depend on this infrastructure to receive external IPs and route traffic.

Check warning on line 122 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L122

Did you really mean 'IPs'?

### Phase 4: Platform components

```bash
box-installer --config config.yaml install box-stack
```

Installs the main platform components. Components are deployed in dependency order — each component waits for its dependencies to become healthy before proceeding.

### Phase 5: Finalize

```bash
box-installer --config config.yaml install commit
```

Activates GitOps synchronization and verifies that all components are healthy.

## Verifying the installation

After installation, verify cluster status:

```bash
box-installer --config config.yaml install list-clusters
```

This command shows registered clusters and their connectivity status.

## Multi-cluster deployments

For deployments spanning multiple clusters, the configuration file specifies additional clusters. The installer connects to each cluster and deploys region-specific components. The master cluster remains the central point where Argo CD and Vault run. All other clusters connect to the master Vault instance.

## Troubleshooting

### Viewing credentials

To access Gitea or Argo CD dashboards:

Check warning on line 158 in edge-ai/autoinstaller.mdx

View check run for this annotation

Mintlify / Mintlify Validation (gcore) - vale-spellcheck

edge-ai/autoinstaller.mdx#L158

Did you really mean 'Gitea'?

```bash
box-installer --config config.yaml dev show-bootstrap-creds
```

### Checking registry connectivity

To verify that the cluster can access the container registry:

```bash
box-installer --config config.yaml dev check-registry
```

### Inspecting rendered manifests

To see what manifests will be deployed without applying them:

```bash
box-installer --config config.yaml dev render-repo
```

### Repeating failed steps

If a step fails due to a transient error, the same command can be run again. The installer handles repeated runs.

If the repository already exists and needs to be overwritten:

```bash
box-installer --config config.yaml install bootstrap-master --force
```

The `--force` flag allows overwriting existing repository contents.

### Additional commands

| Command | Description |
|---------|-------------|
| `dev conf-dump` | Display validated configuration |
| `dev runtime-conf-dump` | Display runtime configuration including resolved secrets |
| `dev show-release` | Display embedded release configuration and component versions |