{"id":24835773,"url":"https://github.com/tobilg/mesos-envoy-sds","last_synced_at":"2025-10-14T10:30:32.739Z","repository":{"id":86825877,"uuid":"99675004","full_name":"tobilg/mesos-envoy-sds","owner":"tobilg","description":"An Envoy Service Discovery Service for Mesos","archived":true,"fork":false,"pushed_at":"2018-02-09T08:51:08.000Z","size":18,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T12:00:02.264Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/tobilg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-08T09:24:53.000Z","updated_at":"2024-06-18T17:08:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"09a35480-7ead-48e3-9e1e-50d86e48aac2","html_url":"https://github.com/tobilg/mesos-envoy-sds","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tobilg/mesos-envoy-sds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobilg%2Fmesos-envoy-sds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobilg%2Fmesos-envoy-sds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobilg%2Fmesos-envoy-sds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobilg%2Fmesos-envoy-sds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tobilg","download_url":"https://codeload.github.com/tobilg/mesos-envoy-sds/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobilg%2Fmesos-envoy-sds/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018780,"owners_count":26086452,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-01-31T04:51:44.178Z","updated_at":"2025-10-14T10:30:32.734Z","avatar_url":"https://github.com/tobilg.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mesos-envoy-sds\nAn [Envoy](https://lyft.github.io/envoy/docs/index.html) Service Discovery Service for Mesos. This service can be launched within a Mesos cluster, e.g. via Marathon, and will provide a [Envoy SDS endpoint](https://www.envoyproxy.io/docs/envoy/v1.5.0/api-v1/cluster_manager/sds) which can be usend in a Envoy configuration.\n\n## Configuration\n\nYou can configure `mesos-envoy-sds` via the following environment variables:\n\n* `MASTER_HOST`: The hostname/ip address where the Mesos Master is running. Default is `leader.mesos`, which assumes you're running Mesos DNS in your cluster.\n* `MASTER_PORT`: The Mesos Master's port. Default is `5050`. \n* `MASTER_PROTOCOL`: The Master's communication protocol for the Operator API. Default is `http`.\n* `MASTER_API_URI`: The URI under which the Operator API can be found. Default is `/api/v1`.\n* `MASTER_CONNECTION_TIMEOUT_MS`: The timeout in milliseconds for the connection to the Mesos Master. Default is `5000`.\n* `RECONCILE_INTERVAL_MS`: The interval in milliseconds when a \"reconcile\" (meaning a `GET_STATE` call to retrieve the current state from the leading Mesos Master) is triggered. Default is `60000` (ten minutes).\n* `NODE_ENV`: The Node.js environment type. Default is `development`, the Docker image uses `production`.\n* `LOG_LEVEL`: The log level of the application (see [Winston docs](https://www.npmjs.com/package/winston#using-logging-levels)). Default is `info`. \n* `API_VERSION`: The API version of the Envoy SDS API's `/registration/:serviceName` endpoint. Default is `v1`.\n\n## Installation via Marathon\n\nUse the following example Marathon application definition to launch the Mesos Envoy SDS. \n\nIf you're using a default Mesos cluster installation regarding master ports, it shouldn't be necessary to pass any additional configuration environment variables. In this example, we overwrite the default `RECONCILE_INTERVAL_MS` of `600000` (ten minutes) with a custom two-minute interval, and set the `LOG_LEVEL` to `debug` instead `info`.  \n\n```javascript\n{\n  \"id\": \"/mesos-envoy-sds\",\n  \"cpus\": 0.1,\n  \"mem\": 128,\n  \"disk\": 0,\n  \"instances\": 1,\n  \"container\": {\n    \"type\": \"DOCKER\",\n    \"docker\": {\n      \"image\": \"tobilg/mesos-envoy-sds:0.1.0\",\n      \"network\": \"HOST\",\n      \"privileged\": false,\n      \"forcePullImage\": true\n    }\n  },\n  \"env\": {\n    \"RECONCILE_INTERVAL_MS\": \"120000\",\n    \"LOG_LEVEL\": \"debug\"\n  },\n  \"labels\":{\n    \"MARATHON_SINGLE_INSTANCE_APP\": \"true\"\n  },\n  \"upgradeStrategy\":{\n    \"minimumHealthCapacity\": 0,\n    \"maximumOverCapacity\": 0\n  },\n  \"portDefinitions\": [\n    {\n      \"port\": 31333,\n      \"protocol\": \"tcp\",\n      \"name\": \"api\"\n    }\n  ],\n  \"requirePorts\": true,\n  \"healthChecks\": [\n    {\n      \"protocol\": \"HTTP\",\n      \"portIndex\": 0,\n      \"path\": \"/health\",\n      \"gracePeriodSeconds\": 5,\n      \"intervalSeconds\": 20,\n      \"maxConsecutiveFailures\": 3\n    }\n  ]\n}\n```\n\nIn this example, it uses a static host port `31333` which can be replace by any given (non-used) port. When your cluster uses Mesos DNS as well, the endpoint will be able to be used at `mesos-envoy-sds.marathon.mesos:31333` by Envoy itself.\n\n## Usage with Envoy\n\nThis could be an example Envoy configuration which makes use of the Mesos Envoy SDS:\n\n```javascript\n{\n  \"listeners\": [\n    {\n      \"address\": \"tcp://0.0.0.0:80\",\n      \"filters\": [\n        {\n          \"type\": \"read\",\n          \"name\": \"http_connection_manager\",\n          \"config\": {\n            \"codec_type\": \"auto\",\n            \"stat_prefix\": \"ingress_http\",\n            \"rds\": {\n              \"cluster\": \"rds\",\n              \"route_config_name\": \"front_proxy\",\n              \"refresh_delay_ms\": 250\n            },\n            \"filters\": [\n              { \"type\": \"both\", \"name\": \"health_check\",\n                \"config\": {\n                  \"pass_through_mode\": false, \"endpoint\": \"/healthcheck\"\n                }\n              },\n              {\n                \"type\": \"decoder\",\n                \"name\": \"router\",\n                \"config\": {}\n              }\n            ]\n          }\n        }\n      ]\n    }\n  ],\n  \"admin\": {\n    \"access_log_path\": \"/dev/null\",\n    \"address\": \"tcp://0.0.0.0:8001\"\n  },\n  \"cluster_manager\": {\n    \"sds\": {\n      \"cluster\": {\n        \"name\": \"sds\",\n        \"connect_timeout_ms\": 250,\n        \"type\": \"strict_dns\",\n        \"lb_type\": \"round_robin\",\n        \"hosts\": [{\"url\": \"mesos-envoy-sds.marathon.mesos:31333\"}]\n      },\n      \"refresh_delay_ms\": 2000\n    },\n    \"cds\": {\n      \"cluster\": {\n        \"name\": \"cds\",\n        \"connect_timeout_ms\": 250,\n        \"type\": \"strict_dns\",\n        \"lb_type\": \"round_robin\",\n        \"hosts\": [{\"url\": \"mesos-envoy-sds.marathon.mesos:31333\"}]\n      },\n      \"refresh_delay_ms\": 2000\n    },\n    \"clusters\": [\n      {\n          \"name\": \"rds\",\n          \"connect_timeout_ms\": 250,\n          \"type\": \"logical_dns\",\n          \"lb_type\": \"round_robin\",\n          \"hosts\": [{\"url\": \"mesos-envoy-sds.marathon.mesos:31333\"}]\n      }\n    ]\n  }\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobilg%2Fmesos-envoy-sds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftobilg%2Fmesos-envoy-sds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobilg%2Fmesos-envoy-sds/lists"}