Xi IoT’s continued journey to be a Multi-Cloud Platform

Xi IoT’s continued journey to be a Multi-Cloud Platform (as a Service)

We, the Team Sherlock @ Nutanix, wrapped up year 2019 with amazing line up of platform features for developers and infrastructure admnistrators. Read more about them in my last blog post, titled Xi IoT : Another year in retrospect. Since then we have added many more exciting features that I want to share with you in this new blog post.

Xi IoT’s journey started at the Edge with a purpose built platform to manage Infrastructure and Apps at scale but soon this versatile Platform-as-a-Service (PaaS) Stack found its ways into private and public clouds. As we have been talking to our customers and partners, need for such platform to run generic applications in private or public clouds is even more evident.

Apps written for the Edge Computing use-cases focus on real time data processing, pack a smaller (resource) footprint, and try to squeeze every CPU cycle or byte of memory available etc while the Apps written for Private or Public Cloud focus on scale (out), resiliency (High Availability) and performance.

Containerization definitely plays a big role in the way these Apps are packaged, distributed and deployed. In addition, Developers can choose to apply Micro-services architecture when building and operating these Apps.

Key question : Do they have the platform they need to take full advantage of Micro-services Architecture?

We believe Xi IoT Platform provides the powerful features to support the Micro-services architecture.

Here are newly added features strengthening Xi IoT’s outreach to Private and Public Clouds.

Features for DEV-OPS

Helm Charts

Customers can now deploy Kubernetes Apps packaged as Helm Charts with their Values file. This feature adds to already existing method to deploy Apps using Yaml spec.

Deploy Kubernetes Apps packaged as Helm Charts, with their values files.

You can deploy curated Helm charts from popular sites like https://github.com/helm/charts/tree/master/stable or AI Inferencing Apps (e.g. Machine Vision) from https://www.nvidia.com/en-us/gpu-cloud/

TensorFlow 2.1 Model Support

Xi IoT AI Inferencing Service “infer” API now supports TensorFlow 2.1 models.

You can now upload TensorFlow 2.1 ML Models to Xi IoT.

Google Cloud Storage Support in Data Pipelines

Customers can now send selective/processed sensor data from the Edge to GCP Storage (Object Store) using Xi Data Pipelines for further processing in Google Cloud.

Converge Edge and Cloud by pushing data into GCP Cloud Storage (Object Store)

Xi IoT CLI rc4

Xi IoT CLI has new version available at https://github.com/nutanix/xi-iot/tree/master/cli

This command line tool now supports many new features like setting up Log Forwarding Policy, Enabling/Configuring Kafka Data Service, Ingress Controllers and so on.

Application Log Forwarding to central Log Management

If you have deployed your Apps on large number of Service Domains (Edges), you may need to bring application logs from thousands of remote locations to more centralized location for further inspection or setting up alerts and so on.

With Xi IoT CLI, you can setup Log Forwarding Policy for your projects and push the application logs to following destinations:

  • AWS CloudWatch
  • AWS Kinesis Data Streams
  • AWS Kinesis Firehose
  • Google Cloud Platform StackDriver

Requirements: Add a AWS or Google Cloud Profile with permissions to WRITE to above mentioned services.

Here is the documentation for setting up Log Forwarding Policy using Xi IoT CLI : https://github.com/nutanix/xi-iot/tree/master/cli/samples/logcollectors

Configure Ingress Routes for Kubernetes Applications

If you need to make your App available to external clients, you can add annotations for Kubernetes Ingress Controller.

By default, Xi IoT Service Domain supports Traefik Ingress Controller but you can also configure NGINX ingress controller. Learn more about it at : https://github.com/nutanix/xi-iot/tree/master/services/ingress

Enable Apache Kafka Data Service

Xi IoT Service Domain comes packaged with Kafka. All you need to do is enable it on a Project. (A Project is an isolation construct in Xi IoT platform, letting customers deploy their Apps isolated from other Apps. Similarly, Kafka topics used by Apps on one project cannot be shared with Apps from other projects unless Administrator decides to do otherwise.)

An example of how to configure Kafka for project named PROD. The example shows how to expose Kafka Brokers to external Clients using NodePort.

PC11S3KK:Downloads akhileshj.oshi$ cat kafka-default.yaml
kind: service
name: Kafka
project: PROF
serviceYaml: |
  apiVersion: sherlock.nutanix.com/v1
  kind: Kafka
    name: kafka
    # Expose Kafka on node port 32092
    nodePort: 32092
PC11S3KK:Downloads akhileshj.oshi$ ./xi-iot create -f kafka-default.yaml

Learn more about how to configure Kafka Data Service at https://github.com/nutanix/xi-iot/tree/master/services/kafka

Using Kafka Data Service from Kubernetes Applications

Instead of packaging Kafka with your App, you can simply refer to it from Application Yaml spec as below:

apiVersion: apps/v1beta1
kind: Deployment
  name: my-kafka-app
        app: my-kakfa-app
      - name: some-container
        image: my-kafka-app
        - name: KAFKA_SERVER
          value: "{{.Services.Kafka.Endpoint}}"
        - containerPort: 9000

In addition, learn more about how to access Zookeeper endpoint at: https://github.com/nutanix/xi-iot/tree/master/services/kafka

Kafka Data Service Monitoring

Developers can monitor Kafka service for all the projects (if Kafka is enabled for those projects).

Discover Kafka Topics 

Discover Kafka Brokers running on Service Domains

Here is an example of 3 Kafka brokers running on 3-node Service Domain, exposed at NodePort: 32092. Kafka Clients running outside of Service Domain can connect directly to these brokers. Apps running in any project within Service Domain can subscribe/publish to this Kafka instance.

Monitor critical alerts raised by Kafka Data service

Features for Infrastructure Administrators

1-Click Upgrades at scale

With newly designed User Experience for over the air software updates, customers not only get a quick overview of all software versions rolled out in the field but also perform 1-click upgrade on all eligible Service Domains.

Tech Preview : 1-Click Upgrade for Multi-node Service Domains

We’re excited to provide this 1-Click upgrade to multi-node Service Domains feature. Note that this feature is being baked but we also want to seek out feedback from the customers. Using the same Over The Air Software Updates in platform GUI, customers can upgrade their existing multi-node Service Domains (Kubernetes Clusters)

You can try out these features at iot.nutanix.com — Sign up for a trial, and you’ll get a Xi IoT Cloud Instance to play with. Further, you can deploy your own Xi Service Domain as Virtual Machine using qcow2 image available for download at portal.nutanix.com. Optionally, you can also install Xi Service Domain’s raw OS Image on bare-metal server(s).

We’re excited about what future holds for Xi IoT Platform and the team is working hard to transform it into true multi-cloud platform. We will share more about this in future blog posts.

Hope you enjoyed reading this blog post about all new features we have shipped recently. If you are looking to standardize on multi-cloud capable platform, we can help. Please write to us at iot@nutanix.com. Let’s talk!