NetScaler Ingress Controller を使用してクロスオリジンリソース共有ポリシーを構成する

最終公開日 : Oct 02, 2026
NetScaler は、Kubernetes 用の CORS CRD と呼ばれるカスタムリソース定義 (CRD) を提供します。CORS CRD を使用して、NetScaler 上の NetScaler Ingress Controller でクロスオリジンリソース共有 (CORS) ポリシーを構成できます。

CORS とは

クロスオリジンリソース共有は、特定の Web アプリケーションが異なるオリジンからの別の Web アプリケーションとリソースを共有できるかどうかをブラウザが判断できるようにするメカニズムです。これにより、ユーザーは元のドメイン外のドメインからリソース (画像、フォント、ビデオなど) を要求できます。

CORS プリフライト

Web ブラウザが Javascript に URL への POST を発行させる前に、pre-flight リクエストを実行します。プリフライトリクエストは、POST ではなく OPTIONS メソッドを使用して、同じ URL でサーバーへの単純なリクエストです。Web ブラウザは、CORS 関連ヘッダーの HTTP ヘッダーをチェックして、ユーザーに代わって POST 操作が許可されているかどうかを判断します。
CORS リクエスト

CORS CRD の定義

CORS CRD は、NetScaler Ingress Controller GitHub リポジトリの cors-crd.yaml で入手できます。CORS CRD は、API ゲートウェイとして機能する Ingress NetScaler 上で CORS ポリシーを定義するために必要なさまざまなオプションの属性を提供します。必要な属性には、servicenames、allow_origin、allow_methods、および allow_headers が含まれます。
CORS CRD で提供される属性は次のとおりです。
属性 説明
ingressclass 指定されたイングレスクラスに関連付けられたイングレスコントローラーのみがリソースを処理するように、イングレスクラスを指定します。そうでない場合、クラスター内のすべてのコントローラーがこのリソースを処理します。
servicenames CORSポリシーを適用したいKubernetesサービスのリストを指定します。
allow_origin 許可されたオリジンのリストを指定します。受信オリジンはこのリストに対してスクリーニングされます。
allow_methods CORSプロトコルの一部として許可されるメソッドのリストを指定します。
allow_headers CORSプロトコルの一部として許可されるヘッダーのリストを指定します。
max_age Access-Control-Allow-MethodsおよびAccess-Control-Allow-Headersヘッダーによって提供される情報をキャッシュできる秒数を指定します。デフォルト値は86400です。
allow_credentials リクエストの資格情報モードが「include」の場合にレスポンスを共有できるかどうかを指定します。デフォルト値は「true」です。

CORS CRDを展開する

CORS CRDを展開するには、以下を実行します。
  1. CORS CRDをダウンロードします。
  2. 次のコマンドを使用してCORS CRDを展開します。
    kubectl create -f cors-crd.yaml
    例:
    $ 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

CORSポリシー設定の記述方法

NetScalerが提供するCORS CRDをKubernetesクラスターにデプロイした後、.yamlファイルでCORSポリシー設定を定義できます。.yamlファイルでは、kindフィールドにcorspolicyを使用し、specセクションでポリシー設定の要件に基づいてCORS CRD属性を追加します。
次のYAMLファイルは、servicenamesフィールドにリストされているサービスに設定されたポリシーを適用します。オリジンがallow_origins のいずれかである場合、NetScalerはプリフライトリクエストに対して200 OK応答コードで応答します。応答には、設定されたallow_methods、allow_headers、および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
ポリシー設定を定義した後、次のコマンドを使用して.yamlファイルをデプロイします。
user@master:~/cors$ kubectl create -f corspolicy-example.yaml
corspolicy.citrix.com/corspolicy-example created
NetScaler Ingress Controllerは、Ingress NetScalerデバイスにポリシー設定を適用します。