General installation
This guide provides a detailed walkthrough for setting up an UltiHash cluster in a Kubernetes environment, whether on-premises or in a cloud environment. The process is divided into four main steps:
Prerequisites: Gather the necessary credentials, tools, and environment configurations.
Cluster setup: Configure your Kubernetes cluster, including creating namespaces and provisioning secrets.
Helm installation: Deploy UltiHash using Helm, customizing the setup for your specific environment.
Post-installation: Verify the installation.
Step 1: Prerequisites
Before you begin the installation, ensure you have the following:
UltiHash Account: Sign up at ultihash.io/signup and verify your email.
Credentials: After signing up on the UltiHash website, you will get the following credentials on your dashboard:
Registry login and password (referred to as
registry_login
andregistry_password
).License key (referred to as
license_key
).Monitoring token (referred to as
monitoring_token
).UltiHash ID (unique identifier of an UltiHash customer) - you need it only to upgrade your subscription.
Kubernetes cluster:
Version: Ensure you have a Kubernetes cluster running version 1.20 or higher.
Controllers:
Ingress controller: Exposes the UltiHash cluster API endpoint outside the Kubernetes cluster. The recommended solution is Nginx Ingress (tested on version 1.9.6).
CSI controller: Manages persistent volumes.
Note: You can use any Kubernetes version starting from 1.20, and any CSI controller that dynamically provisions and attaches persistent volumes. For optimal performance, use a CSI controller that imposes the least disk performance degradation.
Local environment:
kubectl: Ensure Kubernetes command line tool
kubectl
is installed and configured to access the cluster.Helm: Install Kubernetes package manager Helm (version 3.x) to manage Kubernetes packages.
Step 2: Cluster setup
Namespace creation:
Create a Kubernetes namespace for the UltiHash installation:
Replace
<namespace>
with your desired namespace name.
Secrets provisioning:
Registry credentials: Provision a secret in Kubernetes to store the UltiHash registry credentials:
Replace
<namespace>
with the namespace name. Replace<registry_login>
, and<registry_password>
with the appropriate values obtained from your dashboard on the UltiHash website.License key and monitoring token: Create a secret in Kubernetes for the license key and monitoring token:
Replace
<namespace>
with the namespace name. Replace<license_key>
and<monitoring_token>
with the corresponding values found on your UltiHash dashboard.
Step 3: Helm installation
Helm chart deployment:
Deploy the Helm chart with a specific release name and namespace:
Replace
<release_name>
andnamespace
with your chosen names.values.yaml
should be configured as described below.
Component configuration:
Customize the
values.yaml
file with the necessary configurations:Storage class: Specify the storage class name created by your CSI controller.
Domain name: Enter a valid domain name for your UltiHash cluster.
Service replicas and storage size: Adjust the number of replicas and storage size for services like
etcd
,entrypoint
,storage
, anddeduplicator
based on your requirements.
Step 4: Post-installation
Verification:
After deployment, verify that all services are running correctly by checking the Kubernetes namespace:
Replace
<namespace>
with the namespace where UltiHash cluster has been deployed.Ensure that all pods are either in the
Running
or in theCompleted
state with no errors.
Get access to the UltiHash cluster:
Obtain the UltiHash root user credentials:
Replace
<release_name>
and<namespace>
with the Helm release name and namespace name correspondingly.Use AWS CLI and AWS SDK to interact with the UltiHash cluster:
Replace
<cluster-url>
with the appropriate scheme: eitherhttps://<domain_name>
orhttp://<domain_name>
, depending on whether yourentrypoint.ingress
object in the Helm values has been configured with or without TLS. The<domain_name>
corresponds to the domain name chosen for the UltiHash cluster, as set in theentrypoint.ingress.host
object.
Last updated