question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Use a reverse proxy to avoid routes/ingress creation at workspace startup

See original GitHub issue

Description

In the past 2 years of running Che in production we have seen that OpenShift routes do not always fit our needs (we need to bring-up 3 or more routes in a few seconds for every user workspace). The same applies to Kubernetes Ingresses (still in Beta).

Thus the need to investigate alternatives. One proposal is to pre-create one workspace route/ingress for Che server and link it to a reverse proxy that will route all the workspaces traffic (e.g. re-use JWT proxy, envoy or traefik).

That would allow us to:

  • limit the number or route/ingress Che needs
  • create the route before a user ask to start a workspace

If this approach is validated we could divide the work in 4 steps

  • Analyse if the already existent JWT Proxy would satisfy our needs
  • All workspaces inbound and outbound traffic should be routed through the JWT Proxy
  • Share one JWT Proxy instance amongst all the workspaces of a single user
  • Share one JWT Proxy instance amongst all the Che users of a Kube cluster

UPDATE Another important use case is associated to this issue: allow running Che workspaces on OpenShift (where single-host strategy is not available) when using wildcard SSL certificates is not possible.

Implementation

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Reactions:3
  • Comments:17 (16 by maintainers)

github_iconTop GitHub Comments

4reactions
metloscommented, Jul 13, 2020

Note that we have concluded our testing of the candidate solutions for a reverse proxy. We chose Traefik and will commence the implementation with #17063 - making our Rust-based POC a fully maintained controller written in Go.

To read more about the selection process and reasoning behind the choice of Traefik, please read through https://www.eclipse.org/lists/che-dev/msg03828.html

2reactions
metloscommented, May 20, 2020

In the above mentioned POC repository, we now have 3 POCs implemented:

  • haproxy-scripted - this is a vanilla haproxy image operated by oc commands from the test scripts
  • nginx-custom-image - this is a custom image using our cm-bump utility and nginxinc/nginx-unprivileged official image of nginx
  • traefik-sidecar - this is combination of traefik and cm-bump (we don’t require a custom image in this case because traefik can watch for config changes on its own)

We’re working on haproxy-custom-image which is very similar to nginx-custom-image only with haproxy as the gateway solution. This is to be able to quantify the effect of a custom controller vs externally executed commands.

We’re also working on the testsuite. We’re developing a number of load test scenarios (https://github.com/che-incubator/che-gateway-poc/tree/master/test#testcases). We have not yet started websocket and cookie handling tests which we are going to start once the haproxy-custom-image poc is implemented.

Read more comments on GitHub >

github_iconTop Results From Across the Web

How To Set Up a Reverse Proxy (Step-By-Step for Nginx ...
Comprehensive Reverse Proxy guide for WordPress. Learn how to load a different WordPress site from a subdirectory via reverse proxy.
Read more >
What is a reverse proxy? | Proxy servers explained - Cloudflare
A reverse proxy protects web servers from attacks and can provide performance and reliability benefits. Learn more about forward and reverse proxies.
Read more >
Building a Reverse Proxy in .NET Core - Auth0
Learn how to use .NET Core to implement a reverse proxy to overcome specific needs that you could hardly solve with an out-of-the-box ......
Read more >
Running an NGINX reverse proxy with Docker and Let's ...
This tutorial uses the nginx-proxy Docker container to automatically configure NGINX to forward requests to the corresponding website. As an ...
Read more >
Configuring Proxies for Tableau Server
By default, tableau , is the unprivileged user created by Tableau Server ... For better security, you should configure reverse proxy servers to...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found