The customer is a leading provider of industrial automation solutions, such as controllers, sensors, actuators, and software. They have a global presence and serve various industries, such as manufacturing, oil and gas, mining, etc.
The customer wanted to improve the efficiency and productivity of their engineers who install and configure controllers in the field. Before they went to the field, they wanted to enable their engineers to provision a controller using a web-based HMI (Human Machine Interface) that was hosted in the cloud. This would save time and resources and reduce errors and rework.
The customer also wanted to ensure that the controller HMI in the cloud was securely connected to the on-premise controller hardware that contained a PostgreSQL database. The controller database was the master, which would keep data in a remote PostgreSQL cloud database via events. The customer wanted to use Azure IoT Hub for communication between the cloud and edge devices.
Enkaytech designed and developed a solution that used Azure Kubernetes Services (AKS) and Ingress Controller for hosting the controller HMI in the cloud. The solution had the following components:
- Controller HMI: A web-based application that allowed engineers to provision and configure controllers using a graphical interface. The application was developed using React.js and Node.js, and was deployed as a Docker container in an AKS cluster.
- AKS Cluster: A managed Kubernetes service that provided high availability, scalability, and security for the controller HMI application. The AKS cluster consisted of multiple nodes (virtual machines) that ran the Docker containers. The AKS cluster also had an Ingress Controller that exposed the controller HMI application to the internet using a public IP address and a domain name.
- Ingress Controller: A Kubernetes resource that managed the inbound traffic to the AKS cluster. The Ingress Controller used Nginx as the reverse proxy and load balancer for the controller HMI application. The Ingress Controller also enabled SSL/TLS encryption for the communication between the browser and the controller HMI application.
- Azure IoT Hub: A cloud service that enabled bi-directional communication between the cloud and the edge devices (controller hardware). The Azure IoT Hub used MQTT protocol for sending and receiving messages between the devices and the cloud. The Azure IoT Hub also provided device management, authentication, authorization, and monitoring capabilities.
- Controller Hardware: A physical device that contained a controller board and a PostgreSQL database. The controller hardware was connected to the internet via Ethernet or Wi-Fi. The controller hardware also had an IoT Edge runtime that enabled it to communicate with the Azure IoT Hub.
- PostgreSQL Database: A relational database that stored the configuration data of the controller. The PostgreSQL database was hosted on the controller hardware and was configured as the master database. The PostgreSQL database also used logical replication to send events to a remote PostgreSQL cloud database, which acted as a replica database.
- The solution provided by Enkaytech helped the customer achieve their business objectives by:
- Improving the efficiency and productivity of their engineers who could provision and configure controllers using a web-based HMI in the cloud, before they went to the field.
- Reducing the time and resources required for installing and configuring controllers in the field, as well as minimizing errors and rework.
- Ensuring secure and reliable communication between the cloud and the edge devices using Azure IoT Hub and SSL/TLS encryption.
- Providing high availability, scalability, and security for the controller HMI application using AKS cluster and Ingress Controller.
- Maintaining data consistency between the master and replica PostgreSQL databases using logical replication.
- Azure Kubernetes Services (AKS)
- Ingress Controller
- Azure IoT Hub
- IoT Edge
The project demonstrated the feasibility and benefits of using Azure Kubernetes Services (AKS) and Ingress Controller for hosting Controller HMI in the cloud. By using AKS, the project team was able to deploy and manage the HMI application in a scalable, reliable, and secure way. By using Ingress Controller, the project team was able to expose the HMI application to the Internet using Azure’s native Application Gateway L7 load-balancer, which provided features such as URL routing, TLS termination, and Web Application Firewall (WAF) protection. The project also leveraged Azure IoT Hub to connect the cloud HMI with the on-premises controller hardware, which contained a PostgreSQL database. The database synchronization was achieved by using events to update the remote PostgreSQL cloud database from the master database in the controller hardware.