Choreo Connect

Choreo Connect 是一个云原生的、开源的、以开发者为中心的 API 网关。「Choreo Connect is a cloud-native, open-source, and developer-centric API gateway.」

Github stars Tracking Chart

Choreo Connect

Build Status
License
Discord

Choreo Connect is a cloud-native, open-source, and developer-centric API gateway proxy. It provides first-class support for K8s while facilitating an array of API management quality of services (QoS), such as message security rate-limiting, observability, and message mediation.

It is powered by Envoy Proxy!

Why Choreo Connect

Microservices have become the norm for modern application architecture. Workloads of modern applications are spread
across many groups of microservices, cloud services and legacy services. The characteristics and behaviors of such
heterogeneous services have a massive diversity. Such as authentication mechanisms, message formats, high availability
factors and so on.
The Choreo Connect is designed to expose heterogeneous microservices as APIs to end consumers using a common API
interface based on the Open API Specification. This helps expose microservices using a unified interface to external
consumers, internal consumers and partners. It applies the common quality of service attributes on API requests such as
security, rate limiting and analytics and also offers a wide range of features which helps organizations to deploy APIs
microservice architectures efficiently.

Quick Start Guide

Prerequisites

  • On your machine, you should have installed,
    • docker
    • docker-compose

Let's host our first API on Choreo Connect. We will be exposing the publicly available petstore services via Choreo Connect.

  1. First download the latest CLI tool(APICTL) and the Choreo Connect distributions
    and extract them to a folder of your choice.

  2. Using your command line client tool add the CLI_HOME folder to your PATH variable.

    export PATH=$PATH:<CLI_HOME>
    
  3. Let's create our first project with name "petstore" by adding the OpenAPI definition of the petstore . You can do that by executing the following command using your command line tool.

    apictl init petstore --oas https://petstore.swagger.io/v2/swagger.json
    

    Note: If you have used a previous version of apictl before, remember to delete the directories .wso2apictl and .wso2apictl.local that are located in /home/<your-pc-username>. Deleting them will make the newer apictl create them again, with content compatible with the current version. You can backup the files before deleting them, in case you had to refer them later.

  4. The project is now initialized. You should notice a directory with name "petstore" being created in the location
    where you executed the command.

  5. Now let's start the Choreo Connect on docker by executing the docker compose script inside the CC_HOME/docker-compose/choreo-connect/. Navigate to CC_HOME/docker-compose/choreo-connect/ and execute the following command

    docker-compose up -d
    

    Once containers are up and running, we can monitor the status of the containers using the following command

    docker ps | grep choreo-connect-
    

    The user credentials can be configured in the configurations file CC_HOME/docker-compose/choreo-connect/conf/config.tomlinside Choreo Connect distribution. admin:admin is the default accepted credentials by the Choreo Connect adapter.

    Note: Following apictl commands are being executed with -k flag to avoid SSL verification with the Choreo Connect.
    To communicate via https without skipping SSL verification (without -k flag), add the cert of Choreo Connect into /home/<your-pc-username>/.wso2apictl/certs.

  6. To use apictl with Choreo Connect, let's first add a environment specifically for our Choreo Connect deployment. The environment will hold the adapter URL for further commands.

    apictl mg add env dev --adapter https://localhost:9843
    
  7. Next you can use the following command to login to the above Choreo Connect cluster (in other words login to the Choreo Connect adapter).

    apictl mg login dev -k
    

    or

    apictl mg login dev -u admin -p admin -k
    
  8. Now let's deploy our first API to Choreo Connect using the project created in the step 3. Navigate to the location where the petstore project was initialized. Execute the following command to deploy the API in the Choreo Connect deployment.

    apictl mg deploy api -f petstore -e dev -k
    
  9. The next step would be to invoke the API using a REST tool. Since APIs on the Choreo Connect are by default secured. We need a valid token in order to invoke the API.
    Let's get a test token from the Choreo Connect using its /testkey endpoint.

    TOKEN=$(curl -X POST "https://localhost:9095/testkey" -d "scope=read:pets" -H "Authorization: Basic YWRtaW46YWRtaW4=" -k -v)
    

    Note:
    Recommendation is to disable this /testkey endpoint in production environments as it is only for testing purposes.

  10. We can now invoke the API running on the Choreo Connect using cURL as below.

    curl -X GET "https://localhost:9095/v2/pet/findByStatus?status=available" -H "accept: application/json" -H "Authorization:Bearer $TOKEN" -k
    
  11. Try out the following commands with apictl.

    List APIs          - apictl mg get apis -e dev -k
    Undeploy API       - apictl mg undeploy api -n SwaggerPetstore -v 1.0.6 -e dev -k
    Logout             - apictl mg logout dev   
    Remove Environment - apictl mg remove env dev
    

Choreo Connect Components

  • APICTL : The APICTL is used to initiate Choreo Connect projects as well as to deploy APIs in to Choreo Connect environment by developers.

  • Router : The client facing component of the Choreo Connect. The downstream request will reach the proxy component and it will route the request
    to the desired destination.

  • Enforcer : This component will intercept the request going through the Router and applies security, rate limiting, publish analytics data and etc.
    Router will forward the request to this component in order to validate and to add additional QoS.

  • Adapter : The component configures the Router, and the enforcer components dynamically during the runtime upon receiving an event for API
    creation or update.

Architecture

The following diagram illustrates how the Choreo Connect expose microservices using Open API definition as well
as exposing APIs from WSO2 API Manager.

Alt text

Choreo Connect Modes

  • Choreo Connect with WSO2 API Manager as a Control Plane

    Choreo Connect can use WSO2 API Manager as its control plane, whether it's in the cloud or on-premise.

  • Choreo Connect as a Standalone Gateway

    Without the API Manager as the control plane, Choreo Connect can be deployed as a standalone gateway. APICTL is a command-line program that can be used to deploy APIs. By incorporating the OpenAPI specifications in APICTL, it is possible to develop API projects.

Documentation

You can refer Choreo Connect Documentation.

Survey On Open Source Community Communication

WSO2 wants to learn more about our open source software (OSS) community and your communication preferences to serve you better.

In addition, we may reach out to a small number of respondents to ask additional questions and offer a small gift.

Link to survey: https://forms.gle/h5q4M3K7vyXba3bK6

Main metrics

Overview
Name With Ownerwso2/product-microgateway
Primary LanguageJava
Program languageJava (Language Count: 10)
PlatformDocker, Kubernetes, Linux
License:Apache License 2.0
所有者活动
Created At2018-05-23 08:27:56
Pushed At2025-04-10 07:32:57
Last Commit At2021-03-31 20:39:10
Release Count107
Last Release Namevhotfix-20241217-4 (Posted on )
First Release Namev2.5.0-m1-r (Posted on 2018-06-13 22:22:03)
用户参与
Stargazers Count295
Watchers Count266
Fork Count265
Commits Count4k
Has Issues Enabled
Issues Count1369
Issue Open Count137
Pull Requests Count2047
Pull Requests Open Count17
Pull Requests Close Count217
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private