A demonstration to build a FIWARE platform that works with Azure Blob Storage to record images captured by IoT cameras.
- copy
variables/env.temp
tovariables/env
, and edit variables to your own.
-
log in Azure
$ ./installation/01_azure_login.sh
-
create resource group
$ ./installation/02_azure_create_resourcegroup.sh
-
start Azure AKS
$ ./installation/03_azure_start_aks.sh
RESULT
$ kubectl get nodes NAME STATUS ROLES AGE VERSION aks-nodepool1-14606101-vmss000000 Ready agent 7m12s v1.24.0 aks-nodepool1-14606101-vmss000001 Ready agent 7m14s v1.24.0 aks-nodepool1-14606101-vmss000002 Ready agent 7m17s v1.24.0
-
start Azure Blob Storage
$ ./installation/04_azure_blobstorage.sh
-
start MongoDB Pods
$ ./installation/05_fiware_start_mongodb.sh
RESULT
$ kubectl get pods -l app.kubernetes.io/name=mongodb NAME READY STATUS RESTARTS AGE mongodb-0 1/1 Running 0 2m55s mongodb-1 1/1 Running 0 2m mongodb-2 1/1 Running 0 65s
-
construct MongoDB cluster
$ ./installation/06_fiware_setup_mongodb.sh
RESULT
[ { name: 'mongodb-0.mongodb-headless.default.svc.cluster.local:27017', stateStr: 'PRIMARY' }, { name: 'mongodb-1.mongodb-headless.default.svc.cluster.local:27017', stateStr: 'SECONDARY' }, { name: 'mongodb-2.mongodb-headless.default.svc.cluster.local:27017', stateStr: 'SECONDARY' } ]
-
after started MongoDB Cluster, start FIWARE Orion
$ ./installation/07_fiware_start_orion.sh
RESULT
$ kubectl get pods -l app=orion NAME READY STATUS RESTARTS AGE orion-54c98d69c7-4tjmh 1/1 Running 0 4m48s orion-54c98d69c7-964st 1/1 Running 0 4m48s orion-54c98d69c7-kgxrl 1/1 Running 0 4m48s
-
after started MongoDB Cluster and FIWARE Orion, start FIWARE Cygnus
$ ./installation/08_fiware_start_cygnus.sh
RESULT
$ kubectl get pods -l app=cygnus NAME READY STATUS RESTARTS AGE cygnus-6dc69bdd9f-l6kql 1/1 Running 0 105s cygnus-6dc69bdd9f-pzplw 1/1 Running 0 105s cygnus-6dc69bdd9f-w8dss 1/1 Running 0 105s
-
after started FIWARE components, start kong
$ ./installation/09_kong_start_kong.sh
RESULT
$ kubectl -n kong get pods NAME READY STATUS RESTARTS AGE ingress-kong-6454f9b96b-nbfsp 2/2 Running 0 4m52s ingress-kong-6454f9b96b-xz6mh 2/2 Running 0 4m52s ingress-kong-6454f9b96b-zx9qw 2/2 Running 0 4m52s
$ kubectl -n kong get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kong-proxy LoadBalancer 10.0.104.182 xxx.xxx.xxx.xxx 80:31629/TCP,443:30182/TCP 3m31s kong-validation-webhook ClusterIP 10.0.37.181 <none> 443/TCP
-
register A Record to Azure DNS, and get TLS certification from Let's Encrypt
$ ./installation/10_kong_start_cert-manager.sh
-
set the routing and security definitions
$ ./installation/11_kong_setup_kong.sh
RESULT
$ curl -i http://fiware-camera.example.com/ HTTP/1.1 404 Not Found Date: Sun, 26 Jun 2022 13:25:25 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Content-Length: 48 X-Kong-Response-Latency: 0 Server: kong/2.8.1 {"message":"no Route matched with those values"}
$ curl -i http://fiware-camera.example.com/version HTTP/1.1 301 Moved Permanently Date: Sun, 26 Jun 2022 13:26:10 GMT Content-Type: text/html Content-Length: 134 Connection: keep-alive Location: https://fiware-camera.example.com/version X-Kong-Response-Latency: 0 Server: kong/2.8.1 <html> <head><title>301 Moved Permanently</title></head> <body> <center><h1>301 Moved Permanently</h1></center> </body> </html>
$ curl -i https://fiware-camera.example.com/version HTTP/2 401 date: Sun, 26 Jun 2022 13:26:37 GMT content-type: application/json; charset=utf-8 www-authenticate: Key realm="kong" content-length: 45 x-kong-response-latency: 0 server: kong/2.8.1 { "message":"No API key found in request" }
$ curl -i -H "Authorization: ${API_TOKEN}" https://fiware-camera.example.com/version HTTP/2 200 content-type: application/json content-length: 656 fiware-correlator: f3fe3f82-f553-11ec-82c3-4a55b25ab823 date: Sun, 26 Jun 2022 13:29:06 GMT x-kong-upstream-latency: 4 x-kong-proxy-latency: 2 via: kong/2.8.1 { "orion" : { "version" : "3.4.0", "uptime" : "0 d, 0 h, 48 m, 20 s", "git_hash" : "e8ed9c5f363ab503ac406a9e62a213640d9c2864", "compile_time" : "Tue Dec 14 09:34:09 UTC 2021", "compiled_by" : "root", "compiled_in" : "5221bc0800ef", "release_date" : "Tue Dec 14 09:34:09 UTC 2021", "machine" : "x86_64", "doc" : "https://fiware-orion.rtfd.io/en/3.4.0/", "libversions": { "boost": "1_66", "libcurl": "libcurl/7.61.1 OpenSSL/1.1.1k zlib/1.2.11 nghttp2/1.33.0", "libmosquitto": "2.0.12", "libmicrohttpd": "0.9.70", "openssl": "1.1", "rapidjson": "1.1.0", "mongoc": "1.17.4", "bson": "1.17.4" } } }
-
register Entity
$ ./setup/01_create_camera_entity.sh
-
register Subscription
$ ./setup/02_subscribe_camera_entity.sh
-
install python 3.10 and poetry
-
install libraries required to run OpenCV4
-
install rust so that cryptography can be built
-
copy camera_client directory to IoT Camera
-
copy env file to IoT Camera
-
obtain the connection string to connect to Azure Blob Storage
$ ./variables/01_azure_storage_connectionstring.sh
-
log in to IoT Camera
-
install python libraries to IoT Camera
$ poetry install
-
activate the python virtual environment
$ poetry shell
-
load environment variables from env file
$ set -a;source ~/env; set +a
-
set connection string as an environment variable
$ export AZURE_STORAGE_CONNECTION_STRING="...................<<your connection string>>...................."
-
start the capture command on IoT Camera
./main.py
Copyright (c) 2022 Nobuyuki Matsui