I am super excited today to announce the release of version v0.6 of the VMware Event Broker Appliance (VEBA)! The team and I have been heads down for the past several months working on a number of exciting and brand new capabilities that I think both, existing and new customers, will really enjoy.
In addition to the core team and community contributions, I would also like to welcome and thank two of our newest contributors to the VEBA project, both making significant contributions to our v0.6 release:
- Denis Chorbadzhiyski (Engineer on the vSphere UI team at VMware)
- Dimitar Milov (Engineer on the PowerCLI team at VMware)
Release v0.6 is an important milestone for the team and for the VEBA project. VEBA now leverages an end-to-end VMware OSS stack by default, which also provides a strong architectural foundation for future product updates and innovations. We could not be more excited to share this release with our community 🥳 and below are just some of the key feature highlights.
Embedded Knative
Knative is a Kubernetes-based platform to deploy and manage modern serverless workloads. Support for Knative in VEBA was first introduced in our v0.5 release last December and only supported an external Knative deployment. With this latest release, VEBA now supports an embedded Knative deployment which includes the full Knative Serving and Eventing components which is automatically configured within VEBA.
In fact, enabling this new deployment capability could not be simpler! During the Event Processor selection which is part of the VEBA OVA deployment, simply leave the default processor selection which is now Knative and you are done. There are no additional user input that is required when selecting the embedded Knative deployment. Going forward, this will be our preferred Event Processor with all new features being optimized for Knative.
vSphere UI Integration
One of the biggest and most exciting feature of the v0.6 release is the new VEBA UI, which was developed by Denis C. The VEBA UI is built as a vSphere UI Plugin and natively integrates into the vSphere UI to the configured vCenter Server. You access the VEBA UI by either navigating to the shortcuts portlet or in the drop down Menu list of the vSphere UI.
The VEBA UI contains the following functionality:
- Events - This is where you will deploy your initial function by identifying the specific vCenter Server Event. Customers no longer have to browse through the vCenter Event Mappings repo, but can now easily search and see all the specific events that are available in your particular vCenter Server environment. In addition to specifying the vCenter Event, you can also create specific environment variables and select specific secrets (which you must create first in the Secrets tab) that will be accessible to your function
- Functions - This is where you will find all your deployed functions, the specific vCenter Event(s) that they have been mapped to and the container image (e.g. your function code) to execute. In this view, you can easily associate additional vCenter Events to an existing function deployment.
- Secrets - This is where you will be able to create and manage secrets that can be made available to your functions.
The new VEBA UI is only available when using the embedded Knative deployment (which is the default) and is an optional as part of the deployment. If you wish to enable VEBA UI, you will need to provide a vCenter Server account that has both Register and Update Extension along with the Manage Plugins privilege to be able to install the VEBA UI plugin. During the VEBA OVA deployment, you will find a new option within the vSphere section.
1st Class PowerShell Support in Knative
PowerCLI is still by far the most popular VMware Automation tool that is used by VMware administrators and operators today. We knew as part of the Knative integration work, this was going to be a must have capability. Since VEBA uses the CloudEvents specification to transform vCenter Server Events into a consistent payload which can then be consumed by customers by using the scripting or programming language of their choice, we needed to ensure PowerShell was well supported.
While looking at the CloudEvents SDK, we found that many scripting and programming languages were available but there was no PowerShell support. Michael and I started to investigate what it would take to add a PowerShell SDK for CloudEvents. We were very fortunate to have connected with the PowerCLI team regarding this request and they were super supportive of the VEBA project and the benefits of having a PowerShell SDK for CloudEvents for the broader community. Not only was this an amazing contribution from Dimitar M. who literally had a functional prototype days after our initial meeting, but we have also open source the PowerShell SDK for CloudEvents and contributed it back to the CloudEvents community.
The PowerShell SDK for CloudEvents has also been published on the PowerShell Gallery and can easily be installed by running Install-Module CloudEvents.Sdk
With PowerShell support for CloudEvents, we can now build container images that can execute both PowerShell and PowerCLI code natively when deploying Knative functions.
In addition to the CloudEvents SDK, we have also built a highly optimized PowerShell container image based on VMware PhotonOS which also introduces several new and powerful capabilities that was not possible before. One of the really cool features of Knative is its ability to "Scale-to-zero" which means it will only run your function (container) when it is needed and not waste resources. There are several additional benefits to add support for this Knative feature within our PowerShell image, startup is much faster and another side affect is the ease of building and testing functions.
Previously, if you need to test your PowerShell or PowerCLI function, you needed to first deploy it to VEBA and then generate an event in vCenter Server. This not only added more time to the development cycle but it was also annoying to debug and fix minor typos as you constantly had to re-deploy your function. Using our new PowerShell image, you can now build, test and verify your functions 100% locally on your workstation before ever deploying it to VEBA.
Below is a simple example where the top terminal is running my PowerShell Slack function using Docker and the bottom terminal is performing an Invoke-Request to my HTTP endpoint using a sample CloudEvents payload simulating a vCenter DrsVmPoweredOnEvent. If the function is successful, I should see a notification in Slack and this gives me confidence that my function works and can then be deployed to VEBA.
As you can see, the user experience for PowerShell functions when using Knative is really a 1st class citizen. Authoring PowerShell functions is going to be much easier using his new approach.
Knative Sample Functions Repo
To help users get started, we have also created an example functions repository for Knative which can be accessed at https://vmweventbroker.io/examples-knative. Although we only have two basic PowerShell functions right now, we intend to quickly ramp up with additional samples including other popular scripting/programming languages such as Python and Go. Many of the existing PowerShell and PowerCLI examples already contain the important business logic which enable anyone to port those examples into Knative. This will be a topic that will be covered in the future and we also look forward to the contributions from our VEBA community.
Easy vSphere CloudEvents Viewer
If you are authoring functions for the very first time, it can feel a little bit daunting, especially trying to figure out the specific format for a given vCenter Serve Event. I was super stoked when Michael introduced me to this really cool open source project called Sockeye, which was created by Scott Nichols, an Engineer also working on Knative at VMware. Sockeye is a websocket based CloudEvents viewer and from the screenshot above, you can probably guess why I am excited for our integration of Sockeye into VEBA.
Upon a successful deployment of VEBA and using the Embedded Knative deployment, the Sockeye service will automatically be configured and can then be accessed by opening a browser to https://[FQDN-VEBA]/events endpoint. One loaded, the UI will automatically refresh and you should start seeing your vCenter Server Events. Depending on your vSphere environment, it can be quite chatty and this is where Filters can help.
For example, if you are interested in what the payload structure for the DrsVmPoweredOnEvent would look like, create a filter using the subject property, match using Includes and the name of your event and then click on the "+ Add Filter" to apply the new filter.
The filter will apply immediately and you should now only see vCenter Server Events based on your filter. One important thing to note is that Sockeye is a stateless service and if you refresh the browser, all data previously shown will be lost and Sockeye will only start displaying net new events that have been processed from VEBA since the browser refresh.
With the ability to easily test and verify Knative functions locally without deploying to VEBA, you can also use Sockeye to copy the JSON payload which would then allow users to easily manually simulate this particular event manually for development purposes.
Getting Started
If you are excited about all the cool new features in the latest VEBA v0.6 release and want to know how to quickly get started, I recommend following this new blog series by Patrick Kremer who will walk users through from the initial setup to deploying your first Knative function and more! I also would highly recommend this blog series even if you are already familiar with VEBA as he will be covering all the new features I have mentioned above in much greater details with step by step instructions.
Finally, if you want to see VEBA in action, check out this latest VMware {Code} Power Session that Michael and I just recorded today (4/20) covering some of the new features in the latest release.
Thanks for the comment!