{"id":25412935,"url":"https://github.com/flomesh-io/fsm","last_synced_at":"2025-04-05T20:08:44.976Z","repository":{"id":170626187,"uuid":"646213203","full_name":"flomesh-io/fsm","owner":"flomesh-io","description":"Lightweight service mesh for Kubernetes East-West and North-South traffic management, uses ebpf for layer4  and pipy proxy for layer7 traffic management, support multi cluster network. ","archived":false,"fork":false,"pushed_at":"2024-10-29T12:24:09.000Z","size":27819,"stargazers_count":56,"open_issues_count":9,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-10-29T13:33:00.708Z","etag":null,"topics":["ebpf","gateway-api","ingress-controller","kubernetes","load-balancer","multi-cluster","service-mesh","service-mesh-interface","sidecar"],"latest_commit_sha":null,"homepage":"https://flomesh.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flomesh-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":"SUPPORT","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-27T16:44:59.000Z","updated_at":"2024-10-28T22:18:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"42b192b6-abe4-44a0-87a3-ada4279f4d84","html_url":"https://github.com/flomesh-io/fsm","commit_stats":null,"previous_names":["flomesh-io/fsm"],"tags_count":117,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffsm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffsm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffsm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffsm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flomesh-io","download_url":"https://codeload.github.com/flomesh-io/fsm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247393570,"owners_count":20931813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebpf","gateway-api","ingress-controller","kubernetes","load-balancer","multi-cluster","service-mesh","service-mesh-interface","sidecar"],"created_at":"2025-02-16T13:38:24.918Z","updated_at":"2025-04-05T20:08:44.951Z","avatar_url":"https://github.com/flomesh-io.png","language":"Go","readme":"# Flomesh Service Mesh (FSM)\n\n[![build](https://github.com/flomesh-io/fsm/workflows/Go/badge.svg)](https://github.com/flomesh-io/fsm/actions?query=workflow%3AGo)\n[![report](https://goreportcard.com/badge/github.com/flomesh-io/fsm)](https://goreportcard.com/report/github.com/flomesh-io/fsm)\n[![codecov](https://codecov.io/gh/flomesh-io/fsm/branch/main/graph/badge.svg)](https://codecov.io/gh/flomesh-io/fsm)\n![Github](https://img.shields.io/github/license/flomesh-io/fsm)\n[![release](https://img.shields.io/github/release/flomesh-io/fsm/all.svg)](https://github.com/flomesh-io/fsm/releases)\n\nThe Flomesh Service Mesh (FSM) inherits a portion of the archived [OSM](https://github.com/openservicemesh/osm) code and introduces the following enhancements while maintaining compatibility with OSM:\n\n* FSM utilizes [Flomesh Pipy](https://github.com/flomesh-io/pipy) proxy as a replacement for OSM's Envoy proxy. This enables FSM to achieve lightweight control and data planes, optimizing CPU and memory resources effectively.\n* Implemented traffic interception using eBPF-based technology instead of iptables-based traffic interception.\n* FSM offers comprehensive north-south traffic management capabilities, including Ingress and Gateway APIs.\n* Additionally, it facilitates seamless interconnectivity among multiple clusters and incorporates service discovery functionality.\n\n[Flomesh Pipy](https://flomesh.io/pipy) is a programmable network proxy that provides a high-performance, low-latency, and secure way to route traffic between services.\n\nFSM is dedicated to providing a holistic, high-performance, and user-friendly suite of traffic management and service governance capabilities for microservices operating on the Kubernetes platform. By harnessing the combined strengths of FSM and Pipy, we present a dynamic and versatile service mesh solution that empowers Kubernetes-based environments.\n\n\n## Table of Contents\n- [Flomesh Service Mesh (FSM)](#flomesh-service-mesh-fsm)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n    - [Core Principles](#core-principles)\n    - [Documentation](#documentation)\n    - [Features](#features)\n    - [Project status](#project-status)\n    - [Support](#support)\n    - [SMI Specification support](#smi-specification-support)\n  - [FSM Design](#fsm-design)\n  - [Install](#install)\n    - [Prerequisites](#prerequisites)\n    - [Get the FSM CLI](#get-the-fsm-cli)\n    - [Install FSM](#install-fsm)\n  - [Demonstration](#demonstration)\n  - [Using FSM](#using-fsm)\n    - [Quick Start](#quick-start)\n    - [FSM Usage Patterns](#fsm-usage-patterns)\n  - [Community](#community)\n  - [Development Guide](#development-guide)\n  - [Code of Conduct](#code-of-conduct)\n  - [License](#license)\n\n\n## Overview\n\nFSM runs an Sidecar based control plane on Kubernetes, can be configured with SMI APIs, and works by injecting a [Pipy](https://flomesh.io) Sidecar proxy as a sidecar container next to each instance of your application. The proxy contains and executes rules around access control policies, implements routing configuration, and captures metrics. The control plane continually configures proxies to ensure policies and routing rules are up to date and ensures proxies are healthy.\n\n### Core Principles\n1. Simple to understand and contribute to\n1. Effortless to install, maintain, and operate\n1. Painless to troubleshoot\n1. Easy to configure via [Service Mesh Interface (SMI)][2]\n\n### Documentation\nDocumentation pertaining to the usage of Flomesh Service Mesh is made available at [fsm-docs.flomesh.io](https://fsm-docs.flomesh.io/).\n\nDocumentation pertaining to development, release workflows, and other repository specific documentation, can be found in the [docs folder](/docs).\n\n### Features\n\n1. Easily and transparently configure [traffic shifting][3] for deployments\n1. Secure service to service communication by [enabling mTLS](https://fsm-docs.flomesh.io/docs/guides/certificates/)\n1. Define and execute fine grained [access control][4] policies for services\n1. [Observability](https://fsm-docs.flomesh.io/docs/troubleshooting/observability/) and insights into application metrics for debugging and monitoring services\n1. Integrate with [external certificate management](https://fsm-docs.flomesh.io/docs/guides/certificates/) services/solutions with a pluggable interface\n1. Onboard applications onto the mesh by enabling [automatic sidecar injection](https://fsm-docs.flomesh.io/docs/guides/app_onboarding/sidecar_injection/) of Sidecar proxy\n\n### Project status\n\nFSM is under active development and is ready for production workloads.\n\n### Support\n\n[Please search open issues on GitHub](https://github.com/flomesh-io/fsm/issues), and if your issue isn't already represented please [open a new one](https://github.com/flomesh-io/fsm/issues/new/choose). The FSM project maintainers will respond to the best of their abilities.\n\n### SMI Specification support\n\n|   Kind    | SMI Resource |         Supported Version          |          Comments          |\n| :---------------------------- | - | :--------------------------------: |  :--------------------------------: |\n| TrafficTarget  | traffictargets.access.smi-spec.io |  [v1alpha3](https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-access/v1alpha3/traffic-access.md)  | |\n| HTTPRouteGroup | httproutegroups.specs.smi-spec.io | [v1alpha4](https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-specs/v1alpha4/traffic-specs.md#httproutegroup) | |\n| TCPRoute | tcproutes.specs.smi-spec.io | [v1alpha4](https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-specs/v1alpha4/traffic-specs.md#tcproute) | |\n| UDPRoute | udproutes.specs.smi-spec.io | _not supported_ | |\n| TrafficSplit | trafficsplits.split.smi-spec.io | [v1alpha4](https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-split/v1alpha4/traffic-split.md) | |\n| TrafficMetrics  | \\*.metrics.smi-spec.io | [v1alpha1](https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-metrics/v1alpha1/traffic-metrics.md) | 🚧 **In Progress** 🚧 |\n\n### GatewayAPI Specification Support\n|   Kind    |      Supported Version      |          Comments          |\n| :---------------------------- |:---------------------------:|  :--------------------------------: |\n| GatewayClass |             v1              | |\n| Gateway      |             v1              | |\n| HTTPRoute |             v1              | |\n| GRPCRoute |             v1              | |\n| TLSRoute |          v1alpha2           | |\n| TCPRoute |          v1alpha2           | |\n| UDPRoute |          v1alpha2           | |\n| ReferenceGrant |           v1beta1           | |\n\n## FSM Design\n\nRead more about [FSM's high level goals, design, and architecture](DESIGN.md).\n\n## Install\n\n### Prerequisites\n- Kubernetes cluster running Kubernetes v1.19.0 or greater\n- kubectl current context is configured for the target cluster install\n  - ```kubectl config current-context```\n\n### Get the FSM CLI\n\nThe simplest way of installing Flomesh Service Mesh on a Kubernetes cluster is by using the `fsm` CLI.\n\nDownload the `fsm` binary from the [Releases page](https://github.com/flomesh-io/fsm/releases). Unpack the `fsm` binary and add it to `$PATH` to get started.\n#### On Linux\n```shell\nsudo mv ./fsm /usr/local/bin/fsm\n```\n#### On Mac\n```shell\nsudo install ./fsm /usr/local/bin\n```\n\nOr, if you have HomeBrew installed, you can install it by:\n```shell\nbrew tap flomesh-io/fsm\nbrew install fsm\n```\n\n### Install FSM\n```shell\n$ fsm install\n```\n![FSM Install Demo](docs/images/fsm-install-demo.gif \"FSM Install Demo\")\n\nSee the [installation guide](https://fsm-docs.flomesh.io/docs/guides/install/) for more detailed options.\n\n## Demonstration\n\nThe FSM [Bookstore demo](https://fsm-docs.flomesh.io/docs/getting_started/) is a step-by-step walkthrough of how to install a bookbuyer and bookstore apps, and configure connectivity between these using SMI.\n\n## Using FSM\n\nAfter installing FSM, [onboard a microservice application](https://fsm-docs.flomesh.io/docs/guides/app_onboarding/) to the service mesh.\n\n### Quick Start\n\nRefer to [Quick Start](https://fsm-docs.flomesh.io/docs/quickstart/) guide for step-by-step guide on how to start quickly.\n\n### FSM Usage Patterns\n\n1. [Traffic Management](https://fsm-docs.flomesh.io/docs/guides/traffic_management/)\n1. [Observability](https://fsm-docs.flomesh.io/docs/troubleshooting/observability/)\n1. [Certificates](https://fsm-docs.flomesh.io/docs/guides/certificates/)\n1. [Sidecar Injection](https://fsm-docs.flomesh.io/docs/guides/app_onboarding/sidecar_injection/)\n\n\n## Community\n\nConnect with the Flomesh Service Mesh community:\n\n- GitHub [issues](https://github.com/flomesh-io/fsm/issues) and [pull requests](https://github.com/flomesh-io/fsm/pulls) in this repo\n- FSM Slack: \u003ca href=\"https://join.slack.com/t/flomesh-io/shared_invite/zt-16f4yv2hc-qvEgSrMATKn5LjmDAwzlbw\"\u003eJoin\u003c/a\u003e the Flomesh-io Slack for related discussions\n\n## Development Guide\n\nIf you would like to contribute to FSM, check out the [development guide](docs/development_guide/README.md).\n\n## Code of Conduct\n\nThis project has adopted the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for further details.\n\n## License\n\nThis software is covered under the Apache 2.0 license. You can read the license [here](LICENSE).\n\n\n[1]: https://en.wikipedia.org/wiki/Service_mesh\n[2]: https://github.com/servicemeshinterface/smi-spec/blob/master/SPEC_LATEST_STABLE.md\n[3]: https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-split/v1alpha4/traffic-split.md\n[4]: https://github.com/servicemeshinterface/smi-spec/blob/v0.6.0/apis/traffic-access/v1alpha3/traffic-access.md\n","funding_links":[],"categories":["\u003ca name=\"Go\"\u003e\u003c/a\u003eGo"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflomesh-io%2Ffsm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflomesh-io%2Ffsm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflomesh-io%2Ffsm/lists"}