如何在启用 CORS 的情况下公开 Kubernetes API(Docker for Windows)
How to expose Kubernetes API with CORS enabled (Docker for Windows)
出于内部目的,我正在构建一个仪表板应用程序。
在此仪表板中,我需要显示有关 Kubernetes 的一些信息(运行 pods、集群等)。
我正在尝试从我的网络应用程序(从浏览器)调用我的 Kubernetes API。
API 的 Url 是 http://localhost:8001/api/v1/
我在获取数据时遇到错误(不允许使用 CORS 来源)。
我在互联网上搜索了几个小时试图找到解决方案,但没有任何效果。
我知道还有其他堆栈 post 提供了一些解决方案,但我不确定如何应用它。
对于前。 :
你们中有人知道如何在 Kubernetes 上允许 CORS 源 API(Docker 用于 windows)吗?
注意:我正在使用 kubectl proxy
创建一个服务器端中间层,它可以将您的请求代理到 api,而无需在 api 本身上使用 CORS。
以nginx为例:
server {
listen 80;
add_header "Access-Control-Allow-Origin" *;
location / {
proxy_pass https://my-api-that-needs-cors;
}
}
注意只公开你需要公开的内容。
您可以编辑 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/"
添加服务配置注释并应用更改。
我知道可能会晚了,对于遇到这个问题的任何人,如果您正在使用 Minikube,也许您可以尝试:minikube start --extra-config "apiserver.cors-allowed-origins=["http://\*"]"
。
欲了解更多信息,请查看 here.
出于内部目的,我正在构建一个仪表板应用程序。 在此仪表板中,我需要显示有关 Kubernetes 的一些信息(运行 pods、集群等)。
我正在尝试从我的网络应用程序(从浏览器)调用我的 Kubernetes API。
API 的 Url 是 http://localhost:8001/api/v1/
我在获取数据时遇到错误(不允许使用 CORS 来源)。
我在互联网上搜索了几个小时试图找到解决方案,但没有任何效果。
我知道还有其他堆栈 post 提供了一些解决方案,但我不确定如何应用它。
对于前。 :
你们中有人知道如何在 Kubernetes 上允许 CORS 源 API(Docker 用于 windows)吗?
注意:我正在使用 kubectl proxy
创建一个服务器端中间层,它可以将您的请求代理到 api,而无需在 api 本身上使用 CORS。
以nginx为例:
server {
listen 80;
add_header "Access-Control-Allow-Origin" *;
location / {
proxy_pass https://my-api-that-needs-cors;
}
}
注意只公开你需要公开的内容。
您可以编辑 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/"
添加服务配置注释并应用更改。
我知道可能会晚了,对于遇到这个问题的任何人,如果您正在使用 Minikube,也许您可以尝试:minikube start --extra-config "apiserver.cors-allowed-origins=["http://\*"]"
。
欲了解更多信息,请查看 here.