Install Datalore Enterprise in EKS
Get Datalore configuration files
Clone the datalore-configs repository.
Check out the required release branch (2022.1.4 for the latest one).
Configure AWS access
Install AWS CLI.
Run
aws configure
Enter your AWS Access Key ID and AWS Secret Access Key.
Install EKS
Download terraform CLI.
Navigate to the aws/eks directory in the datalore-configs repository.
In the main.tf file, change
us-east-1
to your aws region underlocals.region
Run
terraform init
Run
terraform apply
Add an EKS cluster config to your k8s configurations
Run aws eks update-kubeconfig --name datalore
Configure traffic routing
Decide what hostnames you will use for
Hub
and forDatalore
(later referred to asHUB_HOSTNAME
andDATALORE_HOSTNAME
).Run the following command to install the Nginx ingress controller:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/aws/deploy.yaml
Run
kubectl get -n ingress-nginx svc ingress-nginx-controller
Find the hostname in the EXTERNAL-IP field (ELB_HOSTNAME later). Create CNAME DNS records for bothHUB_HOSTNAME
andDATALORE_HOSTNAME
pointing toELB_HOSTNAME
.Add SSL certificates and keys to Kubernetes secrets (replace
*_HOSTNAME.cert
and*_HOSTNAME.key
to the names of the certificate and the private key files for the respective domain):kubectl create secret tls datalore-tls --cert=DATALORE_HOSTNAME.cert --key=DATALORE_HOSTNAME.key
kubectl create secret tls hub-tls --cert=HUB_HOSTNAME.cert --key=HUB_HOSTNAME.key
Prepare a
datalore-ingress.yaml
ingress config with the following content (replace*_HOSTNAME
with the respective hostnames):apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: datalore-tls-nginx annotations: kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - HUB_HOSTNAME secretName: hub-tls - hosts: - DATALORE_HOSTNAME secretName: datalore-tls rules: - host: HUB_HOSTNAME http: paths: - path: / pathType: Prefix backend: service: name: hub port: number: 8082 - host: DATALORE_HOSTNAME http: paths: - path: / pathType: Prefix backend: service: name: datalore-on-premise port: number: 8080Apply
datalore-ingress.yaml
:kubectl apply -f datalore-ingress.yaml
Install and configure Hub
Follow the Hub installation procedure.
When configuring Hub volumes (step 1), replace the contents of
statefulSet.yaml
with the following:apiVersion: apps/v1 kind: StatefulSet metadata: name: hub spec: serviceName: hub selector: matchLabels: io.kompose.service: hub template: metadata: labels: io.kompose.service: hub spec: securityContext: fsGroup: 13001 containers: - image: jetbrains/hub:2021.1.14194 name: hub ports: - containerPort: 8080 volumeMounts: - mountPath: /opt/hub/data name: hub-volume subPath: data - mountPath: /opt/hub/conf name: hub-volume subPath: conf - mountPath: /opt/hub/logs name: hub-volume subPath: logs - mountPath: /opt/hub/backups name: hub-volume subPath: backups volumeClaimTemplates: - metadata: name: hub-volume spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10G
Install and configure Datalore
Follow the Datalore installation procedure.
When configuring Datalore volumes, replace the contents of
volumes_config.yaml
with the following (you may set volume sizes if necessary):apiVersion: apps/v1 kind: StatefulSet metadata: name: datalore-on-premise spec: volumeClaimTemplates: - metadata: name: postgresql-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 20G - metadata: name: storage spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 100G