Giter VIP home page Giter VIP logo

edged's Introduction

edged

Edge daemon for running on edge nodes deployed by jtcressy-home

Controller Design

stateDiagram-v2
    [*] --> EdgeDaemon
    state EdgeDaemon {
        [*] --> TailscaleController
        state TailscaleController {
            [*] --> NoState
            NoState --> NeedsLogin
            NeedsLogin --> Running: QRCodeScanned
            Running --> NeedsLogin: Logout
            NoState --> Running: Connect
            Running --> Stopped: Disconnect
            Stopped --> Running: Connect
        }
        --
        [*] --> ProvisioningController
        state ProvisioningController {
            [*] --> WaitingForConfig
            WaitingForConfig --> WaitingForConfig: FetchMachineIDToken
            WaitingForConfig --> Configuring: TagsAssigned
            Configuring --> Configuring: FetchMachineConfig
            Configuring --> Configured: ConfigDone
            Configured --> Configured: NoChanges
            Configured --> WaitingForConfig: ConfigChanged
        }
        --
        [*] --> DisplayController
        state DisplayController {
            [*] --> b: IfTailscaleNeedsAuth
            [*] --> r: IfTailscaleRunning
            state "DisplayBootstrap" as b
            state "DisplayRunning" as r
        }
    }
Loading

TailscaleController

The TailscaleController will be responsible for managing the Tailscale daemon connection state, such as assisting with bootstrapping by triggering the interactive login flow to maintain a fresh authentication URL until an operator bootstraps the machine with Tailscale control/admin panel.

ProvisioningController

The ProvisioningController will be responsible for configuring the device based on the devices tags from the Tailscale admin panel. The tags basically act as roles for the device to assume, such as k8s master, k8s worker and so on. It is not yet determined what tools will be used to complete configuration or bootstrap kubernetes. This is a work-in-progress.

DisplayController

The DisplayController is responsible for managing various display methods for reporting the status of the Tailscale and Provisioning controllers. It is intended to control a handful of physical displays depending on device type.

Currently, it is in the roadmap to support the following display types:

  • TUI via tty0 (replaces standard getty login prompt on linux)
  • SSD1306 OLED display via i2c
  • HD44780 LCD display via i2c (either 16x2 or 20x4)

The Auth URL exposed by Tailscale will be displayed as a QR code when possible, or standard shortened text URL otherwise.

edged's People

Contributors

jtcressy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.