如何使用 Traefik 在 Kubernetes 中启用 CORS

How to enable CORS in Kubernetes with Traefik

我正在尝试在 kubernetes 运行 traefik 的入口上启用 CORS。因此,在响应 header 中,我可以添加 CORS 来源,以便现在允许每个主机使用。 我怎样才能做到这一点? 下面是 k8 ingress.yml 文件。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
  labels:
    app: test-cors-app
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: company.host
    http:
      paths:
      - path: /
        backend:
          serviceName: test-service
          servicePort: 80

更新 我有 traefik 1.7

添加 Ingress 注释 traefik.ingress.kubernetes.io/router.middlewares with headers middleware 配置。

您可以在您的入口中使用此注释:traefik.ingress.kubernetes.io/custom-response-headersingress.kubernetes.io/custom-response-headers 都可以与 traefik 一起使用。

将您的 ingress.yml 文件修改为:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: test
  labels:
    app: test-cors-app
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/custom-response-headers: "Access-Control-Allow-Origin:*||Access-Control-Allow-Methods:GET,POST,OPTIONS||Access-Control-Allow-Headers:DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range||Access-Control-Expose-Headers:Content-Length,Content-Range"
spec:
  rules:
  - host: company.host
    http:
      paths:
      - path: /
        backend:
          serviceName: test-service
          servicePort: 80

**相应地修改注解属性。它也适用于较低版本的 traefik。见 here