Installing on Google GKE using helm charts (non-marketplace)
Please follow the below prerequisites and deployment instructions to deploy Zetaris on EKS environment.
Prerequisites:
You can ensure the CLI environment to run the helm and kubectl command. Either it can be on gcp Cloud Shell OR Local CLI (Shell, CMD or PowerShell)
- Helm
https://helm.sh/docs/intro/install/
- Kubectl CLI
https://kubernetes.io/docs/tasks/tools/#kubectl
- Google Cloud Project: Ensure you have an active Google Cloud project.
- Google Cloud CLI (gcloud CLI): Install and initialize the gcloud CLI. This includes installing the
kubectlcomponent for interacting with Kubernetes clusters. You can update it usinggcloud components update. - Enable Kubernetes Engine API: Enable the Google Kubernetes Engine API in your Google Cloud project.
- Use the
gcloud container clusters createcommand to provision your GKE cluster. Specify a unique name for your cluster and optionally define parameters like zone/region, machine type, node count, etc.
gcloud container clusters create [CLUSTER-NAME] --zone [ZONE] --machine-type [MACHINE-TYPE] --num-nodes [NUMBER-OF-NODES]
[CLUSTER-NAME], [ZONE], [MACHINE-TYPE], and [NUMBER-OF-NODES] with your desired values.- After the cluster is created, obtain the authentication credentials to allow
kubectlto interact with it.
gcloud container clusters get-credentials [CLUSTER-NAME] --zone [ZONE]
[CLUSTER-NAME] and [ZONE] with your cluster's details.- Confirm that
kubectlcan connect to your new GKE cluster by listing the nodes.
kubectl get nodes
- DBeaver Installation OR "postgres DB cli"
This product requires an internet connection to deploy properly. The following packages are downloaded on deployment.
This product is going to be hosted on secure a virtual private cloud network.
If pre-requisites installation are failed, please don't continue to do further installation. You can reach out to Zetaris support team.
If you get stuck on the helm installation or missed any steps, please don't continue to do further steps. Please reach out to Zetaris support team.
Deployment Instructions:
Setup the ‘namespaces’
· Login to Kubernetes cluster using kubeadmin credentials from oc/kubectl command line tool.
kubectl create namespace zetaris
kubectl create namespace airflow
Set the below variables for the current version release in your terminal.
Please contact Zetaris for the token below
$zettoken=github_pat_XXXXXXX
$zetrelease=helm_latest
Set the env value to reflect the Infrastructure provider
like 'gcp', 'azure', 'ibm', 'gcp', 'dell', 'hitachi', 'local' (minikube)
$environment=gcp
Postgres installation
Please install Postgres external using the below option
Postgres on k8s inside the cluster.
Run “kubectl get sc” to confirm the storage class
Set appropriate “storageClassName”. “kubectl get sc”
$storageclass=default
helm repo add helm-postgres https://$zettoken@raw.githubusercontent.com/zetaris/openshift/$zetrelease/postgres
helm upgrade --install postgres \
helm-postgres/postgres --namespace zetaris \
--set storageClassName=$storageclass \
--set environment=$environment
List out all generated pods
kubectl get pods -n zetaris
Get the pod name of postgres
kubectl exec -it <postgres pod name> -n zetaris -- /bin/sh
su - postgres
The below command would ask password and enter “<Your Choice Password>”
psql -h postgres -U rds_admin postgres
create database metastore;
create database auditlog;
create database airflowdb;
5. Install the Spark Operator and Opensearch
· Add the spark operator, cert repo;
helm repo add spark-operator https://kubeflow.github.io/spark-operator
helm repo add jetstack https://charts.jetstack.io
helm repo update
· Install the spark operator , cert manager;
helm upgrade --install spark-operator spark-operator/spark-operator --namespace spark-operator --create-namespace --version=1.2.15 --set webhook.enable=true
kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
kubectl create ns cert-manager
helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.7.0 --set installCRDs=true
Install the opensearch;
Option 1: Using helm charts
helm uninstall opensearch -n zetaris
helm repo add opensearch https://opensearch-project.github.io/helm-charts/
helm upgrade --install opensearch opensearch/opensearch --namespace zetaris --set image.tag=2.11.0 --set serviceAccount.name=zetaris-sa
Option 2: Using git repo
git clone https://github.com/zetaris/opensearch.git
helm uninstall opensearch -n zetaris
helm upgrade --install opensearch opensearch/hitachi --namespace zetaris --set image.tag=2.11.0 --set serviceAccount.name=zetaris-sa
6. Lightning Deployments
Add below helm repos,
helm repo add helm-zetaris-lightning-solr https://$zettoken@raw.githubusercontent.com/zetaris/HelmDeployment/$zetrelease/solr/helm/
helm repo add helm-zetaris-lightning-server https://$zettoken@raw.githubusercontent.com/zetaris/zetaris-lightning/$zetrelease/deployments/helm/
helm repo add helm-zetaris-lightning-api https://$zettoken@raw.githubusercontent.com/zetaris/lightning-api/$zetrelease/deployments/helm/
helm repo add helm-zetaris-lightning-gui https://$zettoken@raw.githubusercontent.com/zetaris/lightning-gui/$zetrelease/deployments/helm/
helm repo add helm-zetaris-lightning-zeppelin https://$zettoken@raw.githubusercontent.com/zetaris/zetaris-zeppelin/$zetrelease/deployments/helm/
helm repo add helm-zetaris-digiavatar https://$zettoken@raw.githubusercontent.com/zetaris/digiavatar/$zetrelease/deployments/helm/
helm repo add helm-zetaris-privateai https://$zettoken@raw.githubusercontent.com/zetaris/privateai/$zetrelease/deployments/helm/
helm repo add helm-zetaris-airflow-ing https://$zettoken@raw.githubusercontent.com/zetaris/HelmDeployment/$zetrelease/airflow-ing/helm/
Replace the below values and apply helm install,
Update image and domain configs.
serverImage=zetregistry.azurecr.io/lightning-server:v2.4.1.0-latest
apiImage=zetregistry.azurecr.io/lightning-api:v2.4.1.0-latest
guiImage=zetregistry.azurecr.io/lightning-gui:v2.4.1.0-latest
computesparkimage=zetregistry.azurecr.io/lightning-server:v2.4.1.0-latest
computeprestoimageRepo=zetregistry.azurecr.io/lightning-presto-app
computeprestoimageTag=zv2.4.1.0-latest
zeppelinImage=zetregistry.azurecr.io/lightning-zeppelin-app:zv2.4.1.0-latest
Update postgres details here,
dbdns=postgres
dbport=5432
metadb=metastore
auditdb=audit_log
dbuser=rds_admin
dbpwd=<Your chosen password in Step 4>
sslmode=require
metastoreJdbcUrl="jdbc:postgresql://$dbdns:$dbport/$metadb?user=$dbuser&password=$dbpwd&sslmode=$sslmode"
auditLogJdbcUrl="jdbc:postgresql://$dbdns:$dbport/$auditdb?user=$dbuser&password=$dbpwd&sslmode=$sslmode"
For gcp GCS as storage
gcpGCSid="". <GCS Name>
gcpGCSdata="" <GCS Access Point -create for data>
gcpGCSzeppelin="". <GCS Access Point -create for Zeppelin with 1001 and 0777 permission>
tls_cert_arn="" <Available from Cert Manager once certs are ready>
Set the protocol (In case the customer wants to proceed without certificate then)
dnsprotocol=http
For guidance on creating public and private keys, please refer to the following resource: https://stackoverflow.com/questions/44474516/how-to-create-public-and-private-key-with-openssl.
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
openssl rsa -in private_key.pem -outform DER -out private_key.der
openssl rsa -in private_key.pem -pubout -outform DER -out public_key.der
base64 private_key.der > private_key_der.txt
base64 private_key.der > private_key_der.txt
privateKeyDer=$(openssl rsa -in private_key.pem -outform DER | base64 -w0)
publicKeyDer==$(openssl rsa -in private_key.pem -pubout -outform DER | base64 -w0)
Lightning solr deployment
helm upgrade --install lightning-solr \
helm-zetaris-lightning-solr/solr \
--namespace zetaris \
--set storageClassName=$storageclass \
--set environment=$environment
Lightning server deployment
helm upgrade --install lightning-server \
helm-zetaris-lightning-server/lightning-server \
--namespace zetaris \
--set db.metastore.jdbcUrl=$metastorejdbcUrl \
--set db.auditLog.dbcUrl=$auditLogjdbcUrl \
--set storage.storageClass.name=$storageclass \
--set environment=$environment \
--set encryption.privateKeyDer=$privateKeyDer \
--set encryption.publicKeyDer=$publicKeyDer \
--set storage.gcp.GCS.id=$gcpGCSid \
--set storage.gcp.GCS.data=$gcpGCSdata \
--set serverImage=$serverImage \
--set storage.storageClass.create=false \
--set storage.gcp.GCS.driver=GCS.csi.gcp.com
Lightning API deployment
helm upgrade --install lightning-api \
helm-zetaris-lightning-api/lightning-api \
--namespace zetaris \
--set environment=$environment \
--set apiImage=$apiImage \
--set ingress.protocol=$dnsprotocol \
--set gcp.ingress.tls_cert_arn=$tls_cert_arn \
--set ingress.baseDomain=$basednsname \
--set db.metastore.jdbcUrl=$metastorejdbcUrl \
--set db.auditLog.jdbcUrl=$auditLogjdbcUrl \
--set compute.spark.image=$computesparkimage \
--set compute.presto.imageRepo=$computeprestoimageRepo \
--set compute.presto.imageTag=$computeprestoimageTag
Lightning GUI deployment
helm upgrade --install lightning-gui \
helm-zetaris-lightning-gui/lightning-gui \
--namespace zetaris \
--set guiImage=$guiImage \
--set ingress.protocol=$dnsprotocol \
--set gcp.ingress.tls_cert_arn=$tls_cert_arn \
--set ingress.baseDomain=$basednsname \
--set environment=$environment
Lightning Zeppelin deployment
helm upgrade --install lightning-zeppelin \
helm-zetaris-lightning-zeppelin/lightning-zeppelin \
--namespace zetaris \
--set ingress.protocol=$dnsprotocol \
--set ingress.baseDomain=$basednsname \
--set ingress.gcp.tls_cert_arn=$tls_cert_arn \
--set storage.storageClass.name=$storageclass \
--set environment=$environment \
--set storage.gcp.GCS.id=$gcpGCSid \
--set storage.gcp.GCS.zeppelin=$gcpGCSzeppelin \
--set zeppelin.image=$zeppelinImage
Digiavatar deployment
helm upgrade --install digiavatar helm-zetaris-digiavatar/digiavatar --namespace zetaris \
--set ingressprotocol=$dnsprotocol --set ingress.baseDomain=$basednsname \
--set environment=$environment \
--set serviceaccount=zetaris-sa
Private AI deployment
GCSDriver=GCS.csi.gcp.com
GCSAccesspointPrivateai= <Access Point ID from GCS Instance for PrivateAI>
helm upgrade --install privateai helm-zetaris-privateai/privateai --namespace zetaris \
--set ingress.baseDomain=$basednsname \
--set ingressprotocol=$dnsprotocol \
--set environment=$environment \
--set gpuenabled=false \
--set storageclass=$storageclass \
--set serviceaccount.name=zetaris-sa \
--set ingress.gcp.tls_cert_arn=$tlsCertArn \
--set gcp.GCS.id=$GCSId \
--set gcp.GCS.driver=$GCSDriver \
--set gcp.GCS.privateai=$GCSAccesspointPrivateai
Airflow Deployment
GCSAccesspointDags= <Access Point ID from GCS Instance for Airflow>
helm upgrade --install airflow-ing \
helm-zetaris-airflow-ing/airflow-ing \
--namespace airflow \
--set environment=$environment \
--set storage.gcp.GCS.id=$GCSId \
--set storage.gcp.GCS.driver=$GCSDriver \
--set storage.gcp.GCS.data=$GCSAccesspointDags \
--set ingress.baseDomain=$basednsname \
--set ingress.gcp.tls_cert_arn=$tlsCertArn \
--set gcp.dataVolume=pv-dags-gcp
Final deployment should contain running pods as shown below;
NAME READY STATUS RESTARTS AGE
digiavatar-5f69b44d68-w2tfs 1/1 Running 0 12h
lightning-api-988b7cbb6-nhwnk 1/1 Running 0 12h
lightning-gui-7f9b6bbb4d-h52bn 1/1 Running 0 179mlightning-server-5439ec967ddf56d2-exec-1 0/1 Pending 0 174m
lightning-server-5439ec967ddf56d2-exec-2 0/1 Pending 0 174m
lightning-server-5439ec967ddf56d2-exec-3 0/1 Pending 0 174m
lightning-server-driver 1/1 Running 0 13h
lightning-solr-555664b544-fpwlc 1/1 Running 0 12h
lightning-zeppelin-7975969f5f-fl6mj 1/1 Running 0 12h
ollama-6977d564d8-l495p 1/1 Running 0 68m
opensearch-cluster-master-0 1/1 Running 0 179m
opensearch-cluster-master-1 1/1 Running 0 179m
os-opensearch-dashboards-57f49f85fc-zpfsn 1/1 Running 0 12h
privateai-566df5d786-68f49 1/1 Running 0 162m
8. Create Lightning user account
· Login to ‘lightning-server-driver’ pod
kubectl exec --tty --stdin lightning-server-driver -n zetaris /bin/sh
· Run the dev-account.sh script
cd /home/zetaris/lightning/bin/
./dev-account.sh
9. Launch Zetaris
Please Open browser window (preferably chrome) from any computer that is connected to VM and can access the machine on which Zetaris is installed.
Use URL from route created earlier (e.g. http://zetaris-zetaris.apps.zetaris.iac.ssc) to launch Zetaris from browser window.