我在kubernetesv1.18集群中安装了港口,让我困惑的是,当我使用默认用户名和密码登录港口时,它给我的错误是:405 Method Not Allowed。

405显示您应该使用GET,但实际上使用的是POST错误,我认为港口登录页面不会使此mistake.why会发生这种情况,我应该做什么来修复它?顺便说一下,这是kubernetes traefik配置:
spec:
entryPoints:
- web
routes:
- kind: Rule
match: Host(`harbor-portal.dolphin.com`)
services:
- name: harbor-harbor-portal
port: 80
- kind: Rule
match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/c`)
services:
- name: harbor-harbor-core
port: 80
- kind: Rule
match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/v2`)
services:
- name: harbor-harbor-core
port: 80
- kind: Rule
match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/api`)
services:
- name: harbor-harbor-core
port: 80
- kind: Rule
match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/service`)
services:
- name: harbor-harbor-core
port: 80
- kind: Rule
match: Host(`harbor-portal.dolphin.com`) && PathPrefix(`/chartrepo`)
services:
- name: harbor-harbor-core
port: 80kubernetes入口是traefik 2.2.1。这是kubernetes pod中港口门户的日志输出:
2020-08-03T16:50:17.415502118Z 10.11.157.67 - - [03/Aug/2020:16:50:17 +0000] "GET / HTTP/1.1" 200 856 "-" "Go-http-client/1.1"
2020-08-03T16:50:18.242118851Z 192.168.31.30 - - [03/Aug/2020:16:50:18 +0000] "GET / HTTP/1.1" 200 856 "-" "kube-probe/1.18"
2020-08-03T16:50:18.307214547Z 192.168.31.30 - - [03/Aug/2020:16:50:18 +0000] "POST /c/login HTTP/1.1" 405 559 "http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
2020-08-03T16:50:19.233495082Z 192.168.31.30 - - [03/Aug/2020:16:50:19 +0000] "POST /c/login HTTP/1.1" 405 559 "http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects" "Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"从港口门户kubernetes pod发送请求:
nginx [ / ]$ curl -X POST 'http://localhost:8080/c/login' \
> -H 'Connection: keep-alive' \
> -H 'Accept: application/json, text/plain, */*' \
> -H 'DNT: 1' \
> -H 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36' \
> -H 'Content-Type: application/x-www-form-urlencoded' \
> -H 'Origin: http://harbor-portal.dolphin.com' \
> -H 'Referer: http://harbor-portal.dolphin.com/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects' \
> -H 'Accept-Language: en,zh-CN;q=0.9,zh;q=0.8,zh-TW;q=0.7,fr;q=0.6' \
> --data-raw 'principal=admin&password=Harbor123456' \
> --compressed \
> --insecure
<html>
<head><title>405 Not Allowed</title></head>
<body>
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.16.1</center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->发布于 2021-05-20 10:27:09
我通过helm和alb入口安装了港口(v1.10.4)。当使用正确的用户名和密码登录时,它会返回405错误。
遵循这个问题(https://github.com/goharbor/harbor-helm/issues/485#issuecomment-686222551),我解决了这个问题。关键原因是入口规则将登录请求引导到门户。只需将与门户相关的规则更改为但可以解决它。
回源入口:
spec:
rules:
- host: harbor.xxx.com
http:
paths:
- backend:
serviceName: harbor-harbor-portal
servicePort: 80
path: /*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /api/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /service/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /v2/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /chartrepo/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /c/*
pathType: ImplementationSpecific修改后:
spec:
rules:
- host: harbor.xxx.com
http:
paths:
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /api/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /service/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /v2/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /chartrepo/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-core
servicePort: 80
path: /c/*
pathType: ImplementationSpecific
- backend:
serviceName: harbor-harbor-portal
servicePort: 80
path: /*
pathType: ImplementationSpecifichttps://stackoverflow.com/questions/63232003
复制相似问题