A couple of days ago, Open Service Mesh (OSM) version 0.4.0 was released on GitHub. Compared to the previous release, several things have changed. In this post I will walk through the most important changes, which will have an impact on the actual usage of Open Service Mesh.

Sidecar Injection disabled by default

Open Service Mesh uses Kubernetes’ sidecar-container pattern to bring Service Mesh capabilities to your application deployments. With version 0.4.0, OSM will no longer inject sidecar-containers by default. In contrast, you have to enable it explicitly when onboarding a Namespace. This can be achieved by using osm CLI with the new --enable-sidecar-injection flag:

osm namespace add my-namespace --enable-sidecar-injection

As an alternative, you can enable sidecar-container injection using Kubernetes annotations. The annotation can be specified either on dedicated Pods or on the level of the Namespace - as shown in the following snippet:

# annotate on namespace level
kubectl annotate namespace my-namespace-2 openservicemesh.io/sidecar-injection=enabled

# annotate on pod level
kubectl annotate pod my-pod -n my-namespace-3 openservicemesh.io/sidecar-injection=enabled

Grafana and Prometheus are now optionally

OSM injects Envoy Proxy as sidecar-container. These sidecar-containers come with pre-configured Prometheus annotations. This allows Prometheus scraping detailed metrics from all application components managed by OSM. osm install exposes the --enable-prometheus flag to control if Open Service Mesh should deploy Prometheus to the Kubernetes cluster, or if it should skip Prometheus deployment to use a pre-existing Prometheus deployment.

If you want to connect OSM to your pre-existing Prometheus deployment, checkout the detailed configuration instructions on GitHub.

Grafana is used to visualize metrics scraped by Prometheus from applications managed by OSM. With 0.4.0, OSM will not install Grafana by default. This behavior can be controlled using the --enable-grafana flag of osm install command. As for Prometheus, you can bring your own (BYO) Grafana deployment instead of having a dedicated (OSM-)Grafana installation. Consult the import dashboards to BYO Grafana section for further details.

cert-manager integration as certificate provider

Open Service Mesh is now able to use pre-existing cert-manager installations to issue TLS certificates when using mTLS. Again there is an configuration section on GitHub, which guides you through the process of integrating cert-manager into your OMS installation.

Tracing moved from Zipkin to Jaeger

OSM switched from Zipkin to Jaeger as distributed tracing engine. In contrast to Zipkin, Jaeger has out of the box support for the OpenTracing standard.


Personally, I like the approach of minimizing OSM’s default footprint on Kubernetes clusters. Integration with pre-existing installations of Grafana, or Prometheus and cert-manager make OSM deployments more flexible in contrast to the previous releases. Besides the changes mentioned here, you should definitely check out the Release Notes on GitHub to stay current.