Installation Guide

Welcome to the AppNet installation guide. This document provides step-by-step instructions on how to set up AppNet and its dependencies.

Note: The following scripts are tested on Ubuntu 20.04. We plan to add support for other platforms soon.

Cloning the Repository

First, clone the AppNet repo:

git clone git@github.com:appnet-org/appnet.git --recursive
cd appnet

Before you start, make sure you have the following installed:

Requirements:

Install the CLI

appnetctl is a command line program to manage the AppNet control plane. To install the CLI, follow these steps:

  1. Create a Conda environment:
conda create -y -n appnet python=3.10
conda activate appnet
  1. Run the installation script:
. ./install.sh
  1. Verify the CLI and other tools are running correctly:
user@h1:~/appnet$ appnetctl version
Version: v0.1.0
user@h1:~/appnet$ appnetctl verify
Verifying AppNet installation status...
✔ Python installed.
✔ Rust installed.
✔ Kubernetes installed.
✔ protoc installed.
✔ Istio installed.
  1. Lastly, install the CRDs into the cluster:
make install

Requirements

Kubernetes

To install a Kubernetes cluster, we recommend using kubeadm. Follow the steps below:

  1. Install the Control Plane:
. ./utils/k8s_setup.sh
  1. (Optional) Set Up Worker Nodes:
  • First, prepare the worker nodes:
. ./utils/k8s_setup_worker.sh
  • Then, join the cluster using kubeadm join. Run the following command on the control plane node to get the join command:
kubeadm token create --print-join-command

Note: if you plan to use a multi-node cluster, make sure you can ssh other nodes from the control plane node.

  1. Verify Installation:
kubectl version

For additional installation options (e.g., KIND, Minikube), visit this page

(Optional) We highly recommend installing k9s for visualizing your clutser.

Istio

Istio can be installed in either sidecar mode or ambient mode. Choose the one that best fits your requirements:

  • Sidecar Mode
. ./utils/istio_setup_sidecar.sh
  • Ambient Mode
. ./utils/istio_setup_ambient.sh

Go

Install Go by running the following command:

wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz

echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc

Rust

Install Rust by running the following command:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Protoc

Install the Protocol Buffers Compiler and the necessary Go plugins with these commands:

sudo apt -y install protobuf-compiler

Conda

See this page for installation instructions.

For Ubuntu users:

wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh -O Miniconda.sh
bash Miniconda.sh