arhat

module
v0.0.0-...-b463ae7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 15, 2022 License: Apache-2.0

README

arhat 阿罗汉

CI Build PkgGoDev GoReportCard codecov

The reference agent implementation of aranya-proto and EdgeDevice

Features

  • Easy deployment for any platform, even in browser (requires wasm support)
  • No external dependencies (socat, tar) required for kubectl cp/port-forward/exec/attach
  • Detailed and customizable node infromation report
    • Customize Kubernetes Node annotations and labels in conjunction with aranya in local configuration
  • Flexible connectivity
    • MQTT 3.1.1 (including aws-iot-core, azure-iot-hub, gcp-iot-core)
      • supports tcp, tcp/tls, websocket, websocket/tls
    • CoAP
      • supports tcp, tcp/tls, udp, udp/dtls
    • gRPC
  • Extensible plugin system built with libext
    • Create your own peripheral controller and integrate all kinds of peripherals into Kubernetes API with ease (e.g. use kubectl to turn on/off lights)
  • Unified metrics collection
    • Efficient built-in dynamic prometheus node_exporter/windows-exporter with no port exposed
    • Collect all kinds of metrics with aranya and Kubernetes API, including metrics from peripherals

Project State

TL;DR: Currently you can treate araht as a cloud native replacement of sshd with node metrics reporting support working with aranya through Kubernetes API

Currently state of functionalities:

  • Stable:
    • Port-forward
    • Exec/Attach
    • Node metrics collecting
    • Extended node info reporting
    • MQTT connectivity
    • gRPC connectivity
  • Unstable (subject to design change):
    • Peripheral extension
    • Runtime extension
  • Experimental (not fully supported):
    • Networking with abbot
    • Remote storage mount
    • Credential update
    • CoAP connectivity
    • NATS Stream connectivity
  • TODO:
    • Conditional connectivity switch on unrecoverable error
    • Kafka connectivity
    • MQTT-SN connectivity

NOTE: This project lacks tests, all kinds of contribution especially tests are welcome!

Design

NOTE: This is not the final design, and docs may not reflect the actual implementation for now

Build

see docs/Build

Configuration

see docs/Configuration

Run

LICENSE

Copyright 2020 The arhat.dev Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Directories

Path Synopsis
cmd
pkg
client
Package client
Package client
client/nats
Package nats provides connectivity implementation based on nats client
Package nats provides connectivity implementation based on nats client

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL