Skip to content

Latest commit

 

History

History
96 lines (55 loc) · 3.72 KB

PREREQUISITES.md

File metadata and controls

96 lines (55 loc) · 3.72 KB

Pre-Requisites

Before deploying the Gen3 application using Helm, ensure that the following prerequisites are met:

  • Kubernetes cluster with minimum version 1.21. We use Amazon EKS for our production deployments

  • Postgres 13.

    • We use Amazon aurora serverless v2 for our production deployments.
    • Note: Managing a database on Kubernetes can be a complex topic, and may result in data loss. We recommend using a managed database service outside of Kubernetes. In production, we use Amazon Aurora Serverless V2 or RDS for Postgres.
    • It is possible for development purposes to run Postgres on kubernetes, if you set global.dev=true in your Values.yaml file, the postgres will be deployed. See this document for more information on running postgres on kubernetes
  • Elasticsearch version 6.8

    • Note: Managing elasticsearch on Kubernetes can be a complex topic, and may result in data loss. We recommend using a managed elasticsearch service outside of Kubernetes. In production, we use Amazon Opensearch service for Elasticsearch.
    • We are working on supporting newer versions of elasticsearch in gen3, and should soon support ES7/8, but as of now we require version 6.8

Prerequisites

Kubernetes cluster

Any kubernetes cluster should work. We are testing with EKS, AKS, GKE and Rancher Desktop.

It is suggested to use Rancher Desktop as Kubernetes on your laptop, especially on M1 Mac's. You also get ingress and other benefits out of the box.

Postgres

We recommend managing postgres outside of Gen3 deployments, so your deployments are stateless, and the state of gen3 is managed outside of the helm deployments. This way you may upgrade, or take down the helm deployments, and can restore the state of your gen3 deployment.

However, there is a possibility to run postgres on kubernetes, alongside gen3 for development purposes.

To deploy postgres and elasticsearch that is bundled with gen3 helm charts set the global.dev to true. By default these will run with no persistence storage enabled, and are mostly for CI/Development environments.

If you want to enable persistence for postgres add the following to your values.yaml file for the gen3 chart

postgresql:
  primary:
    persistence:
      enabled: true

This will create a PVC for the postgres container. Unfortunately, helm does not delete PVC on uninstall, so if you enable persistence you might have to manually clean this up between installs by running the following command:

kubectl delete pvc data-<release-name>-postgresql-0

NOTE: Gen3 will autogenerate the secrets for postgres if you delete and re-install, unless the credentials for each service are supplied via the values.yaml

In cases where you are using persistent postgres, provide the postgres username and password explicitely using the values.yaml file, so the gen3 deployments will skip generating those credentials.

Example:

arborist:
  postgres:
    dbCreate: true
    username: gen3_arborist
    password: <password>

(Repeat for all services)

For a detailed description of each service and it's configuration options see CONFIGURATION.md for more information.

We need a postgres database.

For development/CI clusters an instance of postgres is deployed and automatically configured for you.

For production environments please provision postgres outside of helm, and fill out these values to provide a master password for postgres.

global:
  postgres:
    dbCreate: true
    master:
      host: insert.postgres.hostname.here
      username: postgres
      password: <Insert.Password.Here>
      port: "5432"