2

我最近注册了 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 区域中删除了。

谁能指导我获取以下资源:

  1. 使用入口类 addon-http-application-routing 时为入口控制器配置 CORS

或者

  1. 为每个 nginx 入口主机端点正确配置 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

编辑 1:更多信息

通过进一步阅读,我了解到 HTTP 应用程序路由附加使用 ExternalDNS + Nginx 入口控制器。这可以解释为什么我添加到区域中用于我自己的 Nginx 入口控制器的任何记录都被删除了。ExternalDNS 从区域中删除不是由它创建的记录。

我已经成功地遵循了一个主机条目的示例

经过进一步研究,当从入口规则 yaml 文件中删除 CORS 注释时,所有记录都被添加到 DNS 区域。

我创建了一个gitlab项目,其中包含两个 yaml 规则文件。一个带有 CORS 注释,一个没有。

今天,我将 Azure Kubernetes 集群位置从westEurope 切换到了uksouth,它最近才可用。

第一次部署时,13 分钟后,DNS 区域中没有创建任何记录。删除入口规则部署,然后使用 CORS 注释重新应用后,所有主机的记录都在 DNS 区域中创建。也许, ExternalDNS配置 CORS需要时间,而与我在英国的位置相比, westEurope的位置要慢一些?不知道为什么在第一次部署后 13 分钟后没有创建 DNS 区域条目......将继续监控......

4

0 回答 0