Run the Edera installer

Run the Edera installer


This guide walks you through installing Edera on a Linux instance. It’s designed for users who are comfortable working in a terminal and want to get up and running fast.

You’ll start by preparing your local system with the required tools, then use the provided scripts to install Edera.

This guide is intentionally light—just the essentials to get Edera deployed and operational.

Prerequisites

Before you get started:

  • You’ll need a Google Artifact Registry (GAR) key from us. Don’t have one? Contact support@edera.dev.
  • SSH access to your target node.

Step 1: Prepare Your install machine

Create a directory and two scripts:

mkdir edera && cd edera

install.sh

#! /bin/bash

# Check that the $INSTALLER_IP is set
if [ -z "$INSTALLER_IP" ]; then
  echo "INSTALLER_IP is not set"
  exit 1
fi

scp ./key.json root@$INSTALLER_IP:/tmp/
scp ./edera-install.sh root@$INSTALLER_IP:~
ssh "root@$INSTALLER_IP" 'chmod +x ~/edera-install.sh && ~/edera-install.sh'

edera-install.sh

#!/bin/bash

CLIENT=""
for cmd in docker nerdctl; do
  if which $cmd &>/dev/null; then
    CLIENT=$(which $cmd)
  fi
done

if [ -z $CLIENT ]; then
  echo "no client found"
  exit 1
fi

echo "using $CLIENT"

TAG="v1.3.2"

$CLIENT login us-central1-docker.pkg.dev -u _json_key --password-stdin </tmp/key.json
$CLIENT pull us-central1-docker.pkg.dev/edera-protect/staging/protect-installer:${TAG}

$CLIENT run   --privileged   --env 'TARGET_DIR=/host'   --volume '/:/host'   --volume "$HOME/.docker/config.json:/root/.docker/config.json"   --pid host   --net host   us-central1-docker.pkg.dev/edera-protect/staging/protect-installer:${TAG}

Make them executable:

chmod +x *.sh

Save your GAR key as key.json.

Step 2: Run the installer on each node

Run the installer script against your node:

INSTALLER_IP={node_ip} ./install.sh

Step 3: Verify installation (if you are using Kubernetes)

Confirm nodes are back online

watch kubectl get nodes

Apply the Edera RuntimeClass

kubectl apply -f runtime.yaml

runtime.yaml:

apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
  name: edera
handler: edera

Check:

kubectl get runtimeclass

Expected output:

NAME    HANDLER   AGE
edera   edera     1d

Test with a Pod

kubectl apply -f edera-protect-pod.yaml

edera-protect-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: edera-protect-pod
  namespace: edera-protect
spec:
  runtimeClassName: edera
  containers:
    - name: nginx
      image: nginx:1.25.3

Check pod status:

kubectl get pods -n edera-protect

Troubleshooting

  • Check pod details:

    kubectl describe pod edera-protect-pod -n edera-protect
  • Look at logs:

    kubectl logs edera-protect-pod -n edera-protect
  • Verify RuntimeClass:

    kubectl get pod edera-protect-pod -n edera-protect -o=jsonpath="{.spec.runtimeClassName}"

    You should see:

    edera

Want More?

Last updated on