Skip to content

Prerequisites

bbrauzzi edited this page Mar 10, 2022 · 4 revisions

This section will guide through the installation of Ades' prerequisistes: kubectl and helm.

Install docker

To install Docker please execute the following commands:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

To run the Docker daemon and containers as a non-root user please execute the following command and then log out and back in again:

sudo groupadd docker
sudo usermod -a -G docker  $USER

Install kubectl

To install kubectl execute the following commands:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

Install helm

To install helm execute the following commands:

curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Setup a Minio S3 Object Storage on kubernetes (optional)

The Ades stores the processing results on a S3 bucket. For simplicity , we recommend using a S3 storage running on an external cloud provider such as AWS, but it is also possible to manually setup one on your Kubernetes cluster using Minio.

Create a file called my-minio-fs.yaml :

## Create persistent volume claim for minio to store data.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-minio-fs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
## Run minio fs deployment.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-minio-fs
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: my-minio-fs
  template:
    metadata:
      labels:
        app: my-minio-fs
    spec:
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: my-minio-fs-pvc
      containers:
      - name: my-minio-fs
        volumeMounts:
        - name: data 
          mountPath: "/data"
        image: minio/minio:RELEASE.2017-11-22T19-55-46Z
        args:
        - server
        - /data
        env:
        - name: MINIO_ACCESS_KEY
          value: "minio"
        - name: MINIO_SECRET_KEY
          value: "minio123"
        ports:
        - containerPort: 9000
          hostPort: 9000

Create a namespace called minio

kubectl create ns minio

Deploy Minio using the following command:

kubectl create -f my-minio-fs.yaml -n minio

To make the above deployment accessible from other namespaces, run the command below:

kubectl expose deployment/my-minio-fs --type="NodePort" --port 9000 -n minio

Run the port-forwarding of the Minio service

kubectl port-forward svc/my-minio-fs 9000:9000 -n minio

Access the Minio dashboard from your browser at the address http://localhost:9000/minio

Using the dashboard, create a bucket called processingresults

Now you can configure the stageout storage endpoint in the values.yaml file with the following values:

STAGEOUT_AWS_SERVICEURL: http://my-minio-fs.minio.svc.cluster.local:9000  
STAGEOUT_AWS_ACCESS_KEY_ID: minio  
STAGEOUT_AWS_SECRET_ACCESS_KEY: minio123  
STAGEOUT_AWS_REGION: RegionOne  
STAGEOUT_OUTPUT: s3://processingresults