Skip to main content

containerized applications anywhere

GoDoc Go Report Card GitHub Actions GitHub Actions GitHub Actions

What can edge do for you?

Install edge

edge is a Go binary with an embedded web UI built with Angular. It runs on Linux, Windows, macOS, and as container.

Run as container

docker run -p 8080:8080 edgeflare/edge

Optionally, supply:

  • --volume $HOME/.kube/config:/workspace/.kube/config for edge to use local kubeconfig
  • --volume $HOME/.ssh/id_rsa:/workspace/.ssh/id_rsa for edge to use local SSH private key

Download binary

Get Linux, Mac and Windows binary from Releases page. Or

curl -sfL https://raw.githubusercontent.com/edgeflare/edge/master/install.sh | bash -

Install from source

git clone [email protected]:edgeflare/edge.git && cd edge
make build-linux-amd64 # make build-darwin-arm64, make build-windows-amd64

WebUI

edge server # alias: s
# Web UI available at http://localhost:8080
# See edge s --help for more options

Explore readonly WebUI at demo.edgeflare.io

How to use edge?

Running privileged commands, eg, k3s on remote machines often requires sudo privileges without being prompted for a password. To verify or enable passwordless sudo access for a user on a remote SSH host, first, SSH into the host using ssh yoursshuser@remotehost. Then, use sudo visudo to edit the sudoers file and add or ensure line similar to below is present and correctly formatted. Most cloud VMs have this settup for root users.

<yoursshuser> ALL=(ALL) NOPASSWD: ALL

Optionally, enable key-based auth instead of password

# ssh-keygen # if you dont have SSH private key, eg at, ~/.ssh/id_rsa
ssh-copy-id remote_user@remote_server_ip # run on workstation

Install k3s using edge

edge k3s install --host 10.164.0.11 --user admin
# or use aliases eg cluster, c for k3s
edge c i -H 192.168.1.101 -u admin

Because the k3s commands are executed over SSH, sshd needs to be running on target host. Addionally, for local installation (install k3s in the same machine as edge) set --host=LAN_IP instead of 127.0.0.1 or localhost.

Join k3s agent or server node to a cluster

edge c join --server 10.164.0.11 -H 10.164.0.12 -u admin
edge c j -s 10.164.0.11 -H 10.164.0.12 -u admin --master # server in HA mode

copy-kubeconfig from k3s server node

to ~/.kube/${SERVER_IP}.config

edge c copy-kubeconfig -H 10.164.0.11 -u admin # alias: cpk
# Kubeconfig saved to /Users/<user>/.kube/10.164.0.11.config

minimal kubectl subcommand

GET. Supply resource argument in PLURALS, eg, pods, namespaces, deployments

edge kubectl get nodes
edge k g namespaces
edge k --namespace kube-system g pods
edge k -n kube-system --output yaml g helmcharts traefik-crd

CREATE resources

cat <<EOF | edge k create -f -
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: grafana-test
namespace: default
spec:
chart: grafana
repo: https://charts.bitnami.com/bitnami
targetNamespace: default
version: 9.6.5
EOF
# edge k apply -f chart.yaml

DELETE resources

edge k -n default delete helmcharts grafana-test
# edge k delete -f chart.yaml

query clusters and nodes in embedded sqlite3

edge c ls # list clusters
# ID Status Version Is HA APIserver CreatedAt
# b5fb728e341e Running v1.28.4+k3s2 false 10.164.0.11 2023-12-13T00:09:36Z

edge c nodes --clusterid b5fb728e341e # list nodes in a cluster
# Node ID IP Role Status CreatedAt
# 33e37c119a90 10.164.0.11 server Running 2023-12-13T00:09:36Z
# 443b2b12f320 10.164.0.12 agent Running 2023-12-13T00:09:36Z

Uninstall / destroy k3s

edge c destroy -H 10.164.0.11 -u admin # alias: uninstall
edge c d -H 10.164.0.12 -u admin -a # if agent node

How to contribute to edge?

We welcome contributions to edge! If you're interested in helping improve this tool, please refer to our CONTRIBUTING.md for guidelines on how to get started.