Deploy Hydrolix

Now that the environment is setup on Linode, we need to create the Hydrolix configuration hydrolix.yaml:

kind: HydrolixCluster
  name: <Please provide your namespace>
  admin_email: <Please provide your email>
  db_bucket_url: <replace with your bucket URL>
  hydrolix_url: <replace with your comany hostname for Hydrolix>
  catalog_db_admin_user: linpostgres
  catalog_db_admin_db: postgres
  catalog_db_host: <replace with your private network host created before>
  pg_ssl_mode: require
    AWS_ACCESS_KEY_ID: <Please provide the AWS_ACCESS_KEY_ID created earlier>
  ip_allowlist: <This allow the cluster to be fully accessible, you can restrict to your IP>
  scale_profile: prod <You can change the scale_profile to whatever fits your needs>
      replicas: 0

We also need a secret.yaml which contains our AWS Secret Key:

apiVersion: v1
kind: Secret
  name: curated
  namespace: <Please provide your namespace>
  AWS_SECRET_ACCESS_KEY: <Please provide the AWS_SECRET_ACCESS_KEY created earlier>
  ROOT_DB_PASSWORD: <Please provide your postgres password created earlier>
type: Opaque

And finally we need to use the kustomization.yaml to apply:

namespace: <Please provide your namespace>

  -<Please provide your namespace>
  - secret.yaml
  - hydrolix.yaml

After all those files are created you can deploy Hydrolix by using the following command:

kubectl apply -k .

This needs to be run from the folder containing the different yaml files created earlier.

Deploy the Hydrolix Operator

The Hydrolix operator resources API generates all the Kubernetes resource definitions required for deploying the operator, service accounts, and role permissions. Once deployed, the operator will manage all Hydrolix cluster deployments. To upgrade a deployment to a new version, repeat this step.

curl "${HDX_KUBERNETES_NAMESPACE}" > operator.yaml

Apply this operator configuration to your Kubernetes cluster with the following command:

kubectl apply -f operator.yaml

Create your DNS record

The final step in your deployment should be creating the DNS record so you are able to access the services.
To retrieve the traefik IP you can use the kubectl get services command.

kubectl get services
intake-api    ClusterIP   <none>          8080/TCP                               2m51s
keycloak      ClusterIP     <none>          8080/TCP                               2m51s
native        ClusterIP    <none>          9000/TCP                               2m51s
postgres      ClusterIP      None           <none>          5432/TCP                               2m51s
prometheus    ClusterIP      None           <none>          9090/TCP                               2m51s
query-head    ClusterIP    <none>          9000/TCP,8088/TCP                      2m51s
rabbit        ClusterIP      None           <none>          5672/TCP,15692/TCP,4369/TCP            2m51s
redpanda      ClusterIP      None           <none>          9092/TCP,8082/TCP,33146/TCP,9644/TCP   2m51s
stream-head   ClusterIP     <none>          8089/TCP                               2m51s
traefik       LoadBalancer    WW.XX.YYY.ZZZ   80:31708/TCP,9000:32344/TCP            2m50s
turbine-api   ClusterIP   <none>          3000/TCP                               2m51s
ui            ClusterIP    <none>          80/TCP                                 2m50s
validator     ClusterIP   <none>          8089/TCP                               2m51s
version       ClusterIP   <none>          23925/TCP                              2m51s
zoo           ClusterIP      None           <none>          2181/TCP                               2m51s

The public IP address for traefik is the A record you should create.

What’s Next

Enable TLS