Faas: Use of CLI or Web UI returns status code 500 and 'Get : unsupported protocol scheme ""'

Created on 9 Sep 2019  Â·  16Comments  Â·  Source: openfaas/faas

My actions before raising this issue

Expected Behaviour



Access to the Web UI or via faas-cli after installation should be successful.

Current Behaviour



Access to the web UI returns the body: Get : unsupported protocol scheme "" with status code 500. Using faas-cli commands such as login or list return the response: Server returned unexpected status code: 500 - Get : unsupported protocol scheme ""

Possible Solution



It looks like something is overriding the router in gateway/server.go. Even browsing to :8080/system/info with a GET request returns the same error message.

Steps to Reproduce (for bugs)


  1. Install OpenFaaS on Raspbian (with Docker managed by Portainer) using ./deploy-stack
  2. Services successfully start and are running.
  3. Browse (or run CLI commands) to the OpenFaaS port.
  4. Encounter error message.

Context



N/a

Your Environment

  • FaaS-CLI version ( Full output from: faas-cli version ):

CLI: commit: 893972afffa5ea6672faa6e11743ae46322ec58c version: 0.9.2

  • Docker version docker version (e.g. Docker 17.0.05 ): 19.03.1

  • Are you using Docker Swarm or Kubernetes (FaaS-netes)? Docker Swarm

  • Operating System and version (e.g. Linux, Windows, MacOS): Linux (Raspbian)

  • Code example or link to GitHub repo or gist to reproduce problem: N/a

  • Other diagnostic information / logs from troubleshooting guide

Next steps

You may join Slack for community support.

All 16 comments

Hello Dan.

Can you help with the initial steps required in order to reproduce, please? You mention Portainer, which may or may not be a factor, and if it is then we'd need to assess at that point as to whether it's a supported mode of operation. I think this is the third of this kind that we've seen in recent times so it looks like it may not be an isolated case.

Hi - yep,

Setup as follows (let me know if you want more information):

Host

  • Raspberry Pi 3B+
  • Raspbian Buster

OpenFaaS

Access was attempted via domain name, IP address, curl from command line to 127.0.0.1 (initial redirect from / to /ui/, and faas-cli. All demonstrated the same issue.

Setup commands were (running as user that's in the docker group:

  1. git clone https://github.com/openfaas/faas
  2. cd ./faas
  3. ./deploy_stack.sh

Deploy stack successfully completed, including stating that it was deploying for ARM.

Then docker service ls showed:

ID                  NAME                     MODE                REPLICAS            IMAGE                                     PORTS
9x2xuemsrv42        func_alertmanager        replicated          1/1                 functions/alertmanager:0.15.0-armhf       
yemdv4ws7vxr        func_basic-auth-plugin   replicated          1/1                 openfaas/basic-auth-plugin:0.15.4-armhf   
sernko5jz2j0        func_faas-swarm          replicated          1/1                 openfaas/faas-swarm:0.7.1-armhf           
2eeg7eerydak        func_gateway             replicated          1/1                 openfaas/gateway:0.15.4-armhf             *:8080->8080/tcp
pmxolfwhqzq0        func_nats                replicated          1/1                 nats-streaming:0.11.2                     
xdgfeg7tr3tf        func_prometheus          replicated          1/1                 functions/prometheus:2.7.0-armhf          *:9090->9090/tcp
snejnnrtimse        func_queue-worker        replicated          1/1                 openfaas/queue-worker:0.7.2-armhf       

Docker

Only other container running is Portainer - started before docker swarm init and exposing ports 8000 and 9000. Portainer version is 1.22.0.

docker container ls output:

CONTAINER ID        IMAGE                                     COMMAND                  CREATED             STATUS              PORTS                                            NAMES
629d52d4ace3        functions/prometheus:2.7.0-armhf          "/bin/prometheus --c…"   2 hours ago         Up 2 hours          9090/tcp                                         func_prometheus.1.losxfr8aduc7nja228pee22sh
b14c2d2994f5        openfaas/gateway:0.15.4-armhf             "./gateway"              2 hours ago         Up 2 hours          8080/tcp, 8082/tcp                               func_gateway.1.3eugz7bu7mxaevcdr8t0hn372
f660ee10f8ef        openfaas/queue-worker:0.7.2-armhf         "./app"                  2 hours ago         Up 2 hours          8080/tcp                                         func_queue-worker.1.z3db7s8d45tyigobwcdyu4zt1
f63542d6c7ad        functions/alertmanager:0.15.0-armhf       "/bin/alertmanager -…"   2 hours ago         Up 2 hours          9093/tcp                                         func_alertmanager.1.2m8trr0tz9fxz0pxg4sa9vbe8
26619957fe9b        openfaas/basic-auth-plugin:0.15.4-armhf   "./handler"              2 hours ago         Up 2 hours                                                           func_basic-auth-plugin.1.7fb8xpn8b15epqyck6vvf1usz
a0b1f653341d        nats-streaming:0.11.2                     "/nats-streaming-ser…"   2 hours ago         Up 2 hours          4222/tcp, 8222/tcp                               func_nats.1.dms1fye7ysfqu4ijfp58hjire
6345a7b9c434        openfaas/faas-swarm:0.7.1-armhf           "./faas-swarm"           2 hours ago         Up 2 hours          8080/tcp                                         func_faas-swarm.1.dcol7eslzsqwpf4s0cyja9gr6
8e76e78e7e79        portainer/portainer                       "/portainer --ssl --…"   2 days ago          Up 2 days           0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp   portainer

Thanks. I've been able to reproduce. Portainer is a red herring.

$ docker service logs func_gateway
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 HTTP Read Timeout: 5m5s
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 HTTP Write Timeout: 5m5s
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 Binding to external function provider: http://faas-swarm:8080/
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 Async enabled: Using NATS Streaming.
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 Opening connection to nats://nats:4222
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:18 Connect: nats://nats:4222
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:28 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:36 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:36 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:37 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:38 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:40 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:42 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:45 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:46 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:46 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:47 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:48 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:49 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:51 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:54 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:56 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:56 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:57 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:58 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:03:59 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:03 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:06 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:06 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:07 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:08 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:10 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:12 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:14 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:16 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:16 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:17 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:18 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:21 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:25 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:26 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:26 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:27 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:29 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:30 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:33 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:36 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:36 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:37 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:38 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:40 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:41 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:44 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:46 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:46 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:47 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:48 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:50 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:54 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:56 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:56 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:57 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:58 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:04:59 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:01 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:03 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:06 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:06 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:07 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:08 ExternalAuthHandler: Get : unsupported protocol scheme ""
func_gateway.1.kww2dp7be3nu@pi3    | 2019/09/09 20:05:09 ExternalAuthHandler: Get : unsupported protocol scheme ""

Seems this is being triggered:

https://github.com/openfaas/faas/blob/6481b683f233c39f2f724a7a6318e445c4176b8c/gateway/handlers/external_auth.go#L27

I've got a fix lined up. Shouldn't be too long...

The PR is up in case you want to make the changes locally to test? It'd be good to get some independent testing feedback.

I’ll check either tomorrow morning at the weekend - and will comment if the issue is not resolved 🙂 thanks for the speedy fix!

@spiazzi fyi this might also resolve your issue

@rgee0 super! it works

i also meet this issue, but i use windows10

i also meet this issue, but i use windows10

I had exactly same problem on windows 10. Checked it on multiple PCs (my and coworkers). Our solution (found it by accident) was to use deploy.sh (not deploy.ps1) on Windows. It works this way.

Perhaps let's delete the powershell script @LucasRoesler @rgee0 ? Most of the automation we have works best with bash such as git bash.

I, personally, have no issue with removing it. But, I don't use windows. _If_ the bash script works just as well on windows, then I say, get rid of the powershell script

Having spent a considerable amount of time trying to get an instance running on Windows using the PS script I am convinced that removing the PS script would have an overall positive effect.

It's also worth noting that the PS script currently is current unable to provide basic auth at all - the user can explicitly decline basic auth but since the env var is never set to true the only mode available is without basic auth. Given the period of time since basic auth was enabled by default it is interesting that this has never been raised.

So I recommend removing the ps script and making that clear

This was a trivial fix to the ps1 script, will raise a PR shortly.

Cheers!

Note that bash in WSL1 currently does not work here, WSL2 should allow the use of the bash script, but you're still going to run into people who are not running WSL at all so there is still value to providing a Powershell script.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

hotjunfeng picture hotjunfeng  Â·  5Comments

maxbry picture maxbry  Â·  7Comments

alexellis picture alexellis  Â·  6Comments

FlankMiao picture FlankMiao  Â·  4Comments

matthewdolman picture matthewdolman  Â·  5Comments