...
Build Demo App
Build ParsecClient
$ cd cassini/smartcities/ParsecClient/
$ ./build.sh
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
parsec-client v1.0 aef2a010b6b5 3 months ago 17.3MB
$
sudo docker save aef2a010b6b5 > parsec-client-v1.0-docker-aarch64.tar
The saved parsec-client-v1.0-docker-aarch64.tar will use to delpoy on SONiC and Nvidia Nona.
Build NodeAuthServer
$ cd cassini/smartcities/NodeAuthServer/
$ go build
Build NodeAuthAgent
$ cd cassini/smartcities/NodeAuthAgent/
$ go build
Build CameraClient
$ cd cassini/smartcities/CameraClient/
$ go build
Build TritonClient
$ cd cassini/smartcities/TritonClient/
$ ./build.sh
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
triton
-client v1.0 deaf4b1027ed 3 weeks ago 1.32 GB$
sudo docker save deaf4b1027ed > triton-client-v1.0-docker-aarch64.tar
The saved triton-client-v1.0-docker-aarch64.tar will use to delpoy on Nvidia Nona.
Deploy Demo App on SONiC
Connect to SONiC
Use serial console connect to SONiC device, serial param is below:Baud rate: 115200
Data bit: 8
Parity: None
Stop bits: 1
Contorol: None
Deploy Parsec server
add system user parsec (NEED login by root)
$ sudo useradd -m parsec
$ sudo passwd parsec
$ sudo usermod -s /bin/bash parsec
$ sudo groupadd parsec-clients
create necessary directorys (NEED login by root)
$ sudo mkdir /var/lib/parsec
$ sudo chown parsec:parsec /var/lib/parsec
$ sudo chmod 700 /var/lib/parsec
$ sudo mkdir /etc/parsec
$ sudo chown parsec:parsec /etc/parsec
$ sudo chmod 700 /etc/parsec
$ sudo mkdir /usr/libexec/parsec
$ sudo chown parsec:parsec /usr/libexec/parsec
$ sudo chmod 700 /usr/libexec/parsec
$ sudo mkdir /home/parsec/run/
$ sudo chown parsec:parsec-clients /home/parsec/run/
$ sudo chmod 750 /home/parsec/run/
deploy files (NEED login by parsec)
$ cd ~
$ pwd
/home/parsec
$ cp xxx/parsec/target/release/parsec /usr/libexec/parsec
$ chmod +x /usr/libexec/parsec/parsec
$ cp xxx/parsec/config.toml /etc/parsec/config.toml
Note: need unmark allow_root = true in config.toml.add service for systemctl (NEED login by root)
$ sudo vim /etc/systemd/system/parsec.service
[Unit]
Description=Parsec Service
Documentation=https://parallaxsecond.github.io/parsec-book/parsec_service/install_parsec_linux.html[Service]
WorkingDirectory=/home/parsec/
ExecStart=/usr/libexec/parsec/parsec --config /etc/parsec/config.toml[Install]
WantedBy=multi-user.targetstart parsec servive (NEED login by root)
$ sudo systemctl enable parsec.service
$ sudo systemctl start parsec.service
Deploy Parsec Client
- import docker image parsec-client-v1.0-docker-aarch64.tar.
$ sudo docker load < parsec-client-v1.0-docker-aarch64.tar
$ sudo docker images
$ sudo docker tag d396f7adeed3 parsec-client:v1.0
- run the image with --restart=always, then test the client work with parsec server$ sudo docker run --restart=always -d -p8300:8300 -v /home/parsec/run:/run/parsec parsec-client:v1.0
$ curl -v -d '{"Name": "GoClient"}' 127.0.0.1:8300/client
...
HTTP/1.1 200 OK
... - create key pairs and export the public key, later the public key will import to Nvidia nano device.
$ curl -v -d '{"Name": "GoClient"}' 127.0.0.1:8300/client
$ curl -v -d '{"Name": "GoClient", "KeyName": "MyEncKey"}' 127.0.0.1:8300/keyenc
$ curl -v -X GET -d '{"Name": "GoClient", "KeyName": "MyEncKey"}' 127.0.0.1:8300/key
- import docker image parsec-client-v1.0-docker-aarch64.tar.
Deploy NodeAuthServer
- deploy files
$ sudo mkdir /usr/libexec/NodeAuth
$ sudo cp xxx/NodeAuthServer /usr/libexec/NodeAuth
$ sudo chmod +x /usr/libexec/NodeAuth/NodeAuthServer
- add service for systemctl
$ sudo vim /etc/systemd/system/NodeAuthServer.service
[Unit]
Description=Node Auth Server[Service]
WorkingDirectory=/usr/libexec/NodeAuth
ExecStart=/usr/libexec/NodeAuth/NodeAuthServer[Install]
WantedBy=multi-user.target - start parsec servive
$ sudo systemctl enable NodeAuthServer.service
$ sudo systemctl start NodeAuthServer.service
- deploy files
Deploy k3s Server
- install and get the server token
$ curl -sfL https://get.k3s.io | sh -s - --docker
$ sudo cat /var/lib/rancher/k3s/server/node-tokenK10f3a81f8be38c4f230e45d330b153a6266a665d3310764d0d09075c2d4a40aa5b::server:a3abba7155f2f7b4684dbc548724ed22
- install and get the server token
Deploy EdgeFaas
- run by docker
$ sudo docker run --name edgefaas --restart=always -d -p8888:8080 registry.gitlab.com/arm-research/smarter/edgefaas/edgefaas:v1-1-0
- install demo apis, 192.168.0.118 is EdgeFaas device, 192.168.0.104 is PC.
$ curl 192.168.0.118:8888/mgmt -d "http://192.168.0.104:8080/sysinfo.py"
$ curl 192.168.0.118:8888/mgmt -d "http://192.168.0.104:8080/camera.py"
$ curl 192.168.0.118:8888/mgmt -d "http://192.168.0.104:8080/image.py"
- run by docker
Deploy Demo App on Nvidia Nano
Deploy Parsec Server
prepared files directory structure
parsec-server-aarch64/
parsec
config.toml
parsec.service
add system user parsec (NEED login by root)
$ sudo useradd -m parsec
$ sudo passwd parsec
$ sudo usermod -s /bin/bash parsec
$ sudo loginctl enable-linger parsec
$ sudo groupadd parsec-clients
create necessary directorys (NEED login by root)
$ sudo mkdir /var/lib/parsec
$ sudo chown parsec:parsec /var/lib/parsec
$ sudo chmod 700 /var/lib/parsec
$ sudo mkdir /etc/parsec
$ sudo chown parsec:parsec /etc/parsec
$ sudo chmod 700 /etc/parsec
$ sudo mkdir /usr/libexec/parsec
$ sudo chown parsec:parsec /usr/libexec/parsec
$ sudo chmod 700 /usr/libexec/parsec
$ sudo mkdir /home/parsec/run/
$ sudo chown parsec:parsec-clients /home/parsec/run/
$ sudo chmod 750 /home/parsec/run/
deploy files (NEED login by parsec)
$ cp xxx/parsec-server-aarch64/parsec /usr/libexec/parsec
$ chmod +x /usr/libexec/parsec/parsec
$ cp xxx/parsec-server-aarch64/config.toml /etc/parsec/config.toml
$ mkdir -p ~/.config/systemd/user
$ cp xxx/parsec-server-aarch64/parsec.service ~/.config/systemd/user
start parsec servive (NEED login by parsec)
$ systemctl --user enable parsec
$ systemctl --user start parsec
Deploy docker
Deploy Parsec client
Deploy NodeAuthAgent
Deploy k3s agent
Deploy Triton Server
Deploy Triton client
Maintenance
Blue Print Package Maintenance
...