Installing Edera on Linode

Installing Edera on Linode

This guide walks you through a quick setup of Edera on a Linode 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

On Your Install Machine

  1. Make a directory called edera and navigate into it.
  2. Create a file called install.sh with the following:
#! /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'
  1. Create a file called edera-install.sh with the following:
#!/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.0.3-rc4"

$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/edera-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/edera-installer:${TAG}
  1. Run:
chmod +x *.sh
  1. Save your GAR key to key.json.
  2. Run the install script for each node:
INSTALLER_IP={linode_node_ip} ./install.sh

Kick the Tires

Confirm Your 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

Verify it worked:

kubectl get runtimeclass

Expected output:

NAME    HANDLER   AGE
edera   edera     1d

Test with a Pod

Here’s an example Pod spec using Edera:

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 the pod status:

kubectl get pods -n edera-protect

Troubleshooting

If the pod isn’t coming up:

Check the pod details:

kubectl describe pod edera-protect-pod -n edera-protect

Look at the logs:

kubectl logs edera-protect-pod -n edera-protect

Verify the RuntimeClass:

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

You should see:

edera

Want More?

Full documentation: docs.edera.dev
Still stuck? Email support@edera.dev — we like solving problems.

Last updated on