Deployment guide

Requirements

  • kubectl - Command line tool that interacts with the Kubernetes API server and is useful for managing Kubernetes clusters. Before proceeding, follow the installation documentation that corresponds to your platform. This guide will be using version 1.24.

  • helm - Package manager used for installing and managing Kubernetes applications. In this guide, you will be using a Helm chart to install Tabnine on our Kubernetes cluster. For more information, see Installing Helm. This guide will be using version 3.12.0 ( 3.12.0 is our minimal supported version).

  • An available Kubernetes cluster. If you need to set up a cluster, we have provided the below installation guide for a self-hosted server. It provides step-by-step instructions intended to get you up and running as fast as possible. Guide applies for a self-hosted solution on your VPC as well as setting up a physical appliance inside your organizational network.

Deploy Tabnine

This guide assumes you have internet access to Tabnine docker and Helm charts registries for installation and updates (registry.tabnine.com / 34.72.243.185). If that is not the case, please follow this guide instead.

Set up namespaces

kubectl create ns tabnine
kubectl label namespaces tabnine name=tabnine --overwrite=true

If receiving a "Connection declined" Error when running 'run kubectl create ns tabnine' first do the following:

  • Update gcloud components install gke-gcloud-auth-plugin

  • gcloud container clusters get-credentials -gke --region --project

Pull secrets

Instead of setting up a pull secret on isolated environments, you will need to make the docker images available in your environment; follow this guide.

Update the IMAGES_USER and IMAGES_PASSWORD with your credentials

kubectl create secret docker-registry regcred -n tabnine --docker-server=registry.tabnine.com --docker-username="IMAGES_USER" --docker-password="IMAGES_PASSWORD"

Import the SSL Certificate

For this step, we assume the certificate files are server.key and server.crt and that they are available in the same path as the console. We also assume that Tabnine will be installed at the tabnine namespace.

kubectl create secret --namespace tabnine tls tabnine-enterprise-app-cert --cert=./server.crt --key=./server.key

Install Tabnine

  1. Before you install, configure the values.yaml file contents used by the Helm Chart. The majority of the values for this chart have defaults recommended by Tabnine but you will want to review and modify the configuration to meet your specific requirements. This guide covers configuration values which must be updated to deploy Tabnine. You should review the entire configuration to understand all the possible options. Use the following values.yamlas a starting point to your configuration:

global:
  image:
    # imagePullSecrets -- The name of the secret contains the credentials for Tabnine registry
    imagePullSecrets:
      - name: regcred
  ingress:
    # host -- tabnine cluster domain, e.g. `tabnine.company.com`
    host: null
    tls:
      # hosts -- tabnine cluster domain, e.g. `tabnine.company.com`
      - hosts:
          []
          # - tabnine.company.com
        # secretName -- The secret name holds the SSL certificate
        secretName: tabnine-enterprise-app-cert
  
  tabnine:
    #  organizationId/Name/Secret -- Provided by Tabnine with license file
    organizationId: null
    organizationName: null
    organizationSecret: null
    organizationDomain: null

    # License key - Provided by Tabnine with license file. Just copy and paste here before deployment.
    licenseKey: null

auth:
  # defaultEmail -- The first admin user email that will be created
  defaultEmail: null
  noEmailVerificationEnforced: true
  
  1. Now that values.yaml is updated, it is time to install the chart on the cluster

helm upgrade --install -n tabnine --create-namespace tabnine \
oci://registry.tabnine.com/self-hosted/tabnine-cloud --values values.yaml

Troubleshooting

Error:

If you want to use an external PostgreSQL (version 15 or higher) you may get the following error:

ERROR: permission denied for schema public.

Fix:

Run the following command when logged in to the DB with the DB owner user:

GRANT ALL PRIVILEGES ON DATABASE tabnine TO tabnine;

Details:

When using an external DB with a Tabnine private installation, the default DB user is usually not the DB super user.

With PostgreSQL 15, CREATE permission has been revoked from all users except a database owner from the public (or default) schema.

When admins want Tabnine to work with a Postgres version 15 and above, the tabnine user (the default user we use upon installation) can't create tables on the public schema. For Tabnine installation to be able to make the needed tables, the admin needs to give the Tanine DB user permission to create tables on the public schema.

The DB has been created for the first time since we installed the Helm chart, with a default name, Tabnine, so we need to give the Tabnine user full permission to access this

When new licenseKey is provided, just update the value and run the same helm upgrade command above again.

Last updated