Setup FSM

Install the FSM control plane using the FSM CLI


This demo of FSM v1.2.3 requires:

Note: This document assumes you have already installed credentials for a Kubernetes cluster in ~/.kube/config and kubectl cluster-info executes successfully.

Download and install the FSM command-line tool

The fsm command-line tool contains everything needed to install and configure Open Service Mesh. The binary is available on the FSM GitHub releases page.


Download the 64-bit GNU/Linux or macOS binary of FSM v1.2.3:

system=$(uname -s | tr '[:upper:]' '[:lower:]')
arch=$(uname -m | sed -E 's/x86_/amd/' | sed -E 's/aarch/arm/')
curl -L${release}/fsm-${release}-${system}-${arch}.tar.gz | tar -vxzf -
./${system}-amd64/fsm version


Download the 64-bit macOS binaries for FSM v1.2.3

system=$(uname -s | tr "[:upper:]" "[:lower:]")
arch=$(uname -m)
curl -L$release/fsm-$release-$system-$arch.tar.gz | tar -vxzf -
./$system-$arch/fsm version

The fsm CLI can be compiled from source according to this guide.

Installing FSM on Kubernetes

With the fsm binary downloaded, unzipped, and placed into $PATH, we are ready to install Open Service Mesh on a Kubernetes cluster:

The command below shows how to install FSM on your Kubernetes cluster. This command enables Prometheus, Grafana and Jaeger integrations. The fsm.enablePermissiveTrafficPolicy chart parameter in the values.yaml file instructs FSM to ignore any policies and let traffic flow freely between the pods. With Permissive Traffic Policy mode enabled, new pods will be injected with Pipy, but traffic will flow through the proxy and will not be blocked by access control policies.

Note: Permissive Traffic Policy mode is an important feature for brownfield deployments, where it may take some time to craft SMI policies. While operators design the SMI policies, existing services will continue to operate as they have been before FSM was installed.

export fsm_namespace=fsm-system # Replace fsm-system with the namespace where FSM will be installed
export fsm_mesh_name=fsm # Replace fsm with the desired FSM mesh name

fsm install \
    --mesh-name "$fsm_mesh_name" \
    --fsm-namespace "$fsm_namespace" \
    --set=fsm.enablePermissiveTrafficPolicy=true \
    --set=fsm.deployPrometheus=true \
    --set=fsm.deployGrafana=true \

Read more on FSM’s integrations with Prometheus, Grafana, and Jaeger in the observability documentation.

Next Steps

Now that the FSM control plane is up and running, add applications to the mesh.


Was this page helpful?