0

出于内部目的,我正在构建一个仪表板应用程序。在这个仪表板中,我需要显示一些关于 Kubernetes 的信息(运行的 pod、集群等)。

我正在尝试从我的网络应用程序(从浏览器)调用我的 Kubernetes API。API的网址是http://localhost:8001/api/v1/

我在获取数据时遇到错误(不允许使用 CORS 来源)。

我在互联网上搜索了几个小时试图找到解决方案,但没有任何效果。我知道还有其他堆栈帖子提供了一些解决方案,但我不确定如何应用它。例如。:在 Kubernetes API 中启用 CORS

你们中的任何人都知道如何在 Kubernetes API(Windows 的 Docker)上允许 CORS 来源吗?

注意:我正在使用kubectl proxy

4

3 回答 3

4

您可以编辑 kubernetes API 服务器 yaml 文件,以使 CORS 正常工作。

添加行--cors-allowed-origins=["http://*"]参数到/etc/default/kube-apiserver/etc/kubernetes/manifests/kube-apiserver.yaml文件,这取决于你的 kube- apiserver 配置文件位于。

spec:
containers:
- command:
  - kube-apiserver
  - --cors-allowed-origins=["http://*"]

重启 kube-apiserver。

然后将注释添加到服务配置到dns.alpha.kubernetes.io/external: "http://localhost:8001/api/v1/"您的服务配置文件中并应用更改。

于 2019-08-22T06:24:40.580 回答
1

创建一个服务器端中间层,可以将您的请求代理到 api,而无需在 api 本身上使用 CORS。

例如,使用 nginx:

server {
  listen 80;
  add_header "Access-Control-Allow-Origin"  *;
  location / {
    proxy_pass https://my-api-that-needs-cors;
  }
}

注意只公开您需要公开的内容。

于 2019-08-21T15:38:19.983 回答
0

我知道可能为时已晚,对于遇到此问题的任何人并且如果您正在使用 Minikube,也许您可​​以尝试:minikube start --extra-config "apiserver.cors-allowed-origins=["http://\*"]". 欲了解更多信息,请在此处结帐。

于 2021-08-31T14:29:27.963 回答