Citrix ADC ingress controller

Red Hat OpenShift オペレータを使用して Citrix Ingress Controller をデプロイする

Operator は、Kubernetes ネイティブアプリケーションをより効果的で自動化された、スケーラブルな方法でパッケージ化、デプロイ、管理するために設計されたオープンソースツールキットです。

このトピックでは、OpenShift Operator を使用して Citrix Ingress Controller をデプロイする方法について説明します。

展開オプション

Citrix ADC の使用方法に基づいて、OpenShift クラスターに Citrix Ingress Controller をデプロイするには、次の 2 つの方法があります。

  • Kubernetesクラスターのスタンドアロンポッドとして:このモードでは、クラスター外にデプロイされたCitrix ADC MPXまたはVPXアプライアンスを制御できます。
  • 同じポッド内のCitrix ADC CPXとともにサイドカーコンテナとして:このモードでは、Citrix Ingress Controller がCitrix ADC CPXを構成します。

Citrix ADC MPX または VPX アプライアンス用の OpenShift クラスターで、Citrix Ingress Controllerをスタンドアロンポッドとしてデプロイする

Citrix Ingress Controller Operator を使用すると、Citrix Ingress Controller を OpenShift クラスターにスタンドアロンポッドとしてデプロイできます。Citrix Ingress コントローラーは、OpenShift クラスターで実行されるアプリケーションのイングレスまたはルーターとしてデプロイされる Citrix ADC VPX または MPX を構成します。次の図にトポロジの説明を示します。

Topology

前提条件

  • Red Hat OpenShift バージョン 4.1 以降をデプロイした。
  • コントローラがアプライアンスと通信するために必要な NS_IP IP アドレスを確認します。Citrix ADC展開のタイプに応じて、IPアドレスは次のいずれかになります。
  • Ingressデバイスとして使用されるCitrix ADC VPXまたはMPXアプライアンスのユーザー名とパスワード。Citrix ADCアプライアンスには、Citrix Ingress Controller ADC VPXまたはMPXアプライアンスを構成できるように、特定の権限を持つシステムユーザーアカウント(デフォルト以外)が必要です。Citrix ADCでシステムユーザーアカウントを作成する手順については、Citrix ADCでのCitrix Ingress Controller システムユーザーアカウントの作成を参照してください

    ユーザー名とパスワードを環境変数としてコントローラーに直接渡すことも、Kubernetes シークレット (推奨) を使用することもできます。Kubernetes シークレットを使用する場合は、以下のコマンドを使用して、ユーザー名とパスワードのシークレットを作成します。

     kubectl create secret  generic nslogin --from-literal=username='cic' --from-literal=password='mypassword'
    

オペレーターと Pod がアクセスできるイメージレジストリーを指定する

イメージをプルするために Operator と Pod がアクセスできるイメージレジストリーを指定する必要があります。 image.config.openshift.io/cluster カスタムリソース定義ファイルを更新することで、許可されるレジストリーの一覧を指定できます。 image.config.openshift.io/cluster カスタムリソース定義を更新する前に、必ず Openshift クラスターを起動してください。

image.config.openshift.io/cluster カスタムリソース定義を更新するには、次の手順を実行します。

  1. 次のコマンドを実行します:

    oc edit image.config.openshift.io/cluster
    
  2. 以下のようにspecフィールドを編集します。

    spec:
      registrySources:
        allowedRegistries:
        - quay.io
        - registry.redhat.io
        - registry.connect.redhat.com
        - registry.access.redhat.com
        - image-registry.openshift-image-registry.svc:5000
    

注:

アプリケーションでここで指定したレジストリー以外のレジストリーからイメージをプルする必要がある場合は、そのレジストリーを追加できます。 注:

CRD の更新後、変更はすべてのマスターノードとワーカーノードに適用され、ノードはしばらくの間「Not Ready」状態になります。すべてのノードが「準備完了」状態になるのを待ってから、次のステップに進む必要があります。ノードのステータスは、 oc get nodes コマンドを使用して表示できます。

Citrix ADCでCitrix Ingress Controller システムユーザーアカウントを作成する

Citrix Ingress Controller は、Citrix ADCのシステムユーザーアカウントを使用してCitrix ADCアプライアンス(MPXまたはVPX)を構成します。Citrix Ingress ControllerがCitrix ADCで以下を構成する権限を持つように、システムユーザーアカウントには特定の権限が必要です。

  • CS(コンテンツスイッチング)仮想サーバの追加、削除、または表示
  • CS のポリシーとアクションの設定
  • 負荷分散 (LB) 仮想サーバーの構成
  • サービスグループの設定
  • SSL 証明書キーの構成
  • ルートの設定
  • ユーザーモニターの構成
  • システムファイルの追加 (Kubernetes から SSL 証明書キーをアップロードするため)
  • 仮想 IP アドレス (VIP) を構成する
  • Citrix ADCアプライアンスのステータスを確認する

システムユーザーアカウントを作成するには、次の手順に従います。

  1. Citrix ADCアプライアンスにログオンします。以下の手順に従います。
    1. PuTTY などのSSHクライアントを使用して、Citrix ADCアプライアンスへのSSH接続を開きます。

    2. 管理者の資格情報を使用して、アプライアンスにログオンします。

  2. 次のコマンドを使用して、system ユーザーアカウントを作成します。

    add system user <username> <password>
    

    たとえば、次のようになります。

    add system user cic mypassword
    
  3. システムユーザーアカウントに必要なアクセス権限を付与するポリシーを作成します。次のコマンドを使用します:

    add cmdpolicy cic-policy ALLOW '^(\?!shell)(\?!sftp)(\?!scp)(\?!batch)(\?!source)(\?!.*superuser)(\?!.*nsroot)(\?!install)(\?!show\s+system\s+(user|cmdPolicy|file))(\?!(set|add|rm|create|export|kill)\s+system)(\?!(unbind|bind)\s+system\s+(user|group))(\?!diff\s+ns\s+config)(\?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)^(\?!shell)(\?!sftp)(\?!scp)(\?!batch)(\?!source)(\?!.*superuser)(\?!.*nsroot)(\?!install)(\?!show\s+system\s+(user|cmdPolicy|file))(\?!(set|add|rm|create|export|kill)\s+system)(\?!(unbind|bind)\s+system\s+(user|group))(\?!diff\s+ns\s+config)(\?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)'
    

    :システムユーザアカウントには、定義したコマンドポリシーに基づく権限が付与されます。

    手順 3 で説明したコマンドポリシーは、ファイルをアップロードする別の権限を持つ組み込みsysAdminコマンドポリシーと似ています。

    提供されているコマンドポリシー仕様では、Citrix ADC コマンドラインに簡単にコピーアンドペーストできるように、エスケープする必要のある特殊文字はすでに省略されています。

    Citrix ADC構成ウィザード(GUI)からコマンドポリシーを構成するには、次のコマンドポリシー仕様を使用します。

    ^(?!shell)(?!sftp)(?!scp)(?!batch)(?!source)(?!.*superuser)(?!.*nsroot)(?!install)(?!show\s+system\s+(user|cmdPolicy|file))(?!(set|add|rm|create|export|kill)\s+system)(?!(unbind|bind)\s+system\s+(user|group))(?!diff\s+ns\s+config)(?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)^(?!shell)(?!sftp)(?!scp)(?!batch)(?!source)(?!.*superuser)(?!.*nsroot)(?!install)(?!show\s+system\s+(user|cmdPolicy|file))(?!(set|add|rm|create|export|kill)\s+system)(?!(unbind|bind)\s+system\s+(user|group))(?!diff\s+ns\s+config)(?!(set|unset|add|rm|bind|unbind|switch)\s+ns\s+partition).*|(^install\s*(wi|wf))|(^\S+\s+system\s+file)
    
  4. 以下のコマンドを使用して、ポリシーをシステムユーザーアカウントにバインドします。

    bind system user cic cic-policy 0
    

Operator を使用して Citrix Ingress Controller をスタンドアロンポッドとして展開する

以下の手順に従います。

  1. OpenShift 4.1 クラスターコンソールにログオンします。

  2. コンソールを使用して Apache アプリケーションをデプロイします。以下の手順に従います。

    1. [ ワークロード] > [デプロイ] > [デプロイメントの作成 ] に移動し、 apache.yaml を使用してデプロイを作成します。

      アプリケーションデプロイ

      注:

      Apache アプリケーションはデモンストレーションのみを目的としており、要件に基づいて YAML ファイルを変更できます。

    2. [ ワークロード] > [ポッド ] セクションに移動し、Apache アプリケーション Pod が稼働していることを確認します。

      アプリケーションポッド

  3. Apache アプリケーション用のサービスを作成します。[ ネットワーク] > [サービス] > [サービスの作成 ] に移動し、 apache-service.yaml を使用してサービスを作成します。

    アプリケーションサービス

  4. Apache アプリケーションの Ingress を作成します。[ ネットワーク] > [イングレス] > [イングレスの作成 ] に移動し、 apache-ingress-vpx.yaml を使用してイングレスを作成します。クラスターに適用する前に、入力YAMLでCitrix ADC VPX VIPを必ず更新してください。

    アプリケーション・イングレス

  5. カタログ]>[OperatorHub]に移動し、[ Citrix Ingress Controller オペレーター]を選択して[ インストール]をクリックします。

    Citrix Ingress Controller オペレーター

    Install

    Citrix Ingress Controller Operatorにサブスクライブするには、次のオプションがあります。

    • クラスター上のすべての名前空間(デフォルト) -Citrix Ingress Controller Operator が OpenShift クラスターに存在するすべての名前空間にサブスクライブできるようにします。これにより、クラスター上の任意の名前空間から Citrix Ingress Controller を起動できます。
    • クラスター上の特定の名前空間 -Citrix Ingress Controller オペレーターが OpenShift クラスター上の選択した名前空間にサブスクライブできるようにします。Citrix Ingress Controller インスタンスは、選択した名前空間でのみ開始できます。

    デモンストレーションの目的で、Citrix Ingress Controller オペレーターをデフォルトの名前空間にサブスクライブできます。

    アプリケーションサブスクリプション

    Citrix Ingress Controller オペレータが正常にサブスクライブされるまで待ちます。

    アプリケーションサブスクリプションの確認

  6. [ ワークロード] > [ポッド ] セクションに移動し、 cic-operator ポッドが稼働していることを確認します。

    アプリケーションポッドが起動して実行中

  7. カタログ]>[インストールされたオペレーター ]に移動し、Citrix Ingress Controller オペレーターを選択します。

    アプリケーション POD および CIC

  8. [Citrix Ingress Controller]をクリックし、[ 概要 ]タブで、[Citrix Ingress Controller]オペレータ用のCRDを作成するオプションで[ 新規作成 ]を選択します。

    新規作成

    Citrix Ingress Controller の YAML 定義が表示されます。

    パラメータリスト

    次の表に、インストール時に設定できる必須パラメータとオプションパラメータ、およびそれらのデフォルト値を示します。license.acceptパラメーターをyes に設定し、nsIPパラメーターにCitrix ADC VPXインスタンスのIPアドレスを指定していることを確認します。

    パラメーター 必須または任意 デフォルト値 説明
    license.accept 固定 いいえ Citrix Ingress Controllerのエンドユーザー使用許諾契約に同意するようにyesを設定します。
    cic.image 固定 quay.io/citrix/citrix-k8s-ingress-controller:1.26.7 Citrix Ingress Controller メージ。
    cic.pullPolicy 固定 いつも Citrix Ingress Controller イメージプルポリシー。
    loginFileName 固定 nslogin Citrix ADC VPXまたはMPXにログオンするためのシークレットキー。シークレットキーの作成方法については、「 前提条件」を参照してください。
    nsIP 固定 - Citrix ADC デバイスのIPアドレス。詳しくは、「前提条件」を参照してください。
    nsVIP オプション - Citrix ADCデバイス上の仮想IPアドレス。
    nsPort オプション 443 Citrix ADCと通信するためにCitrixIngress Controllerが使用するポート。HTTP の場合は 80 をポートできます。
    nsProtocol オプション HTTPS Citrix ADCと通信するためにCitrixIngress Controllerが使用するプロトコル。HTTP はポート 80 でも使用できます。
    logLevel オプション デバッグ Citrix Ingress Controllerによって生成されるログを制御するログレベル。サポートされるログレベルは、クリティカル、エラー、警告、情報、デバッグです。詳細については、「 ログレベル」を参照してください。
    KubernetesURL オプション - Citrix Ingress Controller がイベントの登録に使用する kube-apiserver URL。値が指定されていない場合、Citrix Ingress Controller は内部 kube-apiserver IP アドレスを使用します
    IngressClass オプション - 複数のイングレスロードバランサーを使用して、異なるイングレスリソースのロードバランシングを行う場合。このパラメーターを使用して、Citrix Ingress Controller を指定して、特定のイングレスクラスに関連付けられたCitrix ADCを構成できます。Ingress クラスの詳細については、 Ingress クラスのサポートを参照してください
    nodeWatch オプション false Ingress Citrix ADC VPX または MPX から Kubernetes クラスター内のポッドへのネットワークルートを自動的に構成する場合は、引数を使用します。詳しくは、「 Citrix ADC インスタンスでルートを自動的に構成する」を参照してください。
    defaultsSLCert オプション - Citrix ADCで非SNI証明書として使用する必要があるデフォルトのSSL証明書。
    exporter.required オプション false Citrix ADC 統計情報のエクスポーターをCitrixIngress Controllerとともに実行して 、Citrix ADC VPXまたはMPXのメトリックを取得する場合は、引数を使用します。
    exporter.image オプション quay.io/citrix/citrix-adc-metrics-exporter:1.4.6 Citrix ADC統計情報のエクスポーターのイメージ。
    exporter.pullPolicy オプション いつも Citrix ADC 統計情報のエクスポーターイメージのプルポリシー。
    exporter.ports.containerPort オプション 8888 Citrix ADC 統計情報のエクスポーターのコンテナポート。
    openshift オプション true OpenShift 環境が使用されている場合は、この引数を設定します。

    必要なパラメーターの値を更新したら、[ Create] をクリックします。

  9. [ ワークロード] > [ポッド ] セクションに移動し、 citrix-ingress-controller ポッドが稼働していることを確認します。

    Citrix Ingress Controller 展開の成功

  10. 次に示すようにトラフィックを送信して、展開を確認します。

    curl http://citrix-ingress-operator.com --resolve citrix-ingress-operator.com:80:<VIP>
            
        It works!
    

Citrix ADC CPXでCitrixIngress Controllerをサイドカーとして展開する

Citrix Ingress Controller Operatorを使用すると、CitrixIngress ControllerをサイドカーとしてCitrix ADC CPXを展開できます。Citrix Ingress コントローラーは、OpenShift クラスターで実行されるアプリケーションの Ingress またはルーターとしてデプロイされる Citrix ADC CPX を構成します。次の図は、このトポロジについて説明しています。

CPX トポロジ

前提条件

オペレーターを使用してCitrix ADC CPXでCitrixIngress Controllerをサイドカーとして展開する

以下の手順に従います。

  1. OpenShift 4.1 クラスターコンソールにログオンします。

  2. コンソールを使用して Apache アプリケーションをデプロイします。以下の手順に従います。

    1. [ ワークロード] > [デプロイ] > [デプロイメントの作成 ] に移動し、 apache.yaml を使用してデプロイを作成します。

      アプリケーションデプロイ

      注:

      Apache アプリケーションはデモンストレーションのみを目的としており、要件に基づいて YAML ファイルを変更できます。

    2. [ ワークロード] > [ポッド ] セクションに移動し、Apache アプリケーション Pod が稼働していることを確認します。

      アプリケーションポッド

  3. Apache アプリケーション用のサービスを作成します。[ ネットワーク] > [サービス] > [サービスの作成 ] に移動し、 apache-service.yaml を使用してサービスを作成します。

    アプリケーションサービス

  4. Apache アプリケーション用の Ingress を作成します。[ ネットワーク] > [イングレス] > [イングレスの作成 ] に移動し、 apache-ingress-cpx.yaml を使用してイングレスを作成します。

    アプリケーション CPX イングレス

  5. [ カタログ] > [OperatorHub] に移動し、 Ingress Controller 付きCitrix ADC CPXオペレーターを選択して 、[ インストール] をクリックします。

    オペレーターハブ

    オペレータハブのインストール

    Citrix Ingress Controller Operatorにサブスクライブするには、次のオプションがあります。

    • クラスター上のすべての名前空間(デフォルト) -Citrix Ingress Controller OperatorがOpenShiftクラスターに存在するすべての名前空間にサブスクライブできるようにするため、クラスター上の任意の名前空間からCitrix ADC CPXを開始できます。
    • クラスター上の特定の名前空間 -Citrix Ingress Controller オペレーターが OpenShift クラスター上の選択した名前空間にサブスクライブできるようにします。Citrix ADC CPX インスタンスは、選択した名前空間でのみ開始できます。

    デモンストレーションの目的で、Citrix Ingress Controller オペレーターをデフォルトの名前空間にサブスクライブできます。

    Subscription

    オペレータが正常にサブスクライブされるまで待ちます。

    Subscription

  6. [ ワークロード] > [ポッド ] セクションに移動し、 cic-operator ポッドが稼働していることを確認します。

  7. カタログ]>[インストールされたオペレーター ]に移動し、Citrix Ingress Controller オペレーターを選択します。

    アプリケーション POD および CIC

  8. Ingressコントローラー付きCitrix ADC CPX をクリックし、[ 概要 ]タブで、[Ingress Controller]オペレーターを使用してCitrix ADC CPXのCRDを作成するオプションで[ 新規作成 ]を選択します。

    新規作成

    入力コントローラーのYAML定義を使用したCitrix ADC CPXが表示されます。

    パラメータリスト

    次の表に、インストール時に設定できる必須パラメータとオプションパラメータ、およびそれらのデフォルト値を示します。license.acceptパラメータをyesに設定していることを確認します 。

    パラメーター 必須または任意 デフォルト値 説明
    license.accept 固定 いいえ Citrix Ingress Controllerのエンドユーザー使用許諾契約に同意するようにyesを設定します。
    cpx.image 固定 quay.io/citrix/citrix-k8s-cpx-ingress:13.0-83.27 Citrix ADC CPX イメージ。
    cpx.pullPolicy 固定 いつも Citrix ADC CPX イメージのプルポリシー。
    lsIP オプション - Citrix ADC CPXのライセンスを取得するには、Citrix Application Delivery Management(ADM)IPアドレスを指定します。詳細については、「 ライセンス」を参照してください。
    lsPort オプション 27000 デフォルト以外のポートが使用されている場合は、Citrix ADM ポート。
    platform オプション - プラットフォームライセンス。プラットフォームは CP1000です。
    cic.image 固定 quay.io/citrix/citrix-k8s-ingress-controller:1.21.9 Citrix Ingress Controller メージ。
    cic.pullPolicy 固定 いつも Citrix Ingress Controller イメージプルポリシー。
    cic.required オプション true Citrix ADC CPXでCitrixIngress Controllerをサイドカーとして実行するには、このパラメーターを指定します。
    defaultsSLCert オプション - Citrix ADCで非SNI証明書として使用する必要があるデフォルトのSSL証明書。
    exporter.required オプション false Citrix ADC 統計情報のエクスポーターをCitrix Ingress Controllerとともに実行して、Citrix ADC CPX のメトリックを取得する場合は、引数を使用します。
    exporter.image オプション quay.io/citrix/citrix-adc-metrics-exporter:1.4.6 Citrix ADC 統計情報のエクスポーターの画像。
    exporter.pullPolicy オプション いつも Citrix ADC 統計情報のエクスポーターのイメージプルポリシー
    exporter.ports.containerPort オプション 8888 Citrix ADC 統計情報のエクスポーターのコンテナポート。
    IngressClass オプション - 複数のイングレスロードバランサーを使用して、異なるイングレスリソースのロードバランシングを行う場合。このパラメーターを使用して、Citrix Ingress Controller を指定して、特定のイングレスクラスに関連付けられたCitrix ADCを構成できます。
    openshift オプション true OpenShift 環境が使用されている場合は、この引数を設定します。

    必要なパラメーターの値を更新したら、[ Create] をクリックします。

  9. [ ワークロード] > [ポッド ] セクションに移動し、 cpx-ingress ポッドが稼働していることを確認します。

    Citrix Ingress Controller 展開の成功

  10. トラフィックを送信して展開を検証します。以下の手順に従います。

    1. 以下のコマンドを使用して NodePort の詳細を取得します。

      oc get svc

    2. cpx-service NodePort を使用して、次のコマンドに示すようにトラフィックを送信します。

      curl <http://citrix-ingress-operator.com>:<NodePort> --resolve citrix-ingress-operator.com:<NodePort>:<Master-Node-IP>
      <html><body><h1>It works!</h1></body></html>
      
Red Hat OpenShift オペレータを使用して Citrix Ingress Controller をデプロイする