Developing and deploying applications in a multi-cluster world is hard. I don’t think anyone will dispute that. But things just got a little bit easier with some updates in Verrazzano 1.1.
If you are new to Verrazzano, see my previous blog.
Let’s start with understanding traffic flows between applications components. In the case where you have a number of microservices deployed, and those services interact with each other – depend on each other to some degree – it is important to understand the relationships between those microservices as well as understand the current state of the traffic flow between them. If you are using Verrazzano as your container platform, you’ll have an Istio Service Mesh automatically configured to manage and protect that network traffic. And now, with Verrazzano 1.1, you can use Kiali out of the box to view, monitor, and troubleshoot that network traffic.

Kiali is the user interface to Istio, and it is super simple to use. From the Verrazzano console, you can directly access Kiali. From there, you can see the traffic flows and any hot spots or trouble areas. You can then drill down to see the details of each [flow]. Kiali uses metrics data from Envoy stored in Prometheus to build the graphical model.
Because Verrazzano federates the metrics from multiple clusters into a single Prometheus instance, Kiali can build graphical flows for all of applications deployed to all of the clusters in your Verrazzano environment, and includes cross-cluster traffic flows.
Speaking of multi-cluster capabilities, we dramatically simplified multi-cluster application deployment in Verrazzano 1.1. Verrazzano leverages Open Application Model custom resources for application deployment – application components and application configurations. In previous versions of Verrazzano, multi-cluster applications required a wrapped version of every type of component and a wrapped application configuration. These objects would “unwrapped” at the final destination. This mechanism enabled lots of flexibility, but it was more work than we wanted. In Verrazzano 1.1, only OAM application configurations are wrapped. Placement gets much simpler, too, with complete application placement governed by a single line of yaml code. This means that your applications are super portable! Just change that one line, and Verrazzano will move your app from one cluster to another. Cloud to cloud migration couldn’t be easier!
Let’s take a quick look at what I am talking about. In the Verrazzano examples on Github, we have a few multi-cluster examples: https://github.com/verrazzano/verrazzano/tree/master/examples/multicluster.

Let’s look at the todo-list example. For Verrazzano 1.1, all of the application components are regular OAM components, not wrapped components:

…

There is nothing special about these components. The only “special” item is the placement section of the application configuration:

To run this example, follow the installation instructions to set up a multi-cluster Verrazzano environment at https://verrazzano.io/docs/setup/install/multicluster/, and then follow the instructions to deploy the application at https://verrazzano.io/docs/samples/multicluster/todo-list/ . If you want to be daring and see how Verrazzano can easily move an application from cluster to cluster, change the placement line in the yaml file to the following:
placement:
clusters:
- name: local
Verrazzano will shut down the application on the managed cluster, and will deploy it on the admin (local) cluster.
Note that my colleague Ali Mukadam has been working on some Terraform templates for setting up Verrazzano on managed Kubernetes clusters on Oracle Cloud. Take a look at his blog series at https://medium.com/oracledevs/unleashing-verrazzano-container-platform-ca26424ed30e.
Lastly, as an open source container management and DevOps platform, it is important that we update the various components within Verrazzano and keep up with new versions of Kubernetes. For Verrazzano 1.1, we have the following updates:
| Component | Verrazzano 1.0.3 | Verrazzano 1.1.0 |
|---|---|---|
| Istio |
1.7.3 | 1.10.4 |
| Prometheus | 2.13.1 | 2.21.0 |
| Grafana | 6.7.4 | 7.2.1 |
| ElasticSearch | 7.6.1 | 7.10.2 |
| Kibana | 7.6.1 | 7.10.2 |
| Keycloak | 10.0.2 | 15.0.2 |
| WebLogic Kubernetes Operator | 3.3.3 | 3.3.4 |
| Coherence Operator | 3.2.1 | 3.2.3 |
| Kiali | 1.34.1 | |
| Kubernetes Version Support | 1.18, 1.19, 1.20 | 1.19, 1.20, 1.21 |
Happy coding, everyone!
https://bit.ly/verrazzano-slack
