Octopus
Octopus is no longer being actively maintained.
Octopus is a light-weight and cloud-native device management system for Kubernetes and k3s, it does not need to replace any basic components of the Kubernetes cluster. After Octopus deployed, the cluster can have the ability to manage edge devices as custom k8s resources.
Idea
Like a real octopus, Octopus consists of the brain
and limbs
. The brain
only needs to deploy one or automatically select a leader in HA mode. It only needs to process relatively concentrated information, such as verifying the existence of nodes and the existence of device models (types). Limbs need to be deployed on each edge node that can be connected to the device, and they communicate with the actual device through the device adaptor (Adaptors). Therefore, Octopus uses a DeviceLink YAML file (a custom-defined k8s object) to configure and manage its device connections.
For more details please refer to the official documentation.
Documentation
- Octopus
- Adaptors
- Contribution
Quick-start
There are two ways to deploy the Octopus, for quick-start, you can use the manifest YAML file to bring up the Octopus. The installer YAML file is under the deploy/e2e directory on Github.
# install octopus
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/deploy/e2e/all_in_one.yaml
# install ui
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus-api-server/master/deploy/e2e/all_in_one.yaml
# install adaptors
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/modbus/deploy/e2e/all_in_one.yaml
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/opcua/deploy/e2e/all_in_one.yaml
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/mqtt/deploy/e2e/all_in_one.yaml
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/ble/deploy/e2e/all_in_one.yaml
$ kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/dummy/deploy/e2e/all_in_one.yaml
Optionally, you can use this repository hosts official Helm charts for Octopus. These charts are used to deploy Octopus to the Kubernetes/k3s Cluster.
# add octopus helm repo
$ helm repo add octopus http://charts.cnrancher.com/octopus
$ helm repo update
# create octopus-system namespace
$ kubectl create ns octopus-system
# install octopus, ui and adaptors
$ helm install --namespace octopus-system octopus octopus/octopus
Source code
Octopus is 100% open source software. Project source code is spread across a number of repos:
Name | Repo Address |
---|---|
Octopus UI | https://github.com/cnrancher/octopus-ui |
Octopus API Server | https://github.com/cnrancher/octopus-api-server |
Octopus Chart | https://github.com/cnrancher/octopus-chart |
Octopus Simulator | https://github.com/cnrancher/octopus-simulator |
Octopus Docs | https://github.com/cnrancher/docs-octopus |
License
Copyright (c) 2020 Rancher Labs, Inc.
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 LICENSE file for details.
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.