Deploy Shifu on KubeEdge
The popular open source project KubeEdge
provides developers with a cloud-edge collaboration solution based on Kubernetes
. It successfully integrates the cluster orchestration capabilities of Kubernetes
into the IoT edge scenario, making the scheduling and management of edge computing power lighter and more efficient.
As an open source IoT development framework, Shifu is also based on Kubernetes
, its compatibility with multiple devices and virtualization will help KubeEdge
to be applied at the edge. In fact, the two complement each other very well in terms of capabilities. Not only compatible to multiple devices, Shifu
running on KubeEdge
can easily manage lightweight Pod
running on the edge.
With the powerful combination of KubeEdge
+ Shifu, we can abstract IoT devices into API
and turn the traditional complex IoT development model into a simple web development model!
Let's see how to make Shifu run on KubeEdge
and provide value for developers!
Introduction
This article will briefly describe the steps to deploy Shifu on KubeEdge
and integrate into Hikvision camera (using RTSP
for video streaming), so that KubeEdge
architecture can support Hikvision camera.
The architecture used in this article is as follows.
Preparation
The following services and tools are used in this article.
Kubernetes
: 1.21.5kubectl
kubeadm
kubelet
Golang
: 1.16.10Docker
: 19.03.9KubeEdge
: 1.7.2
Meanwhile, the Cloud side
and Edge side
of KubeEdge
are running on separate Linux
instances, but both on Ubuntu Server 20.04
environment.
You need to install all the above mentioned services and tools on the Cloud side
, but only Docker
and KubeEdge
on the Edge side
.
Step 1 Deploy Kubernetes on the Cloud side
You can check official tutorial on Kubernetes to finish the deployment.
After the deployment is complete we should see the terminal print out the following message.
Step 2 Deploy Shifu on Cloud side
Clone the Github
repository of Shifu to your computer.
git clone https://github.com/Edgenesis/shifu.git
Then you can deploy Shifu with the following command:
kubectl apply -f shifu/pkg/k8s/crd/install/shifu_install.yml
Once deployed we should see that the CRD controller
for Shifu has been deployed.
Step 3 Deploy KubeEdge on Cloud side
For this step, you can refer to KubeEdge
's official tutorial and use keadm
for deployment.
After the deployment, we should see the following message printed on the terminal.
Step 4 Get the token on the Cloud side
Run the following command.
keadm gettoken
Please save the token
you got for the Edge side.
Now that the Cloud side configuration is completed, we switch to the Edge side machine and add it to the cluster.
Step 5 Join the cluster on the Edge side
Run the following command on the Edge side.
keadm join --cloudcore-ipport="<Cloud-side advertise-address>:10000" --token=<token obtained in step 4>
After the deployment is complete we should see the terminal print out the following message.
At this point switch back to the Cloud side and look at the nodes.
We can see that both the Cloud side and the Edge side have been deployed.
Now we can start deploying the device.
With KubeEdge
, we can perform Kubernetes
operations only on the Cloud side and deploy it to the Edge side, while keeping the Edge side free of Kubernetes
components to keep lightweight.
Step 6 Modify the Hikvision camera configuration file on the Cloud side
Shifu needs a simple configuration file to generate digital twin. In Shifu, the digital twin is called deviceShifu and runs in a cluster as Pod
.
Shifu provides configuration file to access to Hikvision cameras, here's the path https://github.com/Edgenesis/shifu/tree/main/examples/rtspDeviceShifu/
.
Shifu deploys deviceShifu on a machine with a full Kubernetes
instance by default. In a KubeEdge
environment, there is no need to run full Kubernetes
on the edge, so Shifu also has a lightweight deviceShifu for cloud-edge collaboration. We can change deviceshifu-camera-deployment.yaml
to use the edge-side deviceShifu and add nodeName
to deploy it to the edge node
:
Step 7 Deploy the Hikvision Camera Pod
On the Cloud side, run the following command.
kubectl apply -f shifu/examples/rtspDeviceShifu/camera-deployment
At this point, we can look at the Pod
associated with the camera.
Final step Confirmation on the Edge side
On the Edge side, we can see that the camera-related Docker container is already running:
We can simply call the capture
/stream
/info
/move
and a host of other HTTP API
s provided by deviceShifu to perform operations on the camera, such as the following motion picture.
Related commands.
curl edgedevice-camera/move
This completes all the steps we need to run Shifu on KubeEdge
.