One way to install Prophecy is to use Helm. Installation requirements and Helm chart values are outlined in this page.
For an example step-by-step installation, visit AWS installation guide.
Kubernetes cluster requirements
- Kubernetes Version: 1.21 or later.
- Namespace: Dedicated namespace for Prophecy installation.
- Permissions: Ability to install custom resources (CRDs) or deploy an additional provided Helm chart.
- Cluster Configuration: Supports multi-AZ or single-AZ mode.
-
Block Storage: Required; in multi-AZ mode, set volume binding mode to
waitforfirstconsumer. - Persistent Storage: Dynamic provisioning (e.g., gp2) required.
Helm requirements
- Helm: Must be installed to deploy Prophecy.
- Custom Domain Hosting: Requires SSL certificates and DNS configuration; include during Helm installation.
-
Private Container Registry: Pull images from the Prophecy image registry and push to your private registry. Set
global.repositoryduring Helm installation.
Minimum resource requirements
Review the resource requirements for a Prophecy deployment in the article Resource requirements and monitoring.
Install Prophecy
The helm install command installs Prophecy via the provided Helm chart.
-
To retrieve the Prophecy Helm chart, run the command:
helm repo add prophecy https://prophecy-chart.s3.us-west-2.amazonaws.com -
If you want to install Prophecy using all of the provided values, the simplest command to run is:
helm -n <namespace> install prophecy prophecy/prophecy-installer --version <prophecy-chart-version> --set global.customer.name=<customer-name> --set global.prophecy.rootUrl=<IDE-URL>
Read through the rest of this page to understand how to customize the installation command.
Helm chart values
Prophecy is installed via Helm chart called the Prophecy-installer. The following are the commonly used values which can be configured for this helm chart. The Helm chart values can be broadly classified into 5 different sections:
- Athena: Configurations related to the management plane.
- Global: Configurations for all common values between components like Athena, Postgres, and Platform.
- Postgres: Configurations related to Postgres or at the database level.
- Platform: Configurations regarding various platform components like elastic search, Prometheus, Grafana, etc.
- Version: The Prophecy version you want to deploy.
Common configurations
Here are some configurations that are commonly changed from the default.
Nginx ingress controller
By default, Prophecy will install its own managed Nginx ingress controller during the Helm installation. If you want to use your own Nginx ingress controller already installed on your Kubernetes cluster, you can do so if it supports external service exposure via a LoadBalancer. You'll have to set global.disableIngressCreation to true, and set global.ingressController.class to the appropriate name.
Private container registry
During the Helm installation, docker images are pulled from Prophecy's public Google Container Registry. If you want to use your own private container registry, you can specify it by setting the global.repository value during installation. Make sure to push all the images to your private registry first.
Custom domain names
If you are using Prophecy's domain, you don't have to worry about hostname resolution. However, if you want to use your own domain, you need to create SSL certificates, set up the correct DNS configurations, and include that information during the Helm installation.
Additional example Helm install commands
-
Using your own SSL certificates without internet connectivity:
helm -n <namespace> install prophecy prophecy/prophecy-installer --version <prophecy-chart-version> --set global.customer.name=<customer name> --set global.prophecy.rootUrl=<Base URL> --set global.prophecy.wildcardCert.useExternal=true --set global.prophecy.wildcardCert.name=<wildcard cert secret name> --set athena.controlcenter.disabled=true --set global.repository=<Image repository> --set global.prophecy.imagePullSecret=<Image pull secret name> --set athena.isDarkCluster=true -
Using an external SQL database:
helm -n <namespace> upgrade -i prophecy-installer prophecy/prophecy-installer --version 3.3.1-1 --set version=3.3.1.1 --set global.customer.cluster={cluster-name} --set global.prophecy.rootUrl={cluster-name}-{customer-name}.dev.cloud.prophecy.io --set global.customer.name={customer-name} --set postgres.isExternalPostgres=true --set postgres.host={googlesql-dns-name} --set postgres.user={google-sql-user-name} --set postgres.password={google-sql-user-password} --debug