diff --git a/astro.config.mjs b/astro.config.mjs index 373716a..324a853 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -18,6 +18,7 @@ export default defineConfig({ logo: { src: './src/assets/logo.png' }, + favicon: '/logo.png', social: [ { icon: 'github', @@ -47,14 +48,14 @@ export default defineConfig({ }, { - label: 'basic', + label: 'Basic', translations: { 'zh-Hant': '基本' }, autogenerate: { directory: 'basic' } }, { - label: 'service', + label: 'Service', translations: { 'zh-Hant': '服務' }, diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..cdd69ff Binary files /dev/null and b/public/logo.png differ diff --git a/src/assets/logo2.png b/src/assets/logo2.png new file mode 100644 index 0000000..0facec1 Binary files /dev/null and b/src/assets/logo2.png differ diff --git a/src/content/docs/getting-started/01-prerequisites.md b/src/content/docs/getting-started/01-prerequisites.mdx similarity index 67% rename from src/content/docs/getting-started/01-prerequisites.md rename to src/content/docs/getting-started/01-prerequisites.mdx index 9b5b63f..2dda5ab 100644 --- a/src/content/docs/getting-started/01-prerequisites.md +++ b/src/content/docs/getting-started/01-prerequisites.mdx @@ -3,6 +3,8 @@ title: Prerequisites description: Hardware and network requirements for running OtterScale. --- +import { Card, CardGrid, Aside, Tabs, TabItem, Badge } from '@astrojs/starlight/components'; + ## System Requirements Before installing OtterScale, ensure your environment meets the following specifications. @@ -13,7 +15,7 @@ Before installing OtterScale, ensure your environment meets the following specif | :-------- | :------------------------------ | | **OS** | **Ubuntu 24.04 LTS** (Required) | -### Hardware Specifications +### Hardware | Resource | Minimum Requirement | | :------------- | :----------------------- | @@ -33,16 +35,18 @@ Before installing OtterScale, ensure your environment meets the following specif The installation process requires outbound access to various external services. Please whitelist the following domains and ports. -### Core Infrastructure + + -| Service Group | Port(s) | Domains | -| :---------------------- | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Canonical Services** | TCP 443 (HTTPS)
TCP 80 (HTTP)\* | `api.charmhub.io`, `api.jujucharms.com`, `changelogs.ubuntu.com`, `charmhub.io`, `cloud-images.ubuntu.com`, `maas.ubuntu.com`, `images.maas.io`\*, `juju.is`, `jaas.ai`, `streams.canonical.com`, `objects.githubusercontent.com`, `contracts.canonical.com` | -| **Snap Store** | TCP 443 | `snapcraft.io`, `api.snapcraft.io`, `storage.snapcraftcontent.com`, `*.cdn.snapcraftcontent.com` | -| **Ubuntu Repos** | TCP 443, 80 | `archive.ubuntu.com`, `security.ubuntu.com`, `esm.ubuntu.com`, `ports.ubuntu.com`, `tw.archive.ubuntu.com` | -| **GitHub & OtterScale** | TCP 443, 80 | `otterscale.github.io`, `otterscale.com`, `github.com`, `raw.githubusercontent.com` | +| Service Group | Port(s) | Domains | +| :---------------------- | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Canonical Services** | TCP 443 (HTTPS)
TCP 80 (HTTP)\* | `api.charmhub.io`, `api.jujucharms.com`, `changelogs.ubuntu.com`, `charmhub.io`, `cloud-images.ubuntu.com`, `maas.ubuntu.com`, `images.maas.io`\*, `juju.is`, `jaas.ai`, `streams.canonical.com`, `objects.githubusercontent.com`, `contracts.canonical.com` | +| **Snap Store** | TCP 443 | `snapcraft.io`, `api.snapcraft.io`, `storage.snapcraftcontent.com`, `*.cdn.snapcraftcontent.com` | +| **Ubuntu Repos** | TCP 443, 80 | `archive.ubuntu.com`, `security.ubuntu.com`, `esm.ubuntu.com`, `ports.ubuntu.com`, `tw.archive.ubuntu.com` | +| **GitHub & OtterScale** | TCP 443, 80 | `otterscale.github.io`, `otterscale.com`, `github.com`, `raw.githubusercontent.com` | -### Container Registries & Images +
+ | Registry | Port | Domains | | :----------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------- | @@ -52,10 +56,14 @@ The installation process requires outbound access to various external services. | **Red Hat / Quay** | TCP 443 | `registry.redhat.io`, `quay.io`, `registry.access.redhat.com` | | **Others** | TCP 443 | `registry.cn-hangzhou.aliyuncs.com` | -### AI & Helm Resources + + | Category | Port | Domains | | :-------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **HuggingFace** | TCP 443 | `huggingface.co`, `cdn-lfs.huggingface.co`, `cdn.huggingface.co` | | **Istio** | TCP 443 | `istio.io` | | **Helm Charts** | TCP 443 | `charts.jetstack.io`, `charts.bitnami.com`, `open-feature.github.io`, `prometheus-community.github.io`, `project-hami.github.io`, `helm.ngc.nvidia.com`, `llm-d.ai` | + + +
diff --git a/src/content/docs/getting-started/02-installation.md b/src/content/docs/getting-started/02-installation.md deleted file mode 100644 index 71246c0..0000000 --- a/src/content/docs/getting-started/02-installation.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Installation -description: Step-by-step guide to installing OtterScale. ---- - -Follow the steps below to install and configure OtterScale. - -## Installation Process - -### 1. Start Services - -Run the following command to start the necessary services using Docker Compose: - -```bash -docker-compose up -d -``` - -### 2. Configure Installation - -Create an `install.cfg` file with the required configuration. You can use the following template: - -```bash title="install.cfg" -## MAAS DHCP Range IP -MAAS_DHCP_START_IP="192.168.197.216" -MAAS_DHCP_END_IP="192.168.197.219" - -## OtterScale Web IP -OTTERSCALE_WEB_IP="192.168.197.220" -``` - -Ensure that the IP addresses are correctly configured for your network environment. - -### 3. Run Installation Script - -Execute the installation script through the User Interface: - -1. Access the OtterScale UI. -2. Execute the `install.sh` script. diff --git a/src/content/docs/getting-started/02-installation.mdx b/src/content/docs/getting-started/02-installation.mdx new file mode 100644 index 0000000..03f1c8f --- /dev/null +++ b/src/content/docs/getting-started/02-installation.mdx @@ -0,0 +1,45 @@ +--- +title: Installation +description: Step-by-step guide to installing OtterScale. +--- + +import { Steps, Aside } from '@astrojs/starlight/components'; + +Follow the steps below to install and configure OtterScale. + + + +1. **Start Services** + + Run the following command to start the necessary services using Docker Compose: + + ```bash + docker-compose up -d + ``` + +2. **Configure Installation** + + Create an `install.cfg` file with the required configuration. You can use the following template: + + ```bash title="install.cfg" + ## MAAS DHCP Range IP + MAAS_DHCP_START_IP="192.168.197.216" + MAAS_DHCP_END_IP="192.168.197.219" + + ## OtterScale Web IP + OTTERSCALE_WEB_IP="192.168.197.220" + ``` + + + +3. **Run Installation Script** + + Execute the installation script through the User Interface: + + 1. Access the OtterScale UI. + 2. Execute the `install.sh` script. + + diff --git a/src/content/docs/getting-started/03-scope.md b/src/content/docs/getting-started/03-scope.md deleted file mode 100644 index 8d62583..0000000 --- a/src/content/docs/getting-started/03-scope.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Scope -description: Manage scopes in OtterScale. ---- - -Scopes allow you to organize your resources and control access. - -## Selecting a Scope - -You can select a scope from the dropdown menu in the navigation bar. This will filter the resources you see to only those within the selected scope. - -## Creating a Scope - -To create a new scope, navigate to the Scope management area and click on "Create Scope". A side panel will appear with the creation form. - -### 1. Plan Selection - -At the top of the form, you will see the details of the plan associated with the scope you are creating. Different plans support different features: - -| Feature | Standard | Advanced | Enterprise | -| :--------- | :---------- | :--------- | :--------- | -| Ceph | ✅ | ✅ | ✅ | -| Kubernetes | ✅ | ✅ | ✅ | -| Cluster | ❌ | ✅ | ✅ | -| Node | Single-Node | Multi-Node | Multi-Node | - -### 2. Scope Details - -Fill in the following information to configure your new scope: - -#### Scope Name - -- **Label**: Scope Name ● -- **Description**: Enter a unique name for your scope. -- **Input**: Text field (Required). - -#### Machine Selection - -- **Label**: Machine ● -- **Description**: Select the physical machine to assign to this scope. -- **Input**: Dropdown menu. - - The dropdown lists available machines that are in the `Ready` status. - - Hovering over the info icon next to a machine name displays detailed hardware specifications (CPU, Memory, Storage, System info, etc.). - -#### Storage Devices - -- **Label**: Storage Devices ● -- **Description**: Select the block devices to be used by the scope. -- **Input**: Checkboxes. - - This section appears after you select a machine. - - It lists available non-boot block devices. - - Hovering over a device shows its model and capacity. - -#### Network Configuration - -- **Calico CIDR** (Optional): - - **Description**: The CIDR block for Calico networking. - - **Input**: Text field (e.g., `192.168.0.0/16`). -- **Virtual IP** (Optional): - - **Description**: The virtual IP address for the scope. - - **Input**: Text field (e.g., `192.168.1.1`). - -### 3. Creation Process - -Once you have filled in the details, click the **Create** button. The system will perform the following steps automatically: - -1. **Create Scope**: Initializes the scope record. -2. **Add Machine Tags**: Tags the selected machine. -3. **Commission Machine**: Configures the machine (SSH, networking, storage). -4. **Wait for Ready**: Waits for the machine to report a `Ready` status. -5. **Create Machine**: Associates the machine with the scope. -6. **Wait for Agent**: Waits for the agent to start on the machine. -7. **Create Node**: Finalizes the node creation with network and storage settings. - -You will see a loading indicator and status messages during this process. Once complete, a success message will appear. diff --git a/src/content/docs/getting-started/03-scope.mdx b/src/content/docs/getting-started/03-scope.mdx new file mode 100644 index 0000000..18e9006 --- /dev/null +++ b/src/content/docs/getting-started/03-scope.mdx @@ -0,0 +1,127 @@ +--- +title: Scope +description: Manage scopes in OtterScale. +--- + +import { Steps } from '@astrojs/starlight/components'; +import { Aside } from '@astrojs/starlight/components'; +import { Icon } from '@astrojs/starlight/components'; + +Scopes allow you to organize your resources and control access. + +## Selecting a Scope + +You can select a scope from the dropdown menu in the navigation bar. This will filter the resources you see to only those within the selected scope. + +## Creating a Scope + +To create a new scope, navigate to the Scope management area and click on "Create Scope". A side panel will appear with the creation form. + + + +1. **Select a Plan** + + At the top of the form, you will see the details of the plan associated with the scope you are creating. Different plans support different features: + + | Feature | Standard | Advanced | Enterprise | + | :--------- | :---------------------------- | :---------------------------- | :---------------------------- | + | Ceph | | | | + | Kubernetes | | | | + | Cluster | | | | + | Node | Single-Node | Multi-Node | Multi-Node | + +2. **Configure Scope Details** + + Fill in the following information to configure your new scope: + + - **Scope Name**: Enter a unique name for your scope. + - **Machine**: Select the physical machine to assign to this scope. + + - **Storage Devices**: Select the block devices to be used. (Appears after selecting a machine). + + - **Network Configuration** (Optional): + - **Calico CIDR**: The CIDR block for Calico networking (e.g., `192.168.0.0/16`). + - **Virtual IP**: The virtual IP address for the scope (e.g., `192.168.1.1`). + +3. **Create Scope** + + Once you have filled in the details, click the **Create** button to initiate the creation process. + + + +## Automated Provisioning + +After you initiate the creation, the system automatically performs the following steps: + + + +1. **Create Scope**: Initializes the scope record. + + This step maps to the Juju `CreateModel` operation. It establishes a new isolated workspace (Model) within the Juju controller. Key actions include: + + - **Namespace Isolation**: Creates a logical boundary for resources, ensuring that applications and machines in this scope do not interfere with others. + - **Environment Configuration**: Sets up model-level configurations, such as APT mirrors for faster package downloads. + - **Access Control**: Automatically injects SSH keys to grant authorized users access to the machines within this scope. + +2. **Add Machine Tags**: Tags the selected machine. + + This step applies specific tags to the machine in MAAS. Tags are used to: + + - **Mark Ownership**: Associates the machine with the specific scope being created. + - **Reserve Resources**: Prevents other processes from accidentally using this machine while it is being set up. + - **Define Capabilities**: Can be used to indicate specific hardware capabilities or roles (e.g., `compute`, `storage`) required for the node. + +3. **Commission Machine**: Configures the machine (SSH, networking, storage). + + Commissioning is a critical step to verify hardware and prepare it for deployment. It involves: + + - **Hardware Inventory**: Boots an ephemeral OS to scan and record detailed specs (CPU, Memory, Disks, NICs). + - **Health Checks**: Runs scripts to test hardware functionality (Disk I/O, Memory, IPMI/BMC). + - **Configuration**: Sets up out-of-band management (BMC/IPMI) and registers network/storage interfaces. + - **Status Change**: On success, the machine becomes `Ready` for deployment. On failure, it is marked as `Failed commissioning` for troubleshooting. + +4. **Wait for Ready**: Waits for the machine to report a `Ready` status. + + The `Ready` status is mandatory before any further actions can be taken. It confirms that: + + - Commissioning has completed successfully. + - The machine is free and available in the pool. + - It is eligible to be allocated and deployed with an operating system. + Attempting to deploy a machine that is not `Ready` (e.g., still commissioning or in a broken state) will fail. + +5. **Create Machine**: Associates the machine with the scope. + + This step executes the Juju `AddMachines` operation. It registers the specific physical machine (from MAAS) into the Juju controller. This action triggers: + + - **Provisioning**: Juju instructs MAAS to deploy the operating system (e.g., Ubuntu) onto the machine. + - **Agent Installation**: Once the OS is running, the Juju Agent is installed, allowing Juju to manage the machine as a node. + +6. **Wait for Agent**: Waits for the agent to start on the machine. + + This step monitors the Juju Agent status until it reports as `started`. This signifies that: + + - The OS installation is complete and the machine has booted. + - The Juju Agent is running and has successfully connected to the Juju Controller. + - The node is now online and ready to accept software deployments (Charms). + +7. **Create Node**: Finalizes the node creation with network and storage settings. + + This is the final orchestration step where the actual software stack is deployed. It performs the following actions: + + - **Network Reservation**: Reserves necessary IP addresses for internal services (e.g., Ceph NFS, Kubernetes Load Balancer). + - **Software Deployment**: Deploys and configures the core components: + - **Ceph**: For distributed storage (using the selected OSD devices). + - **Kubernetes**: For container orchestration (configuring Calico networking and Load Balancers). + - **Addons**: Additional system utilities. + - **Observability (COS)**: Monitoring and logging stack. + - **Relation Establishment**: Connects these components together to ensure they work as a cohesive system. + + + + diff --git a/src/content/docs/guides/install.md b/src/content/docs/guides/install.md index 9d56b89..0b3096f 100644 --- a/src/content/docs/guides/install.md +++ b/src/content/docs/guides/install.md @@ -8,13 +8,16 @@ description: A guide for installing Otterscale. ## System Requirements ### Operating System + - **Ubuntu 24.04 LTS** (Required) ### Hardware Requirements + - **Memory:** Minimum 8 GB RAM - **Disk Space:** Minimum 100 GB available storage ### Network Requirements + - At least one network interface with external internet connectivity - The installation script will check for network bridge `br-otters`: - If the bridge exists, it will be used @@ -27,6 +30,7 @@ The installation process requires access to various external services. Please en ### Canonical Services **TCP Port 443 (HTTPS):** + - api.charmhub.io - api.jujucharms.com - changelogs.ubuntu.com @@ -41,11 +45,13 @@ The installation process requires access to various external services. Please en - contracts.canonical.com **TCP Port 80 (HTTP):** + - images.maas.io ### Snap Package Management **TCP Port 443 (HTTPS):** + - snapcraft.io - api.snapcraft.io - storage.snapcraftcontent.com @@ -57,6 +63,7 @@ The installation process requires access to various external services. Please en ### Ubuntu Package Repositories **TCP Ports 443 and 80 (HTTPS/HTTP):** + - tw.archive.ubuntu.com - archive.ubuntu.com - ports.ubuntu.com @@ -66,6 +73,7 @@ The installation process requires access to various external services. Please en ### GitHub and OtterScale **TCP Ports 443 and 80 (HTTPS/HTTP):** + - otterscale.github.io - otterscale.com - raw.githubusercontent.com @@ -74,11 +82,13 @@ The installation process requires access to various external services. Please en ### Istio Service Mesh **TCP Port 443 (HTTPS):** + - istio.io ### Kubernetes and Container Registries **TCP Port 443 (HTTPS):** + - registry.k8s.io - k8s.gcr.io - ghcr.io @@ -88,6 +98,7 @@ The installation process requires access to various external services. Please en ### Docker Registry **TCP Port 443 (HTTPS):** + - auth.docker.io - auth.docker.com - login.docker.com @@ -102,16 +113,19 @@ The installation process requires access to various external services. Please en ### NVIDIA Container Registry **TCP Port 443 (HTTPS):** + - nvcr.io ### Alternative Container Registries **TCP Port 443 (HTTPS):** + - registry.cn-hangzhou.aliyuncs.com ### HuggingFace Model Repository **TCP Port 443 (HTTPS):** + - huggingface.co - cdn-lfs.huggingface.co - cdn.huggingface.co @@ -119,6 +133,7 @@ The installation process requires access to various external services. Please en ### Red Hat Registries **TCP Port 443 (HTTPS):** + - registry.redhat.io - quay.io - registry.access.redhat.com @@ -126,6 +141,7 @@ The installation process requires access to various external services. Please en ### Helm Chart Repositories **TCP Port 443 (HTTPS):** + - charts.jetstack.io (Cert-manager) - charts.bitnami.com (Bitnami charts) - open-feature.github.io (OpenFeature operator) diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index c743575..11d6a9f 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -15,7 +15,7 @@ hero: tagline: A unified platform for simplified compute, storage, and networking. image: - file: ../../assets/houston.webp + file: ../../assets/logo2.png actions: - text: Get Started link: /introduction/ diff --git a/src/content/docs/introduction.md b/src/content/docs/introduction.md deleted file mode 100644 index 2b5da66..0000000 --- a/src/content/docs/introduction.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Get Started -description: Get started with OtterScale. ---- - -OtterScale is a unified infrastructure management platform designed to simplify the deployment and operation of complex distributed systems. It integrates bare metal provisioning, container orchestration, and distributed storage into a single, cohesive interface. - -## System Architecture - -OtterScale is built on a layered architecture that provides complete control from the hardware up to the application layer. - -### Core Layers - -1. **Hardware Layer**: Manages physical resources including Compute nodes, Storage nodes, and GPU accelerators. -2. **Provisioning Layer (MAAS)**: Handles bare metal provisioning, OS deployment, and network configuration. -3. **Orchestration Layer (Juju & Kubernetes)**: Manages application lifecycles and container orchestration. -4. **Storage Layer (Ceph)**: Provides scalable, distributed storage for the cluster. - -### Node Provisioning & Management - -OtterScale automates the lifecycle of physical nodes. Through the integration with MAAS, it handles power management (IPMI/Redfish), PXE booting, and OS installation. - -### Storage Topology - -The platform utilizes Ceph to provide a robust, self-healing storage fabric. Storage nodes are dedicated to managing data replication and distribution, ensuring high availability and performance for data-intensive workloads like AI model training. - -## Key Features - -- **Scope Management**: logically isolate resources and manage access control for different teams or projects. -- **AI/LLM Readiness**: Optimized for high-performance computing with support for GPU acceleration and high-speed networking (InfiniBand/RoCE). -- **Multi-Tenancy**: Securely share infrastructure across multiple users while maintaining resource isolation. -- **Unified Interface**: A single pane of glass for monitoring and managing the entire stack, from metal to service. - -## Next Steps - -- [Check Prerequisites](/getting-started/01-prerequisites) -- [Create a Scope](/getting-started/03-scope) -- [Explore Basic Features](/basic/machines) diff --git a/src/content/docs/introduction.mdx b/src/content/docs/introduction.mdx new file mode 100644 index 0000000..0d99428 --- /dev/null +++ b/src/content/docs/introduction.mdx @@ -0,0 +1,78 @@ +--- +title: Introduction +description: Overview of OtterScale. +--- + +import { Card, CardGrid, LinkCard, Steps, Aside } from '@astrojs/starlight/components'; + +OtterScale is a **Hyper-Converged Infrastructure (HCI)** platform that unifies compute, storage, networking, and virtualization into a single, software-defined system. By collapsing traditional infrastructure silos, OtterScale simplifies deployment and management while delivering the scalability needed for modern enterprise workloads. + + + +## System Architecture + +OtterScale is built on a layered architecture that provides complete control from the hardware up to the application layer. + +### Core Layers + + + +1. **Hardware Layer**: Manages physical resources including Compute nodes, Storage nodes, and GPU accelerators. +2. **Provisioning Layer (MAAS)**: Handles bare metal provisioning, OS deployment, and network configuration. +3. **Orchestration Layer (Juju & Kubernetes)**: Manages application lifecycles and container orchestration. +4. **Storage Layer (Ceph)**: Provides scalable, distributed storage for the cluster. + + + +### Node Provisioning & Management + +OtterScale automates the lifecycle of physical nodes. Through the integration with MAAS, it handles power management (IPMI/Redfish), PXE booting, and OS installation. + +### Storage Topology + +The platform utilizes Ceph to provide a robust, self-healing storage fabric. Storage nodes are dedicated to managing data replication and distribution, ensuring high availability and performance for data-intensive workloads like AI model training. + +## Key Features + + + + Logically isolate resources and manage access control for different teams or projects. + + + Optimized for high-performance computing with support for GPU acceleration and high-speed + networking (InfiniBand/RoCE). + + + Securely share infrastructure across multiple users while maintaining resource isolation. + + + A single pane of glass for monitoring and managing the entire stack, from metal to service. + + + +## Next Steps + + + + + + diff --git a/src/content/docs/service/02-compute.md b/src/content/docs/service/02-compute.md index 8541213..0ce799e 100644 --- a/src/content/docs/service/02-compute.md +++ b/src/content/docs/service/02-compute.md @@ -1,19 +1,20 @@ --- -title: Compute (VM) +title: Compute description: Manage Virtual Machines. --- -The Compute section allows you to create and manage Virtual Machines (VMs). +The Compute section allows you to create and manage Virtual Machines (Virtual Machines). -## Creating a VM +## Creating a Virtual Machine + +To create a new Virtual Machine: -To create a new VM: 1. Go to the Compute section. -2. Click "Create VM". +2. Click "Create Virtual Machine". 3. Select the OS image, CPU, and RAM configuration. 4. Configure networking and storage. -5. Launch the VM. +5. Launch the Virtual Machine. -## Managing VMs +## Managing Virtual Machines -You can start, stop, restart, and delete VMs from this interface. +You can start, stop, restart, and delete Virtual Machines from this interface. diff --git a/src/content/docs/service/03-models.md b/src/content/docs/service/03-models.md index c41b520..460bf5c 100644 --- a/src/content/docs/service/03-models.md +++ b/src/content/docs/service/03-models.md @@ -1,5 +1,5 @@ --- -title: Models (LLM) +title: Models description: Manage LLM models in OtterScale. --- @@ -12,6 +12,7 @@ View available models, their status, and resource consumption. ## Deploying a Model To deploy a new model: + 1. Navigate to the Models section. 2. Select "Deploy Model". 3. Choose the model type and configuration.