Citrix ADC Ingress Controller

Konfigurieren von Richtlinien für die ursprungsübergreifende Ressourcenfreigabe mit Citrix Ingress Controller

Citrix stellt eine Custom Resource Definition (CRD) bereit, die als CORS-CRD für Kubernetes bezeichnet wird. Sie können das CORS-CRD verwenden, um die Richtlinien für die ursprungsübergreifende Ressourcenfreigabe (CORS) mit dem Citrix Ingress Controller auf dem Citrix ADC zu konfigurieren.

Was ist CORS

Die ursprungsübergreifende Ressourcenfreigabe ist ein Mechanismus, mit dem der Browser bestimmen kann, ob eine bestimmte Webanwendung Ressourcen mit einer anderen Webanwendung aus einem anderen Ursprung gemeinsam nutzen kann. Es ermöglicht Benutzern, Ressourcen (z. B. Bilder, Schriftarten und Videos) von Domänen außerhalb der ursprünglichen Domäne anzufordern.

CORS vor dem Flug

Bevor ein Webbrowser es Javascript erlaubt, einen POST an eine URL auszustellen, führt er eine pre-flight Anforderung aus. Eine Pre-Flight-Anfrage ist eine einfache Anfrage an den Server mit derselben URL, die die Methode OPTIONS anstelle von POST verwendet. Der Webbrowser überprüft die HTTP-Header auf CORS-bezogene Header, um festzustellen, ob der POST-Vorgang im Namen des Benutzers zulässig ist.

CORS-Anfrage

CORS-CRD-Definition

Die CORS-CRD ist im GitHub-Repo des Citrix Ingress Controller verfügbar unter: cors-crd.yaml. Das CORS-CRD bietet Attribute für die verschiedenen Optionen, die erforderlich sind, um die CORS-Richtlinie auf dem Ingress Citrix ADC zu definieren, der als API-Gateway fungiert. Zu den erforderlichen Attributen gehören: servicenamesallow_origin, allow_methods, und allow_headers.

Im Folgenden sind die in der CORS-CRD bereitgestellten Attribute aufgeführt:

Attribut Beschreibung
servicenames Gibt die Liste der Kubernetes-Dienste an, auf die Sie die CORS-Richtlinien anwenden möchten.
allow_origin Gibt die Liste der zulässigen Ursprünge an. Der eingehende Ursprung wird mit dieser Liste abgeglichen.
allow_methods Gibt die Liste der zulässigen Methoden als Teil des CORS-Protokolls an.
allow_headers Gibt die Liste der zulässigen Header als Teil des CORS-Protokolls an.
max_age Gibt an, wie viele Sekunden die von den Access-Control-Allow-Headers Headern Access-Control-Allow-Methods und bereitgestellten Informationen zwischengespeichert werden können. Der Standardwert ist 86400.
allow_credentials Gibt an, ob die Antwort freigegeben werden kann, wenn der Anmeldedatenmodus der Anforderung “einschließen” ist. Der Standardwert ist “true”.

Stellen Sie die CORS-CRD bereit

Führen Sie Folgendes aus, um die CORS-CRD bereitzustellen:

  1. Laden Sie die CORS-CRDherunter.

  2. Stellen Sie das CORS-CRD mit dem folgenden Befehl bereit:

    kubectl create -f cors-crd.yaml
    

    Beispiel:

    $ kubectl create -f cors-crd.yaml
    customresourcedefinition.apiextensions.k8s.io/corspolicies.citrix.com created
    $ kubectl get crd
    NAME                         CREATED AT
    corspolicies.citrix.com      2021-05-21T20:01:13Z
    

So schreiben Sie eine CORS-Richtlinienkonfiguration

Nachdem Sie das von Citrix bereitgestellte CORS-CRD im Kubernetes-Cluster bereitgestellt haben, können Sie die CORS-Richtlinienkonfiguration in einer .yaml Datei definieren. Verwenden Sie in der .yaml Datei corspolicy im Feld “Art” und fügen Sie im spec Abschnitt die CORS-CRD-Attribute basierend auf Ihrer Anforderung für die Richtlinienkonfiguration hinzu.

Die folgende YAML-Datei wendet die konfigurierte Richtlinie auf die im Feld servicenames aufgeführten Dienste an. Citrix ADC antwortet mit einem 200-OK-Antwortcode für die Preflight-Anforderung, wenn der Ursprung einer der allow_origins [“random1234.com”, “hotdrink.beverages.com”] ist. Die Antwort umfasst konfiguriert allow_methodsallow_headers, und max_age.

apiVersion: citrix.com/v1beta1
kind: corspolicy
metadata:
  name: corspolicy-example
spec:
  servicenames:
   - "cors-service"
  allow_origin:
   - "random1234.com"
   - "hotdrink.beverages.com"
  allow_methods:
   - "POST"
   - "GET"
   - "OPTIONS"
  allow_headers:
   - "Origin"
   - "X-Requested-With"
   - "Content-Type"
   - "Accept"
   - "X-PINGOTHER"
  max_age: 86400
  allow_credentials: true
<!--NeedCopy-->

Nachdem Sie die Richtlinienkonfiguration definiert haben, stellen Sie die .yaml Datei mit den folgenden Befehlen bereit:

user@master:~/cors$ kubectl create -f corspolicy-example.yaml
corspolicy.citrix.com/corspolicy-example created

Der Citrix Ingress Controller wendet die Richtlinienkonfiguration auf dem Ingress Citrix ADC-Gerät an.

Konfigurieren von Richtlinien für die ursprungsübergreifende Ressourcenfreigabe mit Citrix Ingress Controller