我正在尝试将ProxyInjector设置为自动将keycloak-gateway注入到任何具有如下注释的容器中,这些注释用于我在kubernetes上部署的服务:
"annotations": {
"authproxy.stakater.com/client-id": "bitwarden",
"authproxy.stakater.com/client-secret": "<secret>",
"authproxy.stakater.com/discovery-url": "https://keycloak.example.com/auth/realms/realmname",
"authproxy.stakater.com/enabled": "true",
"authproxy.stakater.com/listen": "127.0.0.1:3000",
"authproxy.stakater.com/redirection-url": "http://127.0.0.1:3000",
"authproxy.stakater.com/source-service-name": "bitwarden",
"authproxy.stakater.com/target-port": "3000",
"authproxy.stakater.com/upstream-url": "http://127.0.0.1:80",
}这是针对Kubernetes中的bitwardenrs部署的。该服务如下所示:
---
kind: Service
apiVersion: v1
metadata:
name: bitwarden
spec:
selector:
app: bitwarden
ports:
- protocol: TCP
name: bitwarden-http
port: 80
targetPort: 80
- protocol: TCP
name: bitwarden-https
port: 443
targetPort: 443
type: NodePort我可以通过入口正常访问服务。但是当我在前面添加注释来进行身份验证时,我得到了一个502错误的网关错误。
检查bitwarden pod日志,我可以看到代理容器成功启动,并根据我在此处定义的内容进行代理。但我没有看到任何关于它实际上试图代理任何东西的日志(无论是在那个pod中,还是在我的入口控制器pod中)。
我是不是做错了什么,让它返回502?
发布于 2019-12-03 17:00:25
根据文档here,代理监听的是authproxy.stakater.com/listen。因此,它应该是0.0.0.0:80或0.0.0.0:443。因此,nginx重定向到服务的每个调用都会落在代理容器上。请求通过keycloak验证后。它会将其重定向到authproxy.stakater.com/redirection-url中提到的url,例如https://cool.myweb.app.com (应该可以通过keycloak访问)。来自密钥罩的重定向请求将再次落在代理容器上,但这一次是经过身份验证的,并将重定向到authproxy.stakater.com/upstream-url,即您正在尝试代理的应用程序。
Recommended setting is to run proxy on port 80/443 and app on any other port e.g. 3000 etc.有关更多参考信息,请参阅Flow diagram。
如果您有任何进一步的问题,请随时在存储库中打开问题。或者在Stakater slack channel中询问
https://stackoverflow.com/questions/57839374
复制相似问题