How to deploy on your cloud
K can be deployed on your cloud using Kubernetes (k8s).
Minimum infrastructure requirements
We recommend using K8s on managed providers such as Amazon’s Elastic Kubernetes Service (EKS), Google’s Kubernetes Engine (GKE) and Microsoft Azure’s Kubernetes Service (AKS). You can also deploy K8s on bare metal (Openshift for example provides a K8s service for bare metal)
Compute requirements
K is deployed into a node pool of at least 3 nodes.
Each node requires a minimum of 4 vCPU (intel / amd) and 16gb Memory (in AKS is this D4as V4).
Each node should be attached storage minimum of 32gb.
Our recommended starting infrastructure is the following:
Minimum Requirements | Example: Azure | Example: AWS | |
---|---|---|---|
Kubernetes nodes | 3 | 3 | 3 |
Node storage | 32GB | 32GB ephemeral | 32GB EBS gp2 |
Compute per node | 4 VCPU | D4as_v4 | m5.xlarge |
Memory per node | 16GB | ||
Storage | 350GiB 500 IOPS 100mb/s Storage is split by definition in k8s PV config | Azure Managed Disks E15 | EBS gp3 |
Storage tiers for Persistent Volumes (PV).
The Postgres PV StorageClass can be upgraded to an high IOPS tiers (3000 IOPS+) when loading larger customers. (Customers where there are 1M+ data objects)
Ask your Kubernetes admin in your organisation for the StorageClassName to use. Note storage costs will depend on your storage class and cloud provider.
Example update the postgres/k8s/postgres.yaml
...
volumeClaimTemplates:
- metadata:
name: postgres-storage
annotations:
pv.beta.kubernetes.io/gid: "100111"
spec:
storageClassName: "YOUR HIGHER IOPS Storage class"
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 256Gi
Landing zone
A landing areas is used collect metadata and log files.
Landing zone is ideally hosted on either AWS s3 or Azure Blob.
Using local storage is a currently untested option that can be further explored with us.
Network requirements
The Kubernetes node pool must be deployed into a single zone / subnet. This subnet must have a minimum of /25 CIDR (128 IP addresses) whcih will be used for K platform services, Ingress load balancer and Kubernetes services.
The Kubernetes service needs access to the storage where metadata and logging files are stored
K does not need internet access but some features (help widget) will become disabled.