All Projects → arhat-dev → aranya

arhat-dev / aranya

Licence: Apache-2.0 license
Control all kinds of devices with Kubernetes

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to aranya

httpbook
Quickly and easily send REST, Soap, GraphQL, GRPC, MQTT and WebSocket requests directly within Visual Studio Code
Stars: ✭ 18 (+12.5%)
Mutual labels:  mqtt, grpc
Rabbitmq Server
Open source RabbitMQ: core server and tier 1 (built-in) plugins
Stars: ✭ 9,064 (+56550%)
Mutual labels:  mqtt, amqp
meshquitto
A simple Arduino project, which aims to provide a gateway between a mesh network of ESP8266's and a remote MQTT broker.
Stars: ✭ 37 (+131.25%)
Mutual labels:  mqtt, mesh
iris
Distributed streaming key-value storage
Stars: ✭ 55 (+243.75%)
Mutual labels:  grpc, edge
Msgflo
Distributed Flow-Based Programming via message queues
Stars: ✭ 136 (+750%)
Mutual labels:  mqtt, amqp
Hyperf
🚀 A coroutine framework that focuses on hyperspeed and flexibility. Building microservice or middleware with ease.
Stars: ✭ 4,206 (+26187.5%)
Mutual labels:  amqp, grpc
Activemq Artemis
Mirror of Apache ActiveMQ Artemis
Stars: ✭ 685 (+4181.25%)
Mutual labels:  mqtt, amqp
Micro Mesh
gRPC微服务架构实践
Stars: ✭ 50 (+212.5%)
Mutual labels:  grpc, rbac
Baetyl
Extend cloud computing, data and service seamlessly to edge devices.
Stars: ✭ 1,655 (+10243.75%)
Mutual labels:  mqtt, edge
Spec
The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs.
Stars: ✭ 1,860 (+11525%)
Mutual labels:  mqtt, amqp
ESPressIoT
This project covers somewhat advances features for an espresso machine controller.
Stars: ✭ 31 (+93.75%)
Mutual labels:  mqtt, controller
Enmasse
EnMasse - Self-service messaging on Kubernetes and OpenShift
Stars: ✭ 185 (+1056.25%)
Mutual labels:  mqtt, amqp
Mainflux
Industrial IoT Messaging and Device Management Platform
Stars: ✭ 1,341 (+8281.25%)
Mutual labels:  mqtt, edge
Tsung
Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.
Stars: ✭ 2,185 (+13556.25%)
Mutual labels:  mqtt, amqp
Hivemq Mqtt Tensorflow Kafka Realtime Iot Machine Learning Training Inference
Real Time Big Data / IoT Machine Learning (Model Training and Inference) with HiveMQ (MQTT), TensorFlow IO and Apache Kafka - no additional data store like S3, HDFS or Spark required
Stars: ✭ 204 (+1175%)
Mutual labels:  mqtt, grpc
bazel-cache
Minimal cloud oriented Bazel gRPC cache
Stars: ✭ 33 (+106.25%)
Mutual labels:  grpc
swifitch-software
Software for SWIFITCH HW
Stars: ✭ 12 (-25%)
Mutual labels:  mqtt
zepto
⚡️Lightweight web framework written in go
Stars: ✭ 115 (+618.75%)
Mutual labels:  grpc
amqp-bunny
[READ-ONLY] The queue-interop compatible AMQP protocol impl. Based on bunny/bunny lib
Stars: ✭ 32 (+100%)
Mutual labels:  amqp
GoogleSpeak
No description or website provided.
Stars: ✭ 14 (-12.5%)
Mutual labels:  mqtt

aranya 阿兰若

CI PkgGoDev GoReportCard codecov

The refernce controller implementation of aranya-proto, manages all your devices in Kubernetes

overview

Features

  • Integrate all kinds of devices with any operating system into existing Kubernetes clusters

    • Reuse your existing cloud infrastructure for devices (Scheduling, Authorization, etc)
    • Group your devices with namespace (soft multi-tenancy), highly scalable (see docs/Multi-tenancy.md)
  • Deploy and manage large scale devices with kubectl (Kubernetes API) and ansible

    • kubectl attach/exec/cp/logs/port-forward to both host and containers
    • ansible with kubectl connection, see docs/Ansible.md
  • Easy deployment

    • Single custom resource (EdgeDevice) to rule all kinds of devices and workloads
    • Edge devices get integrated into Kubernetes with lightweight protocols like MQTT, CoAP
  • Flexible cluster network mesh in remote sites as a addon (experimental)

    • Deploy and manage cluster network in device host/runtime with abbot container
  • Standard CSI with remote access (experimental, see Remote CSI)

    • Only mount operation happens in remote devices, everything else is your cloud Kubernetes cluster's duty

NOTE: For details of the host management, please refer to Maintenance #Host Management

Goals

  • Make it possible to build absolutely distributed cluster with a single Kubernetes control plane
    • Deploy nodes to anywhere with any kind of network reachability, regardless of IP Address, NAT, Firewall ...
  • Extend Kubernetes to be a universal control plane for everything
    • Not only powerful servers, single-board computers, but also embedded devices, micro controllers
  • Serve thousands of devices in a Kubernetes cluster at reasonable cost
    • No direct requests to apiserver from nodes
  • More secure node deployment
    • No cluster credentials will be stored in nodes
  • Offer a more developer friendly way to create custom runtimes using message oriented protocols

Non-Goals

  • Simplify Kubernetes
  • Create a new Cloud/IoT ecosystem

FAQ

You may have a lot of questions regarding this project, such as Why not k3s?:

see docs/FAQ.md or file a issue for discussion!

Project State

EXPERIMENTAL, USE AT YOUR OWN RISK

TL;DR: Currently you can treate aranya as a management service for arhat with prometheus node metrics collecting support

Currently state of functionalities:

  • Stable:
    • Port-forward
    • Exec/Attach
    • Node metrics collecting
    • Extended node info reporting and node field hooks
    • MQTT connectivity
    • gRPC connectivity
  • Unstable (subject to design change):
    • Role & ClusterRole management
    • GCP Cloud IoT connectivity
    • Azure IoT Hub connectivity
  • Experimental (not fully supported):
    • Pod management
    • Network mesh with abbot
    • Remote CSI
    • Credential delivery
    • AMQP 0.9 connectivity
  • TODO:
    • NATS Stream connectivity
    • Kafka connectivity
    • AMQP 1.0 connectivity

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

Kubernetes Pod Support

  • Pod environment variables source
    • configMap
    • secret
    • fieldRef
    • plain text
  • Pod volume
    • source
      • configMap
      • secret
      • hostPath
      • persistentVolumeClaim (backed by CSI only)
        • subPath
      • csi (inline CSI)
    • mount type
      • VolumeMount
      • VolumeDevice
  • Pod network (requires abbot)
    • device host/runtime <-> cluster
    • device host/runtime <-> device host/runtime

NOTE: You MUST NOT use unsupported features in your pod spec (assigned to EdgeDevice nodes), which could result unexpected behavior!

Deployment

see docs/Deployment for deployment worklflow of aranya and EdgeDevice

Development

see docs/development for topics like Build, Design, Releasing

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].