Skip to content

domdom82/routing-release

 
 

Repository files navigation

Routing Release

This repository is a BOSH release for deploying Gorouter, TCP Routing, and other associated tasks that provide HTTP and TCP routing in Cloud Foundry foundations.

Downloads

Our BOSH release is available on bosh.io and on our GitHub Releases page.

Getting Help

If you have a concrete issue to report or a change to request, please create a Github issue on routing-release.

Issues with any related submodules (Gorouter, Routing API, Route Registrar, CF TCP Router) should be created here instead.

You can also reach us on Slack at cloudfoundry.slack.com in the #cf-for-vms-networking. channel.

Contributing

See the Routing Contributing Resources section for more information on how to contribute.

Table of Contents

  1. Routing Operator Resources
  2. Routing App Developer Resources
  3. Routing Contributor Resources

Routing Operator Resources

High Availability

The TCP Router and Routing API are stateless and horizontally scalable. The TCP Routers must be fronted by a load balancer for high-availability. The Routing API depends on a database, that can be clustered for high-availability. For high availability, deploy multiple instances of each job, distributed across regions of your infrastructure.

Routing API

For details refer to Routing API.

Metrics

For documentation on metrics available for streaming from Routing components through the Loggregator Firehose, visit the CloudFoundry Documentation. You can use the NOAA Firehose sample app to quickly consume metrics from the Firehose.

Routing App Developer Resources

Session Affinity

For more information on how Routing release accomplishes session affinity, i.e. sticky sessions, refer to the Session Affinity document.

Headers

X-CF Headers describes the X-CF headers that are set on requests and responses inside of CF.

Routing Contributor Resources

CI Statuses

Job Status
unit tests networking.ci.cf-app.com
performance tests networking.ci.cf-app.com
smoke tests networking.ci.cf-app.com

Developer Workflow

  1. Clone CI repository (next to where routing-release is cloned)
mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/cloudfoundry/wg-app-platform-runtime-ci.git

When working on individual components of the Routing Release, work out of the submodules under src/.

Run the appropriate unit tests (see Testing).

The release branch contains code that has been released. All development work happens on the develop branch.

Get the code

  1. Clone the repository
mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/cloudfoundry/routing-release.git
cd routing-release/
  1. Initialize and sync submodules.
./scripts/update

Running BOSH Job Templating Tests

From the root of the repo, run:

Run the specs
rspec ./spec/
Lint the specs
rubocop ./spec/

If you do not have rspec or rubocop installed locally, run ./scripts/start-docker-for-testing.sh and execute the commands in the docker container. Prepend "sudo" to the script if you are an unprivileged user.

Running Unit and Integration Tests

With Docker

Running tests for this release requires Linux specific setup and it takes advantage of having the same configuration as Concourse CI, so it's recommended to run the tests (units & integration) in docker containers.

  1. ./scripts/docker/container.bash <mysql-8.0(or mysql),mysql-5.7,postgres>: This will create a docker container with appropriate mounts.
  2. /repo/scripts/docker/build-binaries.bash: This will build binaries required for running tests e.g. nats-server
  • /repo/scripts/docker/test.bash: This will run all tests in this release

  • /repo/scripts/docker/test.bash gorouter: This will only run gorouter tests

  • /repo/scripts/docker/test.bash gorouter router: This will only run router sub-package tests for gorouter package

  • /repo/scripts/docker/tests-templates.bash: This will run all of tests for bosh tempalates

  • /repo/scripts/docker/lint.bash: This will run all of linting defined for this repo.

There are also these scripts to make local development/testing easier:

  • ./scripts/test-in-docker-locally: Runs template tests, building binaries, and then the test.bash script. Default to mysql DB. Set DB environment variable for alternate DBs e.g. <mysql-8.0(or mysql),mysql-5.7,postgres>
    • The <test-script> <component> <subpackage> syntax mentioned above is also supported here: ./scripts/test-in-docker-locally gorouter router

Running Acceptance tests

The Routing Acceptance Tests must run against a full Cloud Foundry deployment. One method is to deploy Cloud Foundry on a BOSH lite with cf-deployment.

To run the Routing Acceptance Tests, see the README.md.

About

This is BOSH release for cloud foundry routers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 49.9%
  • HTML 28.4%
  • Shell 13.1%
  • Go 8.6%