Date: Thu, 28 Mar 2024 12:06:31 +0000 (UTC)
Message-ID: <1283895709.11463.1711627591894@aws-us-west-2-edgex-confluence-1.web.codeaurora.org>
Subject: Exported From Confluence
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_11462_549407140.1711627591894"
------=_Part_11462_549407140.1711627591894
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Location: file:///C:/exported.html
Release Date: November 8th, 2020
Namer: Joan Duran
The Hanoi Release is the 7th successful community release of =
EdgeX Foundry. It is a minor (dot) release (version 1.3) and backward=
compatible with Edinburgh (1.0), Fuji (1.1) and Geneva (1.2) along with an=
y patch releases of the 1.x releases.
Release Major Themes
- Restructured Docker Compose Files
- Distributed Device Services
- Initial Performance / Scalability Tests
- Docker Compose file =E2=80=9Cmake=E2=80=9D
- Edge Data Tagging
- Command Line Interface Tool
- Security Guidelines
- UI Refactor/Improvement
- Fledge Integration
- Beta/Experimental V2 APIs
- Device Service Contributions
V2 APIs
Although a dot release, Hanoi includes a significant number of new featu=
res. It also incorporating the first collection of new, platform-wide=
, micro service APIs called the V2 (for version 2) APIs. The ex=
isting EdgeX APIs have been in place since its first release. The V2 APIs w=
ill remove a lot of early EdgeX technical debt and provide a better informa=
tional exchange. It will take the community a couple of releases to complet=
e the V2 API. We plan to complete the V2 APIs with the next release c=
alled Ireland. The new APIs will also allow for many new, future release fe=
atures. For one, the request and response object models in the new APIs are=
richer and better organized. The models will better support communic=
ations via alternate protocols in the future.
The first set of the V2 APIs released with Hanoi are beta APIs. Th=
e V2 APIs can still change in the future. These APIs provide developers a f=
eel for what will become the principal way to interact with EdgeX micro ser=
vices in the future. The V2 APIs are not backward compatible with the V1 AP=
Is. Thus, view the V2 APIs as means for early exploration. The EdgeX =
community hopes to elicit commentary and suggestions on additional improvem=
ents.
This release includes many core data and core metadata service V2 APIs.&=
nbsp; The device and application services have also been outfitted with new=
V2 APIs. These first APIs allow for device and device service provis=
ioning and setup. Provisioning is a critical element of EdgeX "thing"=
management and serves as a good place to gauge the new V2 APIs effectivene=
ss.
Adopter Warnings
Per the Geneva release in the spring 2020, the EdgeX community de=
precated three EdgeX features. This includes MongoDB support, the Sup=
port Logging Service, and the Support Rules Engine (which wrapped Java-base=
d Drools rules engine). These services remain but are still deprecate=
d in Hanoi in order to maintain backward compatibility. EdgeX adopter=
s should make plans to move away from these services. The community will re=
move these in an upcoming major release (currently forecast for the Ireland=
release in the spring of 2021).
Know Bugs
Please see the Issues List in EdgeX Foundry Github reposi=
tories for known bugs. In any repository Issue List, look for issues =
with the =E2=80=9CBug=E2=80=9D label =E2=80=93 such as https://github.com/edgexfoundry/edgex-go/labels/bug for bugs =
in the main repository of edgex-go.
- In the case where a large number devices are connected through a device=
service, and the device service is restarted, the maximum HTTP request siz=
e (for Go Lang applications this is 10MB) may be exceeded when the device s=
ervice restarts and makes call to Core Metadata for all relevant devices an=
d device profile information. This issue is being addressed in the V2 API t=
o be released with Ireland release (spring 2021). Although it require=
s some custom coding, there are workarounds to this issue. Connect wi=
th the EdgeX community via Slack (https://edgex=
foundry.slack.com/archives/CE44YG81E) if you need assistance if this is=
sue is applicable to your use case.
- When a device is locked / unlocked via core metadata (via set of AdminS=
tate update), the callback to the device service is not notified of the cha=
nge. See https://github.com/edgexfoundry/edg=
ex-go/issues/2880.
General
- Migration of the platform to Go 1.15
- Upgraded to Redis 6
- A program to vet and approve 3rd party libraries and modules=
- Restructure of the Docker Compose Files and make facility to create the=
m (removing a lot of duplicate code and the need for users to uncomment for=
specific service needs). The Docker Compose files now take advantage of th=
e multi-file Compose approach.
- Corrected service Dockerfiles to use CMD versus ENTRYPOINT
- Snap artifacts now being managed, built and released to the Snap store =
by Canonical. The EdgeX Snap names have also been transferred to Canonical.=
- EdgeX web site refresh
- Introduction of the User Self-Endorsement program (see EdgeX Wiki).
- Design of Device Service to Application Service communication via messa=
ge bus (bypassing Core Data).
- Adoptions of Conventional Commits specification across EdgeX repositori=
es
- Use of Dependabot to watch for and create pull requests on depen=
dency upgrades
- EdgeX Documentation refactor; improvements, cleanup and refactor
- Upgraded to new releases of Vault (1.5.3), Kong (2.0.5), Consul (1.8), =
Kuiper (1.0).
- Removed all RAML API specification documents and moved all API document=
ation to Swagger (also provided in Swagge=
rHub).
- Created a new edgex-examples repository an=
d moved all project examples to this repository. Developed policies and pro=
cedures for managing and maintaining these examples.
Core and=
Supporting Services (along with common modules)
- Experimental V2 APIs in Core Data and Core Metadata; V2 APIs also provi=
ded in the App Functions SDK and Device Service SDKs.
- Added support for long/HTML email messages in support-notifications.
Application and Analytic Services (and Application Functions SDK)
- Event data tagging; ability to configure each EdgeX instance to tag the=
data as it is exported from the EdgeX instance. This allows the EdgeX data=
to be pinned in some meaningful way so that using systems and applications=
know where the data originated.
- Improvements to the Kuiper Rules engine; upgrade to version 1.0 of Kuip=
er
- Added ability to use PUT HTTP method for HTTP exports.
- Added new MQTT Trigger function to the App Functions SDK
Device Services (and SDK)
- Allow a device service to be distributed (running on a different host t=
han the rest of EdgeX).
System Management
- Initial steps to better facilitate Kubernetes deployment by providing a=
limited, single pod deployment file for EdgeX.
CLI and UI
- Formal release of version 1.0 of the EdgeX Command Line Interface (CLI)=
tool
- Refactor and improvements of the EdgeX UI
- Roadmap development for both the EdgeX CLI and UI
Security
- SSH tunneling how-to-guide; how to provide SSH tunneling between EdgeX =
services.
- Overlay network how-to-guide; a demonstration on how to setup EdgeX in =
Docker Swarm and how to use an overlay network to provide encryption betwee=
n service containers.
- Design of a secrets abstraction that provides all EdgeX services with a=
consistent means to retrieve secrets for a secret store.
- Design a means to generate and inject random passwords into Vault (Edge=
X=E2=80=99s secure storage).
- Added a new security service to bootstrap Redis.
- Designed the means to better secure the EdgeX Docker containers (and av=
oid escalation of privileges).
- Designed a new EdgeX security utility that performs post-installation E=
dgeX secrets configuration.
- Added hooks to the security secret store setup for hardware assisted pr=
otection of the secret store (Vault) master key.
- Added a persistent data volume for Postgres (Kong=E2=80=99s DB).
- Modified the Docker Compose files to run service containers with read-o=
nly file systems.
- Provided documentation on how to add additional services to the API gat=
eway
DevOps
- Snap build improvements to include build speed improvements for amd64 a=
nd arm64
- New faster build pipeline for edgex-go (build images in parallel)
- New edgex-cli build pipeline, create and publish edgex-cli binaries
- Snyk scanning pre-release docker images
- Auto generation of documentation for edgex-global-pipelines
- Linting of groovy code in pipeline to avoid syntax failures
- Cleanup and standardization of Mocking in unit tests
- Implement mocking of transitive functions in edgex-globalpipelines
- Introduce concept of =E2=80=9Dbuild commits=E2=80=9D to trigger rebuild=
of artifacts
- EdgeX release optimization (rebuild artifacts)
- EdgeX AWS ECS reference stack deployment
- Implemented GitHub release automation
- GitHub prune of stale/pre-release git tags
- Implemented a GitHub label/milestone sync (with throttling)
- Generated reporting for stale docker images
Test/QA (and documentation)
- Addition of TAF blackbox tests to include TAF tests of app services and=
the V2 APIs. TAF testing will eventually replace Postman blackbox testing =
in a future release.
- Improvements to the performance tests to include running weekly perform=
ance metrics checks and adding range checks on response times. A design has=
been created for conducting long running performance tests which will be i=
mplemented in the next release.
- Initial scalability testing (using Modbus) to understand how many event=
s can be handled by an EdgeX instance over a specific period of time
- Platform smoke test to check for issues when any infrastructure is upda=
ted (Kong, Consul, etc.).
List of supported connectors
Those in bold are new with this release
South Side (Device Services)
- Modbus (TCP/RTU) in Go
- Virtual Device in Go
- SNMP in Go
- MQTT in Go
- BACnet (IP & MSTP) in C
- ONVIF Cameras in Go
- REST in Go (NEW!)
- Grove in C
- LLRP RFID in Go (2021) =E2=80=93 contributed and under review
- Bluetooth Low Energy in C (2021) =E2=80=93 contributed and under review=
- OPC-UA in C (2021) - under dev
- CoAP (2021) =E2=80=93 contributed and under review
- GPIO (2021) =E2=80=93 contributed and under review
- UART (2021) =E2=80=93 contributed and under review
- File Exporter in C
- BLE in C
- Zigbee in C
- GPS in C
- CAN in C
- CANOpen in C
- MEMS in C
- EtherCat in C
- EtherNet/IP in C
- Profinet in C
- OPC-UA Pub/Sub in C
- ONVIF in C
- Siemens S7 in C
- ZeroMQ (Q1 2021)
- RFID (Q1 2021)
North side (Application Ser=
vices)
Available functions as part of the application functions SDK. =
Those in bold are new with Hanoi.
- AES Encryption
- GZIP Compression
- ZLIB Compression
- MarkAsPushed
- PushToCore NEW!
- Device Name Filter
- Value Descriptor Filter
- Batch
- AddTags
- JSONLogic Filtering
- XML Conversion
- JSON Conversion
- MQTT(S) Export
- HTTP(S) POST Export
- HTTP(S) PUT Export
Example Open Source Application Service Connections. Those in =
bold are new with Hanoi
- Azure IoT Hub
- Amazon IoT Core
- IBM Watson IoT
- Cloud Event Transformation
- Secret Retrieval Example
- Fledge South HTTP
- LLRP RFID App Service (contributed and under review)=
li>
Release Design Decisions
- During the course of the release, some architectural design decisions w=
ere made that affect this and future EdgeX releases. The decisions could al=
so impact adopter implementations or extensions.
- Decision was made to remove client monitoring. This could result in a b=
ackward compatibility issue if someone was relying on the clients to detect=
a change of location by a service. While not likely, it should be no=
ted.
- As it pertains to the V2 API, the decision was made that Gets (queries)=
for object by ID are to be removed and we will have Gets by name instead. =
An example would be for get events by device id vs device name.
- With regard to IPv6, the EdgeX community has tested that EdgeX services=
will work with IPv6. However, configuration for Kong or device services ru=
nning on a separate box have not been addressed for IPv6. The EdgeX c=
ommunity has not focused on overlay network (service to service on the Dock=
er network). This is on the roadmap for Ireland or beyond.
- When an event (model instance usually done by a Device Service) is crea=
ted, a UUID gets created and attached to the event no matter where it is cr=
eated.
- In support of tagging and identifying the origin of event/reading data,=
a new field "tags" will be added to event to allow the system to add key/v=
alue pairs to the event to indicate its origin. It could be set with GPS co=
ordinates, factory location, etc. For this Hanoi release, the tags fi=
eld will be populated via the app service function just before export. =
; In future releases, the tags may be populated by other implementations an=
d by other services (such as the originating DS).
------=_Part_11462_549407140.1711627591894
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: file:///C:/d3cf984c2f3daef60d71c9cdc8daa54e
iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAMAAAC/MqoPAAADAFBMVEX19fXv7+98fHx1dXV9fX23
t7eenp5wcHDn5+f09PTz8/Pd3d2SkpLY2Njt7e3Q0NCioqJycnKqqqq7u7uurq6CgoKGhobOzs7D
w8PR0dGNjY3Hx8fj4+PGxsbS0tKoqKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABYhwFnAAAEcUlEQVR42u3cC1faSBTA8SGvCYFEWEBQsU2//4eqx7V7rK7r+gIR
ITuTFyHuuvgoaPj/zmmdkHsnuZlJwCZFCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4
BGrr2Yw7n5srhs4M475CB9i1bHflWNtwK1S6Y78k2nbWslPGWray8myPmfMKjbr8peEfetQ/pC0u
3VzLVqxZ+ZVg4EyMbi+arBZeodL9kTl+iMTs1p9srPTNXOb6ci9p7El/Y5e5jZQeWF+y5o4ZbNUV
vt06zppXO+1NjYe1iY2Oxov2xBKVVprBZuGXpsB8ur66E75uRYuF642NOp/mKJ3SKZ3SP8Sv8Iw6
pVM6pVM6pVM6pVM6pX+s0j3P26bSdbHT9E6yaY9E3duW0sdXrhrsVrLgz4WIrrZn1HfEqHU5EPpf
5C9GQuxsZNQ3cuMpMu7FtWc2jO6lH6nS7fH8ufAqld688abiQfjmnXEzFaIx9iYbKH0z/y5xKAuP
y7jGwf+EV6l00bEaWdOXHbFNpYtDo9V363W337IOxHaVLgK7acm21bRrYttKf8dwPsNT+gcrffai
Rz/dWYVKN15UzMyoUunRSx4PXlPpPBQOAAAAAAAAAPgUwlesWcM+2fL5zRurlbVKDWEYSrkfvG5P
pVfezEqHzX+mPKN79KbSV5Ft4ejooX/xyhvE095rsmoP3f9eef+XeKfS/baUbVeNRkdKGX91zFcZ
ya9L4xMd9671Tx3STJ8Iy9pZvq+W42dIikFi/zS7M5X2GupZVMjOsoQYSn3LqKYfx+lFP/JJ0lUB
8YH4TXWgGuG3fvge57H6IQ9rwW5Pz81BMDRNfS4NgoHeneJJMdSjfiAPAl868Ut5O8uXjhscysKK
JLdlZWdosddFdpqlxRV2pT4u9fy4h/JQBQyEGMSN8O0XmjCVLAVqe+FOWqHU37Njy2LptS9S/3d0
2U9DwkI7y5fDtIDiilB4ejks95oHZVkiXavjGnrg89I76Zp4btgrlG6tdiKrbhrOaE98V3NtqpZP
QvW6qVpmVJohjUv116n68+0+uZWZtbP8znkvck9KQUKMDv70Rrqx3GsWlGcpj87wZHj+KB53fy/s
6J1I8+LG+71x6eHYH3q1/GDqF/TZ6S6Pel82RWGIwkI7yxdfHDOewsPSZqzW014XQWlWPAN7jnB6
+YxMe8jykg5WGPUXXOFvT0bDpRf0o2+lJ0B/WtOgdNDNcv7xw8yq/cvIWONhsdfv3lJ2mnWkCKcm
akbSPsrfX/K9ebpbby79PuifFZfnt+p6YjSXg+4e1cnePu26bic5jRftNF923KArloOS/gd/FHt1
A68QlGXFfghH/CzPzSyvGTfetXS3Nvm7vvRWPDi7OhtclMJ66uw83b2Jotvk+zfydpbfvo0m+qsK
ikGJc7vY6/zyLlwEZVnp7JpET998zyZnDZV30VAd+Hya/tWf5j6pLS4dAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACrtH6zdB4Pe8zlKAAAAAElFTkSuQmCC
------=_Part_11462_549407140.1711627591894--