AWS account
EKS cluster 1.18 or greater
AWS has an Elastic Container Registries service, but this service can't auto-create repository on push. Therefore, we can't use it to store our serving docker image.
You can use an external registry, like a DockerHub, Artifactory, VMWare Harbour or your own registry. Also, you can use AWS marketplace to find registries solutions or just install a container registry with the certificate on EC2.
After uploading the model, hydro-serving-manager makes docker image, stores it in the registry (path https://urlregistry.example.com/modelname:modelversion) and kubelet service should be able to download it. In values.yaml
or values-production.yaml
set
We used 2 databases, PostgreSQL 10 or greater and MongoDB 4 or greater.
For AWS you can set up RDS PostgreSQL or AuroraDB with database engine postgresql:10 or greater
For MongoDB, you can use AWS marketplace or install it on EC2. DocumentDB doesn't work now.
After creating the instance, connect to the RDS instance and create a new database with additional params like a maintenance window, backup options, etc.
We used s3 to store training data, models metrics, and docker registry storage.
You can use 1 bucket for all service. They will create a path or separate buckets for hydro-vizualisations and sonar.
We used minio as an s3 proxy. You can use any s3 like object storage. To use your own, specify url in the persistence block
If you want to use s3, set s3 and credentials:
In that case, minio will be installed with s3 backend mode and work as an s3 gateway.
All services try to create s3 buckets if they don't exist. By default:
sonar will create hydrosphere-feature-lake
vizualization will create hydrosphere-visualization-artifacts
docker-registry will create hydrosphere-model-registry
Some cases required a different environments. You can use different machine groups for different installations or just be sure, that hydrosphere installs only some type of nodes.
Tolerations help you set these rules.
This example configures all deployments to deploy only nodes with taint node: highPerformance
More informations about tolerations here
All our helm charts have resource params and java services have javaOpts. These params help to configure requests and limits resources. JavaOpts help tune JVM machine.
Resources set pod requests and limit params for CPU and memory.
More info about resources