Skip to content

Releases: cloudfoundry/routing-release

0.141.0

02 Nov 23:47
Compare
Choose a tag to compare
  • Routing API now supports mysql or postgresql as datastore instead of etcd. When routing_api.sqldb property is configured, data will be migrated from etcd. Routing API will continue watching etcd for new data to migrate until it loses connection with etcd (if that component is rolled for a deploy) or the routing_api.etcd property is removed with a subsequent deploy. Property routing_api.etcd is now optional when routing_api.sqldb is present.
  • Fixed bug for Zipkin tracing support: header X-B3-ParentSpanId is no longer sent when request does not include headers X-B3-TraceId and X-B3-SpanId details
  • Fixed bug introduced in 0.139.0: when router.force_forwarded_proto_https: false gorouter once again sends X-Forwarded-Proto: https to backends when request was received over TLS details
  • Routing acceptance tests no longer test routing api endpoints for http routes by default (as they are experimental and as yet unused by CF) details
  • Routing API client no longer sends body null with GET requests details
  • Gorouter now logs the destination ip and port in access logs details
  • Manifest generation scripts now pulls etcd certificate properties from cf-release for the metron agent colocated with routing components, so that it can communicate with etcd when it requires TLS details
  • scripts/update now exits fast when permission denied details

Known Issues

  • Manifest generation scripts insert two lines of nonsense at the top of the manifest file, causing deploy to fail. Remove these two lines and deploy will succeed. Will be fixed in the next release!

Manifest Property Changes

routing_api

0.140.0 0.141.0 Default Value
did not exist routing_api.sqldb.host
did not exist routing_api.sqldb.port
did not exist routing_api.sqldb.type
did not exist routing_api.sqldb.schema
did not exist routing_api.sqldb.username
did not exist routing_api.sqldb.password

tcp_emitter

0.140.0 0.141.0 Default Value
tcp_emitter.sync_interval new default 20s

acceptance_tests

0.140.0 0.141.0 Default Value
did not exist acceptance_tests.include_http_routes false

0.140.0

11 Oct 00:31
Compare
Choose a tag to compare
  • Gorouter now supports an alternative load balancing algorithm, least-connection, configurable with new property router.balancing_algorithm details
  • ./scripts/generate-bosh-lite-manifest now supports stubs details
  • Routing components now recover from an IaaS-level VM restart detail

In Progress:

  • Routing API support for mysql/postgresql details

Known Issues

  • The routing API stores the router_group resource in etcd. Router group data is necessary to maintain consistency with the CC API's shared domains, which means that blowing away the data in etcd is not safe when using TCP routing.

Manifest Property Changes

gorouter

0.139.0 0.140.0 Default Value
Did not exist router.balancing_algorithm round-robin

0.139.0

08 Oct 01:36
Compare
Choose a tag to compare
  • PCRE has been updated in TCP Router to 8.39 details
  • Gorouter now offers HTTP healthcheck endpoint /health on port 8080 (configurable via existing router.status.port property) with support for properties router.load_balancer_healthy_threshold and router.drain_wait details
  • TCP Router now offers HTTP healthcheck endpoint /health on port 80 (configurable with property haproxy.health_check_port) details
  • Gorouter will route a request that contains a valid value for X-Cf-App-Instance HTTP header to the specified backend details
  • Gorouter now accurately reports in access log the number of bytes sent in the response body when returning an error details
  • Gorouter now supports optionally forcing the value of X-Forwarded-Proto sent to backends to https when an upstream component is terminating TLS but does not support sending HTTP headers

Support for Zipkin tracing

  • When Zipkin tracing is enabled, if request does not include both X-B3-TraceId and X-B3-SpanId HTTP headers, router will initiate a new trace id details
  • When Zipkin tracing is enabled, and request includes both X-B3-TraceId and X-B3-SpanId, Gorouter will forward HTTP header X-B3-ParentSpanId to the backend, set to the value of X-B3-SpanId in the received request details
  • When Gorouter initiates a trace, X-B3-TraceId and X-B3-SpanId headers are set to the same value details

In Progress

  • Routing API support for MySQL/PostgreSQL details

Known Issues

  • The routing API stores the router_group resource in etcd. Router group data is necessary to maintain consistency with the CC API's shared domains, which means that blowing away the data in etcd is not safe when using TCP routing.

Manifest Property Changes

gorouter

0.138.0 0.139.0 Default Value
property did not exist router.force_forwarded_proto_https false

0.138.0

14 Sep 00:37
Compare
Choose a tag to compare
  • Gorouter can now be optionally configured to send Zipkin tracing HTTP headers X-B3-TraceId and X-B3-SpanId; these are also logged in the access log details
  • Gorouter now logs the NATS IP and port it connects to details
  • Gorouter now supports a configurable delay after which a newly started router begins listening for requests before bosh considers the process up details
  • Gorouter now logs unregister and pruning messages at an Info log level details
  • Gorouter now logs app index in access log details
  • The HTTP User-Agent header for which Gorouter responds to healthchecks from load balancers is now configurable details
  • Gorouter route pruning can optionally be suspended when NATS is unavailable details
  • Gorouter now healthchecks NATS every 20 seconds so in the event of a NATS failure it will failover to a health NATS node and still have enough time to receive route registrations before pruning routes details
  • Route-registrar now healthchecks NATS every 20 seconds details
  • In Progress: Routing API support for MySQL/PostgreSQL details
    • In order to support a relational database, and still support event streams, Routing API instances now run in active/standby configuration, using Consul for lock details

Bug Fixes

  • TCP Router generates connection errors under load details
  • unfamiliar error in router_configurer_ctl.err.log details

Known Issues

  • The routing API stores the router_group resource in etcd. Router group data is necessary to maintain consistency with the CC API's shared domains, which means that blowing away the data in etcd is not safe when using TCP routing.

Manifest Property Changes

gorouter

0.137.0 0.138.0 Default Value
property did not exist router.tracing.enable_zipkin false
property did not exist router.load_balancer_healthy_threshold 20
property did not exist router.healthcheck_user_agent HTTP-Monitor/1.1
property did not exist router.suspend_pruning_if_nats_unavailable false

Dependencies

cf-release v239
diego-release 0.1479.0
cf CLI 6.17

0.137.0

23 Aug 00:07
Compare
Choose a tag to compare
  • All routing components have been upgraded to golang1.6 details
    • Note: GoRouter does not currently support proxying HTTP/2 connections. Requests to backends will be made with HTTP/1.1 details
  • New manifest property suspend_pruning_if_NATS_unavailable can now be used to suspend pruning of HTTP routes if Gorouter cannot connect to NATS details

Bug Fixes

  • Pruning of root route in the presence of a route with a context path previously resulted in an unexpected 502 details
  • TCP Emitter attempted to map routes with no external ports details
  • Deployment with incorrect manifest configuration for Routing API, TCP Router, and TCP Emitter only failed on Routing API job details
  • Deployment did not fail when Routing API cannot save its own route in the database details

Known Issues

  • The routing API stores the router_group resource in etcd. Router group data is necessary to maintain consistency with the CC API's shared domains, which means that blowing away the data in etcd is not safe when using TCP routing.

Manifest Property Changes

acceptance_tests

0.136.0 0.137.0 Default Value
property did not exist acceptance_tests.skip_ssl_validation false
acceptance_tests.cloud_controller.skip_ssl_validation Removed property, value is pulled from acceptance_tests.skip_ssl_validation
acceptance_tests.uaa.skip_ssl_validation Removed property, value is pulled from acceptance_tests.skip_ssl_validation

gorouter

0.136.0 0.137.0 Default Value
property did not exist router.suspend_pruning_if_nats_unavailable false

Dependencies

cf-release v239
diego-release 0.1479.0
cf CLI 6.17

0.136.0

30 Jul 00:59
Compare
Choose a tag to compare
  • route-registrar source has been moved to routing-release and is symlinked in cf-release details
  • route-registrar process is not run as root details
  • rtr CLI option --skip-tls-verification applies to both --api and --oauth-url options details
  • Default reservable port range for router groups reduced to 100 ports on BOSH-lite details
  • Added explicit API documentation for the Routing API details
  • routing-release can be deployed without a seeded router group details
  • GoRouter now supports PROXY Protocol details

Dependencies

cf-release v236
diego-release 0.1468.0
cf CLI 6.17

0.135.0

12 Jul 22:50
Compare
Choose a tag to compare
  • BOSH does not report tcp_router job as failing when reloading configuration, and runs as vcap user details
  • Fixed bug: gorouter doesn't send logs to syslog details
  • Continued improving documentation around metrics sent on the firehose details
  • Routing components support manifest property to configure a trusted CA certificate for TLS communication between the components and UAA server. details
  • Output meaningful error when running routing acceptance tests errand when Routing API is not running details
  • Allow an operator to update router group reservable_ports field through the API. details
  • Expose uptime metric in the firehose for the GoRouter details
  • Fixed bug: x-cf-forwarded-url header to route service no longer includes port details

Manifest Property Changes

acceptance_tests

0.134.0 0.135.0 Default Value
skip_ssl_validation acceptance_tests.uaa.skip_ssl_validation false
property did not exist acceptance_tests.system_domain Required property
uaa.tls_port Removed property since we now use system_domain to contact UAA

gorouter

0.134.0 0.135.0 Default Value
router.debug_addr router.debug_address 0.0.0.0:17002
property did not exist router.enable_proxy false
property did not exist uaa.ca_cert ""

router_configurer

0.134.0 0.135.0 Default Value
router_configurer.debug_addr router_configurer.debug_address 0.0.0.0:17002
property did not exist uaa.ca_cert ""

routing-api

0.134.0 0.135.0 Default Value
routing.etcd.servers routing_api.etcd.servers Required property
routing.etcd.client_cert routing_api.etcd.client_cert "", required if routing.etcd.require_ssl is true
routing.etcd.client_key routing_api.etcd.client_key "", required if routing.etcd.require_ssl is true
routing.etcd.ca_cert routing_api.etcd.ca_cert "", required if routing.etcd.require_ssl is true
routing.etcd.require_ssl routing_api.etcd.require_ssl false
property did not exist uaa.ca_cert ""

tcp_emitter

0.134.0 0.135.0 Default Value
tcp_emitter.debug_addr tcp_emitter.debug_address 0.0.0.0:17002
tcp_emitter.consul.session_name Removed property
property did not exist uaa.ca_cert ""

Dependencies

cf-release v236
diego-release 0.1468.0
cf CLI 6.17

0.134.0

15 Jun 23:24
Compare
Choose a tag to compare
  • Many manifest properties have been changed for simplicity details
  • BOSH no longer reports tcp_router job failing when routing table changes details
  • Routing API support encrypted communication with etcd details
  • Fixed bug: default for property uaa.tls_port was a string details
  • haproxy on superman errors with tcp router and haproxy stats details
  • Fixed permission issues with haproxy stats socket details
  • Gorouter now uses cgo netdns instead of the golang DNS resolver details
  • Improved error message logged when router group in manifest doesn't contain ports details
  • Improved error message returned when running routing-acceptance-tests and routing-release (routing api) is not deployed details
  • Gorouter metric eventType:HttpStartStop now includes field Forwarded for each value of X-Forwarded-For header details
  • Fix pruning debug statement to only log when actually pruning a route details

Manifest Property Changes

haproxy

0.133.0 0.134.0
router.haproxy.request_timeout_in_seconds haproxy.request_timeout_in_seconds
router.haproxy.health_check_port haproxy.health_check_port

router_configurer

0.133.0 0.134.0
router.router_configurer.debug_addr router_configurer.debug_addr
router.router_configurer.log_level router_configurer.log_level
router.router_configurer.tcp_config_file_template REMOVED
router.router_configurer.tcp_config_file REMOVED
router.router_configurer.tcp_stats_unix_socket router_configurer.tcp_stats_unix_socket
router.router_configurer.tcp_stats_collection_interval router_configurer.tcp_stats_collection_interval
router.router_configurer.routing_api_port REMOVED
router.router_configurer.routing_api_auth_disabled routing_api.auth_disabled
router.router_configurer.tcp_router_secret router_configurer.oauth_secret
router.router_configurer.uaa_port REMOVED
router.router_configurer.uaa_ssl_port uaa.tls_port
router.router_configurer.skip_oauth_tls_verification skip_ssl_validation
metron.port

routing_api

0.133.0 0.134.0
routing-api.max_ttl routing_api.max_ttl
routing-api.port REMOVED
routing-api.auth_disabled routing_api.auth_disabled
routing-api.metrics_reporting_interval routing_api.metrics_reporting_interval
routing-api.statsd_endpoint routing_api.statsd_endpoint
routing-api.debug_address routing_api.debug_address
routing-api.statsd_client_flush_interval routing_api.statsd_client_flush_interval
routing-api.system_domain routing_api.system_domain
routing-api.etcd_machines routing.etcd.servers
routing.etcd.client_cert
routing.etcd.client_key
routing.etcd.ca_cert
routing.etcd.require_ssl
routing-api.skip_oauth_tls_verification skip_ssl_validation
routing-api.uaa_ssl_port uaa.tls_port
routing-api.log_level routing_api.log_level
metron_endpoint.host REMOVED
metron_endpoint.dropsonde_port REMOVED
routing-api.router_groups routing_api.router_groups
metron.port

tcp_emitter

0.133.0 0.134.0
router.tcp_emitter.debug_addr tcp_emitter.debug_addr
router.tcp_emitter.log_level tcp_emitter.log_level
router.tcp_emitter.bbs.api_location bbs.api_location
router.tcp_emitter.bbs.ca_cert bbs.ca_cert
router.tcp_emitter.bbs.client_cert tcp_emitter.bbs.client_cert
router.tcp_emitter.bbs.client_key tcp_emitter.bbs.client_key
router.tcp_emitter.bbs.require_ssl bbs.require_ssl
router.tcp_emitter.routing_api_port REMOVED
router.tcp_emitter.routing_api_auth_disabled routing_api.auth_disabled
router.tcp_emitter.tcp_emitter_secret tcp_emitter.oauth_secret
router.tcp_emitter.uaa_port REMOVED
router.tcp_emitter.consul_cluster consul.servers
router.tcp_emitter.lock_ttl tcp_emitter.lock_ttl
router.tcp_emitter.lock_retry_interval tcp_emitter.lock_retry_interval
router.tcp_emitter.session_name tcp_emitter.consul.session_name
router.tcp_emitter.skip_oauth_tls_verification skip_ssl_validation
router.tcp_emitter.uaa_ssl_port uaa.tls_port
router.tcp_emitter.sync_interval tcp_emitter.sync_interval
router.tcp_emitter.route_ttl tcp_emitter.route_ttl
metron.port

acceptance_tests

0.133.0 0.134.0
acceptance_tests.api acceptance_tests.cloud_controller.api
acceptance_tests.apps_domain acceptance_tests.cloud_controller.apps_domain
acceptance_tests.admin_user acceptance_tests.cloud_controller.admin_user
acceptance_tests.admin_password acceptance_tests.cloud_controller.admin_password
acceptance_tests.skip_ssl_validation acceptance_tests.cloud_controller.skip_ssl_validation
acceptance_tests.use_http acceptance_tests.cloud_controller.use_http
acceptance_tests.tcp_emitter_secret tcp_emitter.oauth_secret
acceptance_tests.skip_oauth_tls_verification skip_ssl_validation
acceptance_tests.uaa_port uaa.tls_port

gorouter

0.133.0 0.134.0
router.skip_oauth_tls_verification REMOVED
metron_endpoint.host REMOVED
routing-api.port routing_api.port
routing-api.auth_disabled routing_api.auth_disabled
metron.port

Dependencies

cf-release v236
diego-release 0.1468.0
cf CLI 6.17

0.133.0

03 Jun 00:42
Compare
Choose a tag to compare

Note: final release is in routing-release/releases/routing/routing-0.133.0.yml. In subsequent releases this has been symlinked back to routing-release/releases

  • Release renamed to routing-release details
  • Some processes no longer run as root [details, more details]
  • Unused logging properties have been removed details
  • Gorouter source has been moved to this release and is symlinked into cf-release details
  • Remove unused golang 1.4 package details
  • TCP Routes are now pruned from TCP Router on a TTL when Routing API is unavailable, to prevent requests from being routed to the wrong backends details
  • When registering routes with Routing API, a TTL can be optionally specified (defaults to 120s) details
  • TCP Routes are now pruned from Routing API if client ceases to heartbeat route registration, to prevent requests from being routed to the wrong backends details
  • TCP Router will only overwrite data received in periodic bulk fetches with buffered events if events are newer details
  • Log level can be configured for routing api using a manifest property details
  • Documented use of modification tags for router authors to reconcile data received from events and bulk fetch endpoints Additional Routing API docs details

Manifest Property Changes

0.126.0 0.133.0
added routing-api.log_level
added router.tcp_emitter.route_ttl
acceptance_tests.bbs.api_location removed
acceptance_tests.bbs.ca_cert removed
acceptance_tests.bbs.client_cert removed
acceptance_tests.bbs.client_key removed
acceptance_tests.bbs.require_ssl removed

Dependencies

cf-release v236
diego-release 0.1468.0
cf CLI 6.17

0.126.0

26 Apr 22:13
Compare
Choose a tag to compare

Golang has been updated to 1.5.4 to address vulnerabilities in 1.5.3

Dependencies

cf-release v236
diego-release 0.1468.0
cf CLI 6.17