Skip to content

Prerequisites

The Control Node serves as the central management hub for your OtterScale deployment. Before proceeding with installation, verify that your designated control node machine meets the following requirements.

Install Ubuntu 24.04 LTS on your control node. If your machine runs a different OS, perform a clean installation of Ubuntu 24.04 LTS first.

ComponentRequirement
OSUbuntu 24.04 LTS (Required)

Ensure your control node hardware meets or exceeds these minimum specifications. Higher resources will improve performance and stability.

ResourceMinimum Requirement
CPU8 Cores
Memory16 GB RAM
Disk Space100 GB available storage

The OtterScale installer will automatically configure networking, but confirm the following prerequisites:

  • Connectivity: Ensure at least one network interface has external internet access.
  • Bridge Configuration: The installer checks for a network bridge named br-otters.
    • If it exists, the installer will use it.
    • If not, you will be prompted to select an existing bridge or allow the installer to create one automatically.

K8S nodes are the servers that will form your Kubernetes cluster. These nodes must be commissioned via the OtterScale web interface after creating a Scope, and then provisioned. Ensure each server host is configured as follows before commissioning.

Access your server’s BIOS settings (typically by pressing F2, F10, or Del during boot) and configure the following settings:

  1. BMC Settings:
    • BMC Static IP: Assign a static IP address to the BMC for reliable remote management access.
    • Boot Order: Enable network boot via BMC and set it as the highest priority in the boot order.
  2. Boot Options:
    • Boot Mode: Set to UEFI (recommended for modern deployments).
      • Avoid Legacy mode, as it limits drive size to 2TB, lacks security features, and does not support GPT partitioning.
    • Fast Boot: Disable Fast Boot to allow complete hardware initialization.
  3. CPU Virtualization:
    • Intel CPUs: Enable VMX, VT-d, or VT-x.
    • AMD CPUs: Enable SVM or AMD-V.

Verify that each K8S node meets these storage requirements for optimal performance.

ResourceMinimum Requirement
StorageAt least 2 Block disks or 2 Physical drives

Plan your network IP allocation carefully to prevent conflicts. Ensure your subnet has sufficient available IP addresses for the OtterScale deployment.

UsageQuantityDescription
OS System1Reserved for the ingress controller.
OtterScale1Required from user. A second IP in the same subnet for OtterScale services.
Juju Controller1Used by the Canonical Juju controller.
MAAS (DHCP)2Used for MAAS dynamic IP allocation.
Kubernetes and Ceph9 + NUsed for Kubernetes and Ceph services (N = number of K8S nodes).

Total Estimated IPs: 14 + N (where N is the number of K8S nodes)


The OtterScale installation process requires outbound internet access to various external services. Configure your firewall to allow outbound connections to the following domains and ports on all nodes (Control Node and K8S nodes).

Canonical
DomainsPort(s)
api.charmhub.ioTCP 443 (HTTPS)
api.jujucharms.comTCP 443 (HTTPS)
changelogs.ubuntu.comTCP 443 (HTTPS)
charmhub.ioTCP 443 (HTTPS)
cloud-images.ubuntu.comTCP 443 (HTTPS)
maas.ubuntu.comTCP 443 (HTTPS)
images.maas.ioTCP 443 (HTTPS)
juju.isTCP 443 (HTTPS)
jaas.aiTCP 443 (HTTPS)
streams.canonical.comTCP 443 (HTTPS)
objects.githubusercontent.comTCP 443 (HTTPS)
contracts.canonical.comTCP 443 (HTTPS)
images.maas.ioTCP 80 (HTTP)
Snap Package
DomainsPort(s)
snapcraft.ioTCP 443 (HTTPS)
api.snapcraft.ioTCP 443 (HTTPS)
storage.snapcraftcontent.comTCP 443 (HTTPS)
canonical-lgw01.cdn.snapcraftcontent.comTCP 443 (HTTPS)
canonical-lcy01.cdn.snapcraftcontent.comTCP 443 (HTTPS)
canonical-lcy02.cdn.snapcraftcontent.comTCP 443 (HTTPS)
canonical-bos01.cdn.snapcraftcontent.comTCP 443 (HTTPS)
Ubuntu Repositories
DomainsPort(s)
tw.archive.ubuntu.comTCP 443 (HTTPS)
TCP 80 (HTTP)
archive.ubuntu.comTCP 443 (HTTPS)
TCP 80 (HTTP)
ports.ubuntu.comTCP 443 (HTTPS)
TCP 80 (HTTP)
security.ubuntu.comTCP 443 (HTTPS)
TCP 80 (HTTP)
esm.ubuntu.comTCP 443 (HTTPS)
TCP 80 (HTTP)
GitHub
DomainsPort(s)
github.comTCP 443 (HTTPS)
raw.githubusercontent.comTCP 443 (HTTPS)
release-assets.githubusercontent.comTCP 443 (HTTPS)
Kubernetes
DomainsPort(s)
registry.k8s.ioTCP 443 (HTTPS)
k8s.gcr.ioTCP 443 (HTTPS)
ghcr.ioTCP 443 (HTTPS)
corednsTCP 443 (HTTPS)
d39mqg4b1dx9z1.cloudfront.netTCP 443 (HTTPS)
storage.googleapis.comTCP 443 (HTTPS)
nvcr.ioTCP 443 (HTTPS)
auth.docker.ioTCP 443 (HTTPS)
auth.docker.comTCP 443 (HTTPS)
login.docker.comTCP 443 (HTTPS)
cdn.auth0.comTCP 443 (HTTPS)
docker.ioTCP 443 (HTTPS)
hub.docker.comTCP 443 (HTTPS)
registry-1.docker.ioTCP 443 (HTTPS)
index.docker.ioTCP 443 (HTTPS)
production.cloudflare.docker.comTCP 443 (HTTPS)
docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.comTCP 443 (HTTPS)
registry.cn-hangzhou.aliyuncs.comTCP 443 (HTTPS)
HuggingFace
DomainsPort(s)
huggingface.coTCP 443 (HTTPS)
cdn-lfs.huggingface.coTCP 443 (HTTPS)
cdn.huggingface.coTCP 443 (HTTPS)
RedHat Models
DomainsPort(s)
registry.redhat.ioTCP 443 (HTTPS)
quay.ioTCP 443 (HTTPS)
registry.access.redhat.comTCP 443 (HTTPS)
HELM Charts
DomainsPort(s)Description
otterscale.github.ioTCP 443 (HTTPS)#OtterScale
charts.jetstack.ioTCP 443 (HTTPS)#Cert-manager
open-feature.github.ioTCP 443 (HTTPS)#Open-feature
istio-release.storage.googleapis.comTCP 443 (HTTPS)#Istio
prometheus-community.github.ioTCP 443 (HTTPS)#prometheus
project-hami.github.ioTCP 443 (HTTPS)#HAMi
helm.ngc.nvidia.comTCP 443 (HTTPS)#Nvidia
cloudnative-pg.github.io/chartsTCP 443 (HTTPS)#CloudNative
llm-d.aiTCP 443 (HTTPS)#llm-d
codecentric.github.ioTCP 443 (HTTPS)#KeyCloak
charts.bitnami.comTCP 443 (HTTPS)#Bitnami