Prerequisites
For PrimeHub installation on single node, please visit Install PrimeHub CE on Single Node or Install PrimeHub EE on Single Node directly.
For PrimeHub installation on multiple nodes, please read the prerequisites thoroughly. Before installing PrimeHub, we need to provide a PrimeHub-ready-Kubernetes, which should contain following essentials. Make sure the cluster is ready for PrimeHub.
Kubernetes Cluster (1.19+)
The Kubernetes version 1.19 is recommended.
If you already have a Kubernetes cluster or going to install one in your own preference, make sure the cluster meets the requirements below.
If a fresh PrimeHub on GKE or EKS is one of your preferences, you may want to start from our Kubernetes on GKE guide or Kubernetes on EKS guide.
Git
Please follow the os-specific command to install git command
cURL
cURL is a command-line tool that allows us to do HTTP requests from shell. To install cURL, please follow the os-specific method. For example.
Ubuntu
sudo apt update
sudo apt install curl
RHEL/CentOS
yum install curl
Kubectl
kubectl is used to access the cluster. To install kubectl, please follow the instructions, or visit kubectl - Install Tools for preferred operating system.
Linux
KUBECTL_VERSION=v1.19.15
curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
MacOS
You can use brew to install
brew install kubectl
or below commands
KUBECTL_VERSION=v1.19.15
curl -LO https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/darwin/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
For more details, please see the kubernetes official document.
Helm
PrimeHub is packaged and installed by Helm
From PrimeHub v3.0, we recommend Helm v3.6.2+.
Installation steps:
- Go to the Helm release page (v3.6.2)
- Download the package according to your OS
- Unpack the package and put the
helm
binary in you$PATH
Domain name
PrimeHub requires a domain name or fix IP address to access the service from the user machines.
The minimum requirement: The domain name can be accessible to the ingress node (by DNS CNAME or L4/L7 load balancer) from the users machines
Nginx ingress Controller
Nginx Ingress Controller is used to control the ingress traffic.
Other ingress controllers may work. But the nginx ingress controller is the solution we develop on.
Add Chart repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
Helm install
helm install nginx-ingress ingress-nginx/ingress-nginx --create-namespace --namespace ingress-nginx --set controller.hostNetwork=true --set rbac.create=true
Verify it
kubectl get svc -n ingress-nginx
Dynamic Volume Provisioner
Dynamic Volume Provisioner is used to provision a PVC dynamically. Make sure that there is a storage class using this provisioner.
Check if the default storage class is available.
kubectl get storageclass
If there is no available storage class, patch it with one you want. See Change the default StorageClass↗.
Patch a storage class
kubectl patch storageclass <STORAGE_CLASS_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Cert Manager (Optional)
If https is required in your environment, cert-manager provides an easy way to set up a certificate.
Behind Firewall (Optional)
Please open port
22, 80 and 443
.Please add these domains below in allow-list
# Docker image registry *.docker.com *.docker.io *.gitlab.com quay.io gcr.io # Helm chart repository *.github.io *.storage.googleapis.com storage.googleapis.com charts.infuseai.io charts.rook.io charts.jetstack.io # Nvidia driver *.nvidia.com