我最近已经签署了Azure Kubernetes的免费计划。我的问题涉及在Azure Kubernetes服务(AKS)上使用基于入口主机的http应用程序路由配置CORS。我试图找到一个Azure Kubernetes服务(AKS)论坛。这是与我的问题最接近的论坛。
我已为群集启用http_application_routing附加组件。我最初遵循http应用程序路由中的文档。这成功为我的每个入口主机端点创建了DNS区域条目。但是,我希望在入口主机端点之间配置CORS访问。首先,我添加了以下注释,并将kubernetes.io/ingress.class注释设置为addon-http-application-routing。
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://www.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: "Authorization, Origin, X-Requested-With, Content-Type, Accept"
nginx.ingress.kubernetes.io/cors-allow-methods: "DELETE, GET, POST, PUT, OPTIONS, HEAD"
但是,我之后无法再访问入口端点,也没有创建DNS区域条目。随后,我将nginx入口控制器安装到集群上,并将kubernetes.io/ingress.class注释设置为nginx。然后,我将kubernetes DNS区域配置为具有Nginx入口端点的A和TXT记录(请参见下面的清单),以镜像http应用程序路由附加的行为。但是,这些仅持续了很短时间,然后被自动从Kubernetes群集DNS区域中删除。
任何人都可以将我引导到以下资源:
或
亲切问候
dcs3spp
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "https://www.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io"
nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: "Authorization, Origin, X-Requested-With, Content-Type, Accept"
nginx.ingress.kubernetes.io/cors-allow-methods: "DELETE, GET, POST, PUT, OPTIONS, HEAD"
spec:
rules:
- host: www.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
http:
paths:
- backend:
serviceName: angular-service
servicePort: 8080
path: /
- host: auth.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
http:
paths:
- backend:
serviceName: auth-server-service
servicePort: 4433
path: /
- host: api.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
http:
paths:
- backend:
serviceName: rest-api-service
servicePort: 4444
path: /
- host: notify.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
http:
paths:
- backend:
serviceName: file-upload-notification-service
servicePort: 4446
path: /
tls:
- secretName: ingress-tls
hosts:
- www.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
- auth.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
- api.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
- notify.f7e7bb4d71aa4ac3b098.westeurope.aksapp.io
通过进一步阅读,我了解到HTTP应用程序路由附加使用ExternalDNS + Nginx入口控制器。这可以解释为什么删除我添加到区域中以供我自己的Nginx入口控制器使用的任何记录。 ExternalDNS会从该区域未创建的区域中删除记录。
我已经成功遵循example的一项主机条目。
根据进一步的研究,当从入口规则yaml文件中删除CORS批注时,所有记录都添加到了DNS区域中。
我创建了一个gitlab项目,其中包含两个Yaml规则文件。一种带有CORS注释,另一种没有。
今天,我将Azure Kubernetes群集的位置从 westEurope 切换到了 uksouth ,该位置最近已可用。
第一次部署时,在13分钟后,DNS区域中未创建任何记录。删除入口规则部署,然后使用CORS批注重新应用后,将在DNS区域中创建所有主机的记录。也许,外部DNS 需要花费一些时间来配置CORS,并且 westEurope 位置相对于我在英国的位置而言较慢?不确定为什么在第一次部署13分钟后没有创建DNS区域条目.....将继续监视...