Solo.io SuperGloo — Service Mesh Orchestration for Multi-Cloud

If the number of stars a project has on GitHub can say something about its popularity and pervasiveness, then Istio is certainly one of the most popular service mesh technologies available today, with 16k+ stars as of writing this blog. The popularity can also be seen by looking at the tools that integrate with Istio in many different areas.

To facilitate the adoption of service mesh technologies like Istio, we created a technology called SuperGloo, which borrows part of the name from the popular next-gen API gateway Gloo. This new type of API gateway can nicely solve complex use cases such as function-based routing that requires body and header transformation to more common cluster ingress-type scenarios.

Created to be a Service Mesh Orchestration platform, SuperGloo is a control plane on top of different service mesh technologies. One of the focus technologies for SuperGloo to manage is, as you would expect, Istio.

SuperGloo can be used to install and manage Istio on different Kubernetes clusters by giving you a consistent experience on all of them. SuperGloo, with its command-line tool, brings your preferred version of Istio with a single command once SuperGloo is running in your cluster:

$ supergloo install istio

Once you download the latest Supergloo release, run the command supergloo init on Kubernetes cluster to install it.

Hybrid and Multi-Cloud

On a recent post on the Google Cloud Blog by Megan O’Keefe, she addressed the importance of a hybrid or multi-cloud approach:

(…) using multiple cloud providers helps you avoid vendor lock-in, and allows you to choose the best cloud services for your goals. Using both cloud and on-premises environments allow you to simultaneously enjoy the benefits of the cloud and on-prem (…)

The rationale behind SuperGloo is in line with the hybrid and multi-cloud perspective. SuperGloo was designed with the understanding that companies will be running multiple service mesh installations in the same or different clusters, which could also span different cloud providers and regions.

Whether you are deploying your own Kubernetes cluster on GCP or using GKE, for example, the opinionated approach provided by SuperGloo can be your first choice to get started with Istio. The sensible defaults provide you with an Istio deployment that is configured to run critical workloads.

Using SuperGloo

The handy supergloo install command allows you to give a name to your Istio installation so that you can refer to it later when defining your routing and security policies.

$ supergloo install istio --name my-istio
+----------+------------+---------+---------------------------+
| INSTALL  |    TYPE    | STATUS  |          DETAILS          |
+----------+------------+---------+---------------------------+
| my-istio | Istio Mesh | Pending | enabled: true             |
|          |            |         | version: 1.0.6            |
|          |            |         | namespace: istio-system   |
|          |            |         | mtls enabled: true        |
|          |            |         | auto inject enabled: true |
|          |            |         | grafana enabled: true     |
|          |            |         | prometheus enabled: true  |
|          |            |         | jaeger enabled: true      |
+----------+------------+---------+---------------------------+

SuperGloo was built on the same declarative API primitives that make Kubernetes successful, and as a result of that, users that are familiar with Kuberentes can also use tools like kubectl to interact with SuperGloo’s objects, which are stored as CRDs. If you want to get the details of a service mesh installation you can use the kubectl describe command:

$ kubectl describe mesh istio-prod --namespace supergloo-system

Name:         istio-prod
Namespace:    supergloo-system
Labels:       
Annotations:  
API Version:  supergloo.solo.io/v1
Kind:         Mesh
Metadata:
  Creation Timestamp:  2019-04-02T17:43:02Z
  Generation:          1
  Resource Version:    1439
  Self Link:           /apis/supergloo.solo.io/v1/namespaces/supergloo-system/meshes/bananas
  UID:                 c351cd8d-556e-11e9-8d3f-080027859a85
Spec:
  Istio:
    Installation Namespace:  istio-system
  Mtls Config:
    Mtls Enabled:  true
Status:
Events:

What’s ahead?

SuperGloo is under active development and the roadmap is exciting. Support for other service mesh technologies is underway and the next investments are targeted at connecting different service mesh installations in the same or different clusters, realizing the hybrid and multi-cloud vision shared by Google and mentioned in the blog above.

Together with the multi-cloud and, multi-mesh vision, SuperGloo will also provide a user-friendly API that abstracts the complexities of service mesh. The API is built to work across distinct service mesh technologies, creating a layer that allows a consistent operation experience on multiple meshes.

Below you see an example of a traffic shifting rule that is applied to a mesh named production on the supergloo-system namespace. The actual mesh implementation is abstracted allowing you to interact with different mesh technologies and installations.

supergloo apply routingrule trafficshifting \
 — name reviews-v3 \
 — dest-upstreams supergloo-system.default-reviews-9080 \
 — target-mesh supergloo-system.production \
 — destination supergloo-system.default-reviews-v3–9080:1

Open Source

Solo.io is committed to making service-mesh technologies more approachable every day. To that extent, the SuperGloo project is 100% open source and its source code is available on GitHub. For the latest documentation go to supergloo.solo.io. Community contribution is more than welcomed and if you have doubts about how to use it, or would like to contribute, feel free to start a conversation with the project team on the channel #supergloo on Slack.