4. Installation on Minikube

This guide provides a detailed walkthrough for setting up an UltiHash cluster in a Minikube environment. The process is divided into four main steps:

  1. Prerequisites: Gather the necessary credentials, tools, and environment configurations.

  2. Cluster setup: Configure your Minikube environment, including creating namespaces and provisioning secrets.

  3. Helm installation: Deploy UltiHash using Helm, customizing the setup for your specific environment.

  4. Post-installation: Verify the installation.

!!!Warning!!! This setup is intended for testing on local systems / developer hardware and not intended for production use.

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 and registry_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.

  • Local environment:

    • docker: Ensure the Docker engine is installed on your computer.

    • minikube: Install Minikube to provision a local Kuberentes cluster.

    • kubectl: Ensure Kubernetes command line tool kubectl is installed.

    • Helm: Install Kubernetes package manager Helm (version 3.x) to manage Kubernetes packages.

    • AWS CLI Install AWS CLI (version 2) to interact with the installed UltiHash cluster

Step 2: Cluster setup

  1. Set up Minikube environment:

    • Create a local Kubernetes cluster:

      minikube start
    • Make sure kubectl has access to the cluster and the cluster node has been provisioned:

      kubectl get nodes

      The expected output should look like:

      NAME       STATUS   ROLES           AGE   VERSION
      minikube   Ready    control-plane   32s   v1.28.3
    • Install Nginx Ingress controller:

      minikube addons enable ingress
  2. Namespace creation:

    • Create a Kubernetes namespace for the UltiHash installation:

      kubectl create ns <namespace>
      
    • Replace <namespace> with your desired namespace name.

  3. Secrets provisioning:

    • Registry credentials: Provision a secret in Kubernetes to store the UltiHash registry credentials:

      kubectl create secret docker-registry registry-credentials -n <namespace> --docker-server='registry.ultihash.io' --docker-username='<registry_login>' --docker-password='<registry_password>'
      
    • 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:

      kubectl create secret generic ultihash -n <namespace> --from-literal=license='<license_key>' --from-literal=token='<monitoring_token>'
      
    • Replace <namespace> with the namespace name. Replace <license_key> and <monitoring_token> with the corresponding values otained from the UltiHash dashboard.

Step 3: Helm installation

  1. Helm chart deployment:

    • Deploy the Helm chart with a specific release name and namespace:

      helm install <release_name> oci://registry.ultihash.io/stable/ultihash-cluster -n <namespace> --values values.yaml --wait --timeout 10m
      
    • Replace <release_name> and namespace with your chosen names. values.yaml should be configured as described below.

  2. Component configuration:

    • Customize the values.yaml file with the necessary configurations:

      • Service replicas and storage size: Adjust the number of replicas and storage size for services like etcd, entrypoint, database, storage, and deduplicator based on your requirements.

        etcd:
          replicaCount: 1
          persistence:
            storageClass: standard
        
        database:
          primary:
            persistence:
              storageClass: standard
              size: <storage_size>
        
        entrypoint:
          replicas: <number_of_replicas>
          ingress:
            host: 
        
        storage:
          replicas: <number_of_replicas>
          storageClass: standard
          storageSize: <storage_size>
        
        deduplicator:
          replicas: <number_of_replicas>
          storageClass: standard
          storageSize: <storage_size>

Step 4: Post-installation

  1. Verification:

    • After deployment, verify that all services are running correctly by checking the Kubernetes namespace:

      kubectl get all -n <namespace>
      
    • Ensure that all pods are either in the Running or in the Completed state with no errors.

  2. Get access to the UltiHash cluster:

    • Obtain the UltiHash cluster URL and root user credentials:

      # Obtain the URL of the UltiHash cluster
      export ClusterURL=http://`minikube ip`
      
      # Obtain credentials for the UltiHash root user
      export AWS_ACCESS_KEY_ID=`kubectl get secret <release-name>-super-user-credentials -n <namespace> -o jsonpath="{.data.access-key-id}" | base64 --decode`
      export AWS_SECRET_ACCESS_KEY=`kubectl get secret <release-name>-super-user-credentials -n <namespace> -o jsonpath="{.data.secret-key}" | base64 --decode`
    • 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:

      aws s3api list-buckets --endpoint-url $ClusterURL

Last updated