Installation

There are two ways to deploy Octopus, one is Helm chart, another one bases on Kustomize.

1. Octopus Helm Chart

note

The charts in this repository requires Helm version 3.x or later, read and follow the Helm installation guide.

The Octopus-Chart repository hosts official Helm charts for Octopus. These charts are used to deploy Octopus to the Kubernetes/k3s Cluster.

Add the Octopus Helm Chart repo

In order to be able to use the charts in this repository, add the name and URL to your Helm client:

helm repo add octopus http://charts.cnrancher.com/octopus
helm repo update

Installing the Chart

To install the Octopus Chart into your Kubernetes/k3s cluster use:

kubectl create ns octopus-system
helm install --namespace octopus-system myapp octopus/octopus

After installation succeeds, you can get a status of Chart

helm status myapp -n octopus-system

If you want to delete your Chart, use this command:

helm delete myapp -n octopus-system

The command removes nearly all the Kubernetes components associated with the chart and deletes the Helm release.

Helm Chart and Octopus Support

Visit the Octopus github issues for support.

2. Bases on Kustomize

Kustomize is an interesting tool in solving Kubernetes application management, it uses a different idea then Helm, which calls Declarative Application Management.

Octopus uses Kustomize to generate its installer manifest files, the installer YAML file is under the deploy/e2e directory on Github, user can use it to install the octopus and its adaptors.

  1. Install Octopus

    kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/deploy/e2e/all_in_one.yaml
  2. Install Octopus Official 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

Animated quick demo

asciicast

process instruction
# deploy octopus without webhook kubectl apply -f deploy/e2e/all_in_one.yaml # confirm the octopus deployment kubectl get all -n octopus-system kubectl get crd | grep devicelinks # deploy a devicelink cat adaptors/dummy/deploy/e2e/dl_specialdevice.yaml kubectl apply -f adaptors/dummy/deploy/e2e/dl_specialdevice.yaml # confirm the state of devicelink kubectl get dl living-room-fan -n default # deploy dummy adaptor and model kubectl apply -f adaptors/dummy/deploy/e2e/all_in_one.yaml # confirm the dummy adaptor deployment kubectl get daemonset octopus-adaptor-dummy-adaptor -n octopus-system kubectl get crd | grep dummyspecialdevice # confirm the state of devicelink kubectl get dl living-room-fan -n default # watch the device instance kubectl get dummyspecialdevice living-room-fan -n default -w