LogoLogo
  • GETTING STARTED
    • Violet Documentation
    • What is Violet?
    • Platform Overview
  • Integrations
    • Connect self-hosted software
  • FEATURES
    • Dashboards
      • Customization
      • FAQ
    • Data Explorer
      • FAQ
    • Automations
      • Jira to Smartsheet
        • Auto-update Jira data using formulas
      • Solidworks PDM to Fusion
      • Teamcenter to Datum
      • Teamcenter to ION
      • Teamcenter to Netsuite
      • FAQ
    • Reports
      • Multisource
        • Custom Columns
        • FAQ
      • Clear To Build
      • Build Velocity
    • Requirements
      • View: Table vs. Graph
      • Structure: Hierarchy vs. System
      • Systems
      • Import via CSV
      • Custom Fields
      • Verifications
      • Satisfaction
    • Parameters
    • Scripts
      • Creating and running scripts
      • Violet Variables
      • Live scripts
      • History and notifications
      • FAQ and Examples
    • SysML
    • Change Orders [Beta]
    • Schedules [Beta]
    • Workflows [Beta]
  • RESOURCES
    • Administrative
      • Invite your team
      • Permissions
      • Single Sign-On
      • On-Premises Deployment
        • Azure Deployment
        • AWS Deployment
        • Nutanix AHV Deployment
    • Security & Compliance
      • ITAR/EAR Compliance
      • SOC 2 Certification
      • NIST/CMMC Compliance
      • Data Retention, Backup and Recovery
      • Legal Stuff
    • Videos and Tutorials
    • FAQ
    • Pricing
  • APPS
    • A
      • Acumatica (Coming Soon)
      • AllSpice (Coming Soon)
      • Altium 365
        • Connect Altium 365 in Violet
      • Altium Designer
      • Aras
      • Arena
      • Asana
        • [Optional] Connect using a PAT
      • AutoPCB (Coming Soon)
    • B
      • Basecamp (Coming Soon)
      • Bild (Coming Soon)
      • BILL
        • [Advanced] Retrieve your Organization ID
        • [Optional] Import BILL data
      • Bitbucket
        • [Optional] Connect Bitbucket with API Token
      • Box
      • Brex
        • [Optional] Connect to Brex using an API Token
    • C
      • Cameo
      • Capella (Coming Soon)
      • ChatGPT (Coming Soon)
      • ClickUp
      • Cofactr
      • Confluence
      • Costpoint (Coming Soon)
      • Coupa (Coming Soon)
      • Creo (Coming Soon)
    • D
      • DOORS (Coming Soon)
      • Datum
      • Docusign (Coming Soon)
      • Dropbox (Coming Soon)
      • Duro
    • E
      • Enterprise Architect (Coming Soon)
      • Epicor (Coming Soon)
      • Epsilon3
    • F
      • Factor
      • FactoryLogix (Coming Soon)
      • Flow
      • Fleetio (Coming Soon)
      • Fulcrum
      • Fusion360 (Coming Soon)
      • Fusion
    • G
      • Gitea
      • GitHub
        • [Optional] Connect with an API Token
      • GitLab
        • Generate a GitLab API Token
        • Connect self-hosted GitLab
      • GENESYS
      • Google Drive
      • Google Sheets
    • I
      • Innoslate (Coming Soon)
      • InvenTree
      • ION
        • Connect ION in Violet
    • J
      • Jama
        • Connect self-hosted Jama
        • [Optional] Connect with Jama Client ID & Secret
      • Jira
        • Self-hosted Jira
        • [Optional] Connect via Jira API Token
      • Julia
      • JITX (Coming Soon)
    • K
      • Kiwi TCMS (Coming Soon)
    • L
      • LeoTrack (Coming Soon)
      • Linear
      • Lucidchart
      • Lucidscale
      • Lucidspark
      • Luminary Cloud (Coming Soon)
    • M
      • Manufacturo
      • Mathcad (Coming Soon)
      • MATLAB
      • Microsoft 365
      • Microsoft Teams (Coming Soon)
      • Microsoft Project (Coming Soon)
      • Monday.com
        • [Optional] Connect to Monday.com with an API Token
    • N
      • NetSuite
        • Configure NetSuite to connect
        • Connect NetSuite in Violet
        • Configuring NetSuite data syncs
      • Nuclino
      • Notion (Coming Soon)
      • NX (Coming Soon)
    • O
      • Octopart
        • Connect Octopart in Violet
      • Odoo (Coming Soon)
      • Onshape
      • Opcenter (Coming Soon)
      • OpenBOM
    • P
      • Parasoft (Coming Soon)
      • Pathfinder
      • Polarion (Coming Soon)
      • Precoro
      • Procurify
      • Puzzle
      • Python
    • Q
      • QuickBooks
    • R
      • Ramp
    • S
      • SAP ME (Coming Soon)
      • SAP S/4 HANA (Coming Soon)
      • SatCatalog
      • Sedaro
        • Using Violet data in Sedaro
      • SimScale
      • Simulink (Coming Soon)
      • Slack
      • Smartsheet
        • Smartsheet Gov
      • Solidworks PDM
      • Solumina (Coming Soon)
      • StartProto (Coming Soon)
      • Syndeia (Coming Soon)
      • SysML
      • Syteline (Coming Soon)
    • T
      • Teamcenter
        • Configure Teamcenter to connect
        • Connect Teamcenter in Violet
        • Set up Teamcenter integration
        • Data fetched from Teamcenter
        • Teamcenter FAQ
      • Teamcenter X (Coming Soon)
      • TestRail
      • Trello
      • Tulip (Coming Soon)
    • V
      • Valispace
      • Visure (Coming Soon)
      • VOLTA (Coming Soon)
    • W
      • Wasp (Coming Soon)
      • Wayfinder
      • Windchill
      • Wrike
    • X
      • Xero
      • Xray (Coming Soon)
  • Z
    • Zuken E3 (Coming Soon)
Powered by GitBook
On this page
  • Prerequisites
  • Step 1: Kubernetes Cluster Requirements
  • Step 2: Configure Persistent Storage
  • Step 3: Configure Kubernetes Networking
  • Step 4: Prepare Violet Configuration
  • Step 5: Fetch Internal Secrets from Violet
  • Step 6: Deploy Violet Helm Chart
  • Step 7: Verify Installation
  • Step 8: Post-Installation Configuration

Was this helpful?

  1. RESOURCES
  2. Administrative
  3. On-Premises Deployment

Nutanix AHV Deployment

PreviousAWS DeploymentNextSecurity & Compliance

Last updated 9 days ago

Was this helpful?

Prerequisites

  1. Ensure you have access to your Nutanix AHV cluster.

  2. Install the following tools on your workstation:

    • Helm:

    • Kubectl:

    • AWS CLI:

    • Nutanix Prism Central or Karbon CLI Tools for managing Nutanix resources.

Step 1: Kubernetes Cluster Requirements

Set up a Kubernetes cluster on Nutanix. .

  • The cluster must meet the following minimum requirements:

    • Node Requirements: 3 nodes, .

Step 2: Configure Persistent Storage

Nutanix AHV uses the (Container Storage Interface) driver for Kubernetes to manage persistent storage. Install and configure the CSI driver:

  1. Install the Nutanix CSI driver for Kubernetes following the .

  2. Create a default StorageClass in Kubernetes for dynamic provisioning:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: nutanix-sc
    provisioner: csi.nutanix.com
    parameters:
      csi.storage.k8s.io/fstype: ext4

Step 3: Configure Kubernetes Networking

Ensure an ingress controller is installed for external access to your services.

  1. Initialize the Ingress-Nginx repository:

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
  2. Deploy the Ingress-Nginx Helm chart:

    helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx \
      --namespace ingress-nginx \
      --create-namespace \
      --set controller.replicaCount=2 \
      --set controller.allowSnippetAnnotations=true \
      --set controller.ingressClassResource.default=true \
      --set force-ssl-redirect=true \
      --version=4.8.3
  3. Validate that the LoadBalancer service's external IP address is configured:

    kubectl --namespace ingress-nginx get services -o wide -w ingress-nginx-controller

The Ingress-Nginx Controller is responsible for exposing application services externally to the cluster.

Step 4: Prepare Violet Configuration

  1. Create a violet-values.yml configuration file for the deployment:

    domain: # The domain where Violet will be served. Subdomain must be "violet": violet.mydomain.com
    customerName: # The customer name of your license. Provided by Violet
    licenseKey: # Your license key. Provided by Violet
    adminEmail: # Admin user email for the customer
    adminName: # Admin user full name ("Firstname Lastname") for the customer
    
    aws:
      accessKeyId: # Leave blank or remove if not applicable
      accessKeySecret: # Leave blank or remove if not applicable
    
    global:
      storageClass: nutanix-sc
    
    # optional: This is required if you wish to use an external database 
    # instead of an internal postgres db automatically spun up by the helm chart. 
    # Do not add if using the internal db. 
    postgresql:
      enabled: false # Disable internal database if using an external database
      auth:
        host: # hostname for external db
        password: # db user password
        username: # db user username
        adminPassword: # admin user password
        adminUsername: # admin username
Deploying or Updating Version-Locked Violet [OPTIONAL]

If you would like to lock the version of Violet that you are using and not automatically pull the latest version, add the following entry to your violet-values.yml file:

image:
  versionTag: # use correct version tag to lock a version and not always pull latest. Provided by Violet for initial deployment.

If you are deploying Violet in this environment for the first time, continue to Step 5: Fetch Internal Secrets from Violet.

If you have already deployed Violet and are just locking the version or updating to a specific version of Violet, enter that versionTag in the violet-values.yml file and then skip to Step 6: Deploy Violet Helm Chart.

Step 5: Fetch Internal Secrets from Violet

For managing secrets securely on Nutanix, you can use Kubernetes Secrets or integrate with Nutanix Vault or HashiCorp Vault. This is used to load some customer-specific secrets from the Violet AWS cloud into the On-Prem Violet Deployment.

  1. Install External Secrets:

    helm repo add external-secrets <https://charts.external-secrets.io>
    helm repo update
    helm upgrade --namespace external-secrets --create-namespace --install --wait external-secrets external-secrets/external-secrets
  2. Set up an AWS profile called violet-external

    $ aws configure —profile violet-external
    AWS Access Key ID [None]:[AWS_ACCESS_KEY from 1Pass]
    AWS Secret Access Key [None]: [AWS_SECRET_ACCESS_KEY from 1Pass]
    Default region name [None]: us-west-1
    Default output format [None]: json
  3. Create a namespace for Violet:

    kubectl create namespace violet
  4. Create a secret that allows Kubernetes to access the Violet Helm Chart repository:

    kubectl create secret docker-registry --namespace violet ecr-creds --docker-server=911167899009.dkr.ecr.us-west-1.amazonaws.com --docker-username=AWS --docker-password=$(aws ecr --profile violet-external get-login-password)

Step 6: Deploy Violet Helm Chart

  1. Log into the Violet Helm Chart Repository

    aws ecr --profile violet-external get-login-password | helm registry login --username AWS --password-stdin 911167899009.dkr.ecr.us-west-1.amazonaws.com
  2. Install the Violet Helm Chart:

    helm upgrade --namespace violet --create-namespace --install myviolet oci://911167899009.dkr.ecr.us-west-1.amazonaws.com/violet-helm --version 1.0.0-main -f violet-values.yml

Step 7: Verify Installation

Note that it may take up to 5 minutes to run the database provisioning scripts. You can check the status of the deployment by looking at the pods:

  1. Check the status of the pods in the Violet namespace:

    kubectl get pods -n violet

Step 8: Post-Installation Configuration

After installation is complete the helm chart will print our some information and commands including the URL to access your new deployment, how to get the IP Address that the deployment is served at (for setting up DNS rules) and how to obtain the auto-generated password for the violet_admin@violetlabs.com account.

Violet changelog (& version tags) can be found here

Install Helm
Install Kubectl
Install AWS CLI
Nutanix Kubernetes Engine docs here
each with at least 8GB of RAM
Nutanix CSI
Nutanix CSI documentation
VioletLabs changelog | Productlane