我正在尝试使用Angular JS前端应用程序中的Kubernetes API服务器。 API服务器使用https端点。前端应用程序部署到其他服务器。
尽管用于--cors-allowed-origins=.*
的--cors-allowed-origins=["http://*"]
(或kube-apiserver
)参数我无法访问API,因为当我尝试发出GET XHR请求时,飞行前OPTIONS
请求失败,401响应没有CORS头。
但是,当我从https切换到http时,一切正常。
看起来我正面临this问题,已经修复并合并到我正在使用的Kubernetes版本中。
版本是Kubernetes 1.2.4,Angular JS 1.5.4和Chrome 51。
你能告诉我它为什么会发生以及如何解决这个问题吗?我需要一个适用于https的工作解决方案。
你链接的问题是固定的,但是kubernetes/kubernetes#18113引入了CORS处理的回归并且还没有修复(参见kubernetes/kubernetes#24086)。它目前被标记为即将发布的1.3版本的已知问题,这意味着它是一个突出的bug。
您可以编辑kubernetes API服务器yaml文件,以使CORS正常工作。
地点:/etc/kubernetes/manifests/kube-apiserver.yaml
在- --cors-allowed-origins=http://www.example.com,https://*.example.com
下添加kube-apiserver
这一行
spec:
containers:
- command:
- kube-apiserver
- --cors-allowed-origins=http://www.example.com,https://*.example.com
您可以添加逗号分隔的域或正则表达式。
无需重启kube-apiserver
,一旦文件保存,kube-apiserver
将自动重启。
启动API服务器需要5到10分钟的时间。