Deploying Kyvos Resources on GCP
This documentation is for Kyvos 2026.8.x. To view documentation for other Kyvos versions, click here. |
|---|
Overview
This section describes how to deploy Kyvos resources on Google Cloud Platform using Terraform scripts to automate the creation and configuration of required infrastructure components.
Download the terraform.tar file (available in GCP Installation Files) onto your Cloud Shell.
Configure the gcloud command-line tool to use your project by running
gcloud config set project [MY_PROJECT], replacing [MY_PROJECT] with your project ID.
Note
After opening the terminal in Cloud Shell, ensure that Cloud Shell is configured to operate within the same project where you intend to deploy your resources.
Untar the terraform.tar file.
Access the kyvosparams.tfvars file located in the conf directory, and configure the parameters as needed for your deployment
Enter details for Kyvos resources in the kyvosparams.tfvars file:
Parameter | Description |
|---|---|
projectId | Enter the project ID. Note: This project ID will be used for the Kyvos deployment. |
region | Enter the region to deploy Kyvos resources. |
deploymentType | Specify the deployment type. Valid values are: SNS (Single Node Standard) or multi-node. |
enableDr | Set the value as true or false.
Note: The disaster recovery is supported for Single Node Standard automated deployments. |
drRegion | Specify the region so that the replica should create in the disaster recovery region. Note: To ensure the selected region and disaster region form a valid dual-region pair, see the Google documentation. |
recoverkyvoscluster | Setting the value to true will enable complete disaster recovery as secondary resources will create in the specified disaster recovery region. |
existingVpcName | Enter a name of the existing VPC. Note: If this field is left blank, a new VPC will be created. |
existingvpcProjectId | Enter the project ID of the existing VPC. |
existingSubnetworkName | Enter name of the existing VPC subnet. |
existingSubnetworkDr | Enter the name of the existing subnetwork that must reside in the drRegion. Note: This is applicable only when the value of the enableDr is set to true. |
createNetworkFirewall | To create firewall rules, set the value of this parameter to true. Note:
|
customPrefixNameVPC | If the value of the existing VPC name is left blank, enter the prefix name to be used for VPC to be created. |
customPrefixNameSubNetwork | If the value of the existing subnetwork name is left blank, enter the prefix name to be used for VPC to be created. |
ipCidrRange | Enter the value of ipCidrRange if value of the existing VPC name is left blank. |
ipCidrRangeReplicate | Enter the value of ipCidrRange. Note: This is applicable if the value of existingVpcName is left blank and enableDr is set to true. |
vpcConnectorName | Enter the name of the VPC Connector to be used with GCP functions. |
customImage | Set the value to true to use custom image for deployment. |
customSourceImage | Enter the source of customSourceImage in format “project/project-name/global/images/image-name” |
multiAzDeployment | Set the value to true for a multi-availability zone deployment. |
snsInstanceType | Enter the instance type. |
snsDataVolumeSizeGB | Enter the data volume size in GB. |
snsCacheVolumeCount | Enter the cache volume count. |
snsCacheVolumeSizeGB | Enter the cache volume size in GB. |
snsCacheVolumeType | Enter the cache volume type as pd-ssd. |
snsVolumeType | Enter the volume type as pd-ssd. |
kmCount | The number of Kyvos Manager instances to be launched. |
kmInstanceType | Instance type of Kyvos Manager The supported instance type is n4-standard-4 and n2-standard-4. |
kmVolumeSizeGB | Size of the disk to be attached to the Kyvos Manager. |
kmVolumeType | Type of the disk for KM (pd-ssd). Note: The hyperdisk-balanced disk type is supported for n4 instance type |
hostNameBasedDeployment | Change the value to true to use the hostname for the cluster deployment. |
createLoadBalancer | Set the value as true to create load balancer. By default, the value is set as false. |
enableWebServerHA | Set the value as true for enabling webserver and Kyvos Manager High Availability By default, the value is set as false. |
webServerInstanceType | Configure the Web Server instance type. |
webServerVolumeSizeGB | Size of the disk to be attached for the Web Server. |
webServerVolumeType | Type of the disk for the Web Server (pd-ssd). Note: The hyperdisk-balanced disk type is supported for n4 instance type |
qeCount | The number of instances to be used as query engines. |
qeInstanceType | Instance type of Query Engine (Instance type: n4-highmem-4 and n2-highmem-4). |
qeDataVolumeSizeGB | Size of the disk to be attached with Query Engines. |
qeCacheVolumeSizeGB | Size of the disk to be attached for the cache. |
qeCacheVolumeCount | The number of disks to be attached to the cache. |
qeCacheVolumeType | Type of the disk for the Query Engine (pd-ssd). Note: The hyperdisk-balanced disk type is supported for n4 instance type |
biCount | Enter the number of instances to be used as the Analytical Server. |
biInstanceType | Instance type of Analytical Server (Instance type: n4-standard-8 and n2-standard-8). |
biVolumeCount | The number of disks to be attached to the Analytical Server. |
biVolumeSizeGB | Size of the disk to be attached to the Analytical Server. |
biVolumeType | Type of the disk for the Query Engine (pd-ssd). Note: The hyperdisk-balanced disk type is supported for n4 instance type |
createGcpFunctions | Set the value as true to configure GCP Functions in Kyvos. |
dedicatedCompute | Set the value of a dedicated Compute cluster to true, if you want to create a new instance group. The default value is set to false. |
dedicatedComputeMinInstanceCount | By default, the minimum instance group for scaling dedicated compute server is set to 1. You can change the value as needed. |
dedicatedComputeMaxInstanceCount | By default, the maximum instance group for scaling dedicated compute server is set to 5. You can change the value as needed. |
dedicatedComputeInstanceGroupVmType | Specify the required configuration. However, the ‘n2-standard-16’ and ‘n4-standard-16’ is the minimum configuration. |
dedicatedComputeInstanceVolumeSize | Enter the dedicated compute instance volume size. |
dedicatedComputeInstanceVolumeType | Change the value of below parameter to use a different disk type. For more information regarding disk types, visit Google documentation. |
createCloudSql | By default, the value is set to ‘false’. To create CloudSQL, set the value to ‘true'. Note: The CloudSQL is created only with the PostgreSQL 16.13. |
cloudSqlInstanceType | Enter the cloudSQL instance type. |
existingKyvosCloudSqlName | Enter existing Kyvos cloud SQL name. Note: Use these configuration if you want to use existingCloudSql. |
existingKyvosManagerCloudSqlName | Enter existing Kyvos Manager cloud SQL name. Note: Use these configuration if you want to use existingCloudSql. |
sharedRepo | Set the value as true or false.
|
kyvosManagerDbPassword | Enter the Kyvos Manager database password. |
kyvosDbPassword | Enter the Kyvos database password. |
createServiceAccount | Change the value to false if you want to use the existing Service Account. |
serviceAccountName | Enter the Service Account name to be attached to all Kyvos Virtual Machines. |
enableNodeScaling | Set the value to false to disable the addition of permission required for Node Scaling on Service Account. |
secretManagerName | Provide the name of the existing Secret Manager. Note: If you do not specify the Secret Manager, Kyvos deploys with a new secret manager by default. |
secretManagerProjectId | Provide the name of the Project ID in which the existing Secret Manager is created. |
customPrefixNameBI | A prefix is to be added before the name of BI virtual machines. |
customPrefixNameBIDisk | A prefix is to be added before the name of BI Disks. |
customPrefixNameQE | A prefix is to be added before the name of Query Engine virtual machines. |
customPrefixNameQEDisk | A prefix is to be added before the name of Query Engine disks. |
customPrefixNameKM | A prefix is to be added before the name of the Kyvos Manager virtual machine. |
customPrefixNameKMDataDisk | A prefix is to be added before the name of the Kyvos Manager disk. |
customPrefixNameProxySubNetwork, | A prefix is to be added before the name of proxy sub network. |
customPrefixNameWebServer, | A prefix is to be added before the name of web server. |
customPrefixNameWebDataDisk | A prefix is to be added before the name of web data disk. |
customPrefixNameSNS | A prefix is to be added before the name of Single Node Standard. |
customPrefixNameSNSDisk | A prefix is to be added before the name of Single Node Standard disk. |
enableEncryption | Set the value to true to enable encryption for the deployment. Encryption will be enabled for Secret Manager, google storage buckets, and disks. |
cmkKeyRingName | If this field is left blank, a new CMK key ring will be created. If you want to use an existing key ring, ensure that you Bring Your Own Key. The key should be located in the same region as deployment. Note: Bring Your Own Key: Enter the name of your key ring if encryption is set to true. |
cmkKeyName | If this field is left blank, a new CMK key will be created. If you want to use an existing key, ensure that you Bring Your Own Key. The key should be located in the same region as deployment. Note: Bring Your Own Key: Enter the name of your key if encryption is set to true. |
bucketName | Enter the name of your bucket. Note: If the bucket name does not exist, a new bucket with the same name will be created. |
kyvosWorkDir | Provide the path of the Kyvos work directory. |
kyvosClusterName | Name of the Kyvos cluster to be deployed. |
kyvosbundleKey | Key to access Kyvos bundle. |
sshPublicKey | Text of the SSH public key for authentication. |
sshPrivateKey | Enter the SSH private Key text of the pem file. Note: The text must be in base64 encoded. |
kyvosLicenseFileValue | Enter a valid Kyvos license key. Note: It should be base64 encoded |
additionalLabels | Labels to be added to the resources. |
Navigate to the
binfolder, execute the./deploy.shcommand. This command will initialize Terraform, generate a plan, and apply the configuration as specified in thekyvosparams.tfvarsfile.Review the output to ensure Terraform will create, modify, or delete the resources as expected.
If you need to interrupt the script while it's running, press Ctrl+C.
If you need to make modifications to the
kyvosparams.tfvarsfile, do so accordingly.Upon successful execution of this command, Terraform will display the outputs as specified in the configuration.
Terraform will generate an
output.jsonfile containing all outputs. This output will be used for Kyvos Manager configurations.To delete the previously created deployment resources, execute the
./deploy.sh destroycommand from thebinfolder.
On this page:
Download GCP Installation Files:
Read more:
Important points
You can monitor to the Cluster Deployment Status page in Kyvos Manager, where you can view the deployment progress, logs, warnings, and error messages, if any.
In case of any failures in the Cloud-init service on any of the Kyvos Instances, you can view the Cloud-init logs directly from the GCP Cloud logging UI. Refer to the ‘Troubleshooting GCP deployment’ section for details.
Nodes added to a Kyvos cluster via Kyvos Manager node scaling will not be deleted by the
terraform destroycommand.After successfully executing the configuration, Terraform will automatically generate a
.tfstatefile. To create a new deployment using the same configuration files, first delete the existing deployment configured by those files.To change the
sourceImageorkmSourceImage, navigate to the source folder, open thevariables.tffile, and update the default value as needed.