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 4 nodes.
Each node requires a minimum of 4 vCPU (intel / amd) and 16gb Memory (in AKS is this 4x D4as V4).
Each node comes with attached storage and we require a minimum of 32gb.
Our recommended starting infrastructure is the following:
Customer Type | AWS | Azure | Object store |
SMB | m5a.xlarge EBS gp2* | 4x D4as V4 E10 - collectively 350GB*
| Standard As required for landing zone and archive |
Enterprise | m5.xlarge EBS gp3*
| 4x D4ds V4 P15 - collectively 350GB* | Standard As required for landing zone and archive |
Storage is split by definition in k8s PV config
Kubernetes nodes will have additional storage depending on configuration
Storage tiers for Persistent Volumes (PV).
The Postgres PV StorageClass can be upgraded to an high IOPS tiers (1000 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: 200Gi
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.