How to Maintain Istio Service Mesh with Harness

Time to get to shipping with your new fangled Istio Service Mesh. Supercharge your experience with Harness! Don't be afraid to take the dip.

Published on

Service Mesh technology as we learned in both part one and part two are helping to usher in the latest generation of workloads but also introducing burden to teams that have not deal with directly with networking complexity before.Like any new category of software changing the paradigm of how we go about building resilient services, adoption can be overshadowed by the daunting complexity of operational needs. Don’t fear friends, Harness is here to help.

Service Mesh Adoption Cheat Sheet

Balancing the radio dials between innovation and keeping the lights on is the balance many practitioners go through in the technology world.Leveraging a Service Mesh in an example or the happy path is a great learning exercise. Though as we cross the chasm to an actual workload, complexities will certainly appear.An extremely powerful pattern in Istio is Traffic Shifting. Having the ability to apply percentages/weights to services e.g v1 and v2 of service in a traffic splitting pattern opens up the doors for a Canary Deployment. If we jog our memory back to our Kubernetes Series in attempting a Kubernetes Canary Deployment without any sort of help does take several manual steps. By leveraging the Harness software delivery platform, those complexities are made much simpler.

Supercharge with Harness

When we would most likely be touching our traffic shifting rules would be during a deployment. Orchestrating a set of KubeCTL and IstioCTL commands, maintaining the configurations, and designing for a failure e.g a rollback for those tasks certainly requires proper planning and thought. The Harness Platform with our Traffic Management support allows you to step away from the orchestration and failure complexity to focus on just the rules and outcomes themselves. Like always can watch the video or follow the blog post.

Istio and Harnes Continuous Delivery

The first item that we will need to make sure that we have Istio installed on a Kubernetes Cluster. Can refer back to part one on how to install a quick Istio install. The second item is that we have some sort of image we are deploying onto Kubernetes from Harness. In the below example we will be using Nginx headed to an awaiting Minikube destination.Assuming that the Kubernetes cluster is wired correctly to Harness, we can add traffic splitting steps to a Harness Workflow. If this is your first Harness Workflow, no worries we will create a new one here.As a basis, I created a Harness Application called “My K8s” with a Harness Service called “nginx_k8s” which is just Nginx pulled through Docker Hub.

Artifact Source - Docker Registry - Harness Continuous Delivery

Navigate to Setup -> Your Application -> Workflows then “+ Add Workflow”. We will call our new workflow “Istio Canary”.

Application Workflow - Harness Continuous Delivery

Next, we can add a Deployment Phase into our Workflow. I am leveraging a pre-existing “nginx_k8s” Service which we will be deploying to Minikube.

Workflow Phase - Harness Continuous Delivery

We can add a Traffic Split into the Verify Phase with “+ Add Phase” and then under the Kubernetes column.

Add Command - Harness Continuous Delivery
Traffic Split - Harness Continuous Delivery

Can set the Weights of the Traffic Split. Potentially depending on how many Canary interactions are needed, can have multiple splits. Here I am leveraging a 20/80 split.

Setup - Manifests - Harness Continuous Delivery

Let’s head back to the Harness Service definition for “nginx_k8s”. Harness can be used as a UI to fill in items that need to be sent along for configuration.Below in the manifest section, let’s add another file named istio.yaml with a basic Istio Destination Rule and Virtual Service. Harness has the ability to apply YAMLs on your behalf and we will leverage this for the “DestinationRule” and “VirtualService”.To do so, hoover over folder then with the dots select “+ Add File” and add an istio.yaml.

Istio.Yaml - Harness Continuous Delivery

In the istio.yaml, let’s add the basic configurations for the Istio Destination Rule and Istio Virtual Service. We will have Workflow Variables so Harness can inject information that is needed.

Start New Deployment - Harness Continuous Delivery

Sample istio.yamlClick Save and you are good to go.Lastly can run your newly created pipeline and see your traffic split in action.Continuous Deployment -> Start New Deployment

Istio Pipeline - Harness Continuous Delivery

Click submit and watch the magic!

Istio Pipeline - Harness Continuous Delivery

Our 20/80 split being applied.

20/80 Split - Harness Continuous Delivery

Harness is your best friend!

Now you are dangerous in the Istio and Service Mesh world, don’t be afraid to take the Service Mesh dip. The flexibility and robustness of the Harness continuous delivery platform can help you and your team embrace newer technology at a faster pace. Harness is your partner in operationalizing new technology as part of your continuous delivery pipeline.Cheers!-Ravi

The Modern Software Delivery Platform®

Loved by Developers, Trusted by Businesses
Get Started

Need more info? Contact Sales