Citrix ADM でKubernetes入力構成を管理する
Kubernetes (K8s) は、クラウドネイティブアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのコンテナオーケストレーションプラットフォームです。
Kubernetes は、クラスター外のクライアントトラフィックが Kubernetes クラスター内で実行されているアプリケーションのマイクロサービスにアクセスできるようにする Ingress 機能を提供します。ADC インスタンスは、Kubernetes クラスター内で実行されているアプリケーションの Ingress として機能します。ADC インスタンスは、クライアントから Kubernetes クラスター内の任意のマイクロサービスに North-South トラフィックをロードバランシングし、コンテンツルーティングできます。
注
- Citrix ADM は、Kubernetes バージョン 1.14 ~ 1.21 のクラスターでイングレス機能をサポートしています。
- Citrix ADM は、入力デバイスとしてCitrix ADC VPX およびMPXアプライアンスをサポートしています。
- Kubernetes環境では、Citrix ADCインスタンスは「nodePort」サービスタイプのみを負荷分散します。
複数の ADC インスタンスを、同じクラスタまたは異なるクラスタまたは名前空間上で入力デバイスとして動作するように設定できます。インスタンスを構成したら、Ingress ポリシーに基づいて各インスタンスを異なるアプリケーションに割り当てることができます。
Kubernetes kubectl
または API を使用して Ingress 設定を作成してデプロイできます。Citrix ADM から Ingress を構成して展開することもできます。
ADM では、Kubernetes 統合の次の側面を指定できます。
-
クラスター — ADM が Ingress 設定をデプロイできる Kubernetes クラスターを登録または登録解除できます。Citrix ADM にクラスターを登録するときは、Kubernetes API サーバー情報を指定します。次に、Kubernetes クラスターにアクセスして Ingress 設定をデプロイできる ADM エージェントを選択します。
-
Policies — Ingress ポリシーは、Ingress 設定をデプロイするクラスターまたは名前空間に基づいて ADC インスタンスを選択するために使用されます。ポリシーを追加するときに、クラスタ、サイト、およびインスタンスの情報を指定します。
-
入力設定:この設定 は Kubernetes 入力設定です。この設定には、コンテンツスイッチングルールと、マイクロサービスとそのポートの対応する URL パスが含まれます。Kubernetes シークレットリソースを使用して SSL/TLS 証明書を指定することもできます (ADC インスタンスの SSL 処理をオフロードするため)。
Citrix ADM は、入力ポリシーを使用して、入力構成をADCインスタンスに自動的にマッピングします。
Ingress構成が成功するたびに、Citrix ADMはStyleBook ConfigPackを生成します。ConfigPack は、入力設定に対応する ADC インスタンスに適用される ADC 設定を表します。ConfigPack を表示するには、[ アプリケーション] > [StyleBook] > [構成] に移動します。
はじめに
Citrix ADC インスタンスを Kubernetes クラスターで Ingress デバイスとして使用するには、次のものがあることを確認します。
-
Kubernetesクラスターが存在する。
-
Citrix ADM に登録された Kubernetes クラスター。
秘密トークンを使用してCitrix ADM を構成し、Kubernetesクラスタを管理する
Citrix ADM がKubernetesからイベントを受信できるようにするには、KubernetesでCitrix ADM 用のサービスアカウントを作成する必要があります。また、クラスタで必要な RBAC アクセス許可を使用してサービスアカウントを構成します。
-
Citrix ADM サービスアカウントを作成します。たとえば、サービスアカウント名は
citrixadm-sa
になります。サービスアカウントを作成するには、「 複数のサービスアカウントを使用する」を参照してください。 -
cluster-admin
ロールを使用して、Citrix ADM サービスアカウントをバインドします。このバインドにより、クラスタ全体にわたってClusterRole
がサービスアカウントに付与されます。cluster-admin
ロールをサービスアカウントにバインドするコマンドの例を次に示します。kubectl create clusterrolebinding citrixadm-sa-admin --clusterrole=cluster-admin --serviceaccount=default:citrixadm-sa <!--NeedCopy-->
Citrix ADM サービスアカウントを
cluster-admin
ロールにバインドすると、そのサービスアカウントはクラスター全体にアクセスできるようになります。詳細については、[kubectl
createclusterrolebinding
] (https://kubernetes.io/docs/reference/access-authn-authz/rbac/#kubectl-create-clusterrolebinding) を参照してください。 -
作成したサービスアカウントからトークンを取得します。
たとえば、以下のコマンドを実行して、
citrixadm-sa
サービスアカウントのトークンを表示します。kubectl describe sa citrixadm-sa <!--NeedCopy-->
-
次のコマンドを実行して、トークンのシークレット文字列を取得します。
kubectl describe secret <token-name> <!--NeedCopy-->
Citrix ADM に Kubernetes クラスタを追加する
Citrix ADM エージェントを構成して静的ルートを構成したら、Kubernetes クラスターを Citrix ADM に登録する必要があります。
Kubernetes クラスターを登録するには、次の手順を実行します。
-
管理者の資格情報を使用してCitrix ADM にログオンします。
-
オーケストレーション > Kubernetes > クラスタに移動します。 [クラスタ] ページが表示されます。
-
[追加] をクリックします。
-
[クラスタの追加 ] ページで、次のパラメータを指定します。
-
API サーバー URL -Kubernetes メインノードから API サーバーの URL の詳細を取得できます。
-
Kubernetes メインノードで、
kubectl cluster-info
コマンドを実行します。 -
「Kubernetes マスターが実行中です。」と表示される URL を入力します。
-
-
認証トークン - Kubernetesクラスターを管理するようにCitrix ADMを構成するときに取得した認証トークン文字列を指定します。認証トークンは、KubernetesクラスターとCitrix ADM間の通信へのアクセスを検証するために必要です。認証トークンを生成する手順は、次のとおりです。
-
Kubernetes メインノードで、次のコマンドを実行します。
kubectl describe secret <token-name> <!--NeedCopy-->
-
生成されたトークンをコピーし、認証トークンとして貼り付けます。
詳細については、 Kubernetes ドキュメントを参照してください。
-
-
リストからエージェントを選択します。
-
[Create] をクリックします。
入力ポリシーの定義
Ingressポリシーは、Ingressクラスターまたは名前空間に基づいて、Ingress構成の展開に使用されるCitrix ADCを決定します。
-
[ オーケストレーション] > [Kubernetes] > [ポリシー]に移動します。
-
[ Add ] をクリックしてポリシーを作成します。
-
ポリシー名を指定します。
-
Kubernetes クラスターに Ingress 設定をデプロイするための条件を定義します 。これらの条件は通常、Ingress クラスターと名前空間に基づいています。
-
[インフラストラクチャ] パネルで、
-
サイト -リストからサイトを選択します。
-
[インスタンス ]-リストから ADC インスタンスを選択します。
[ サイト ] リストと [ インスタンス ] リストには、[ 条件 ] パネルで選択したクラスタに基づいてオプションが入力されます。
これらのリストには、Kubernetesクラスタで構成されたCitrix ADMエージェントに関連付けられているサイトまたはインスタンスが表示されます。
-
-
[ Choose Network] で、ADM が仮想 IP アドレスを入力構成に自動的に割り当てるネットワークを選択します。
このリストには、[ インフラストラクチャー] > [IP アドレス管理] で作成されたネットワークが表示されます
-
[Create] をクリックします。
-
Ingress 設定をデプロイする
kubectl
、Kubernetes API または他のツールを使用して 、Kubernetes から Ingress 設定をデプロイできます。Ingress構成をCitrix ADMから直接展開することもできます。
-
オーケストレーション > Kubernetes > イングレスに移動します。
-
[追加] をクリックします。
-
「 Create Ingress 」フィールドで、次の詳細を指定します。
-
Ingress の名前を指定します。
-
[ クラスター] で、Ingress をデプロイする Kubernetes クラスターを選択します。
-
リストから [ クラスタ名前空間 ] を選択します。このフィールドには、指定した Kubernetes クラスターに存在する名前空間が一覧表示されます。
-
必要に応じて、[ フロントエンド IP アドレスの自動割り当て] を選択します。
-
リストから [ 入力プロトコル ] を選択します。 HTTPSを選択した場合は、 TLS シークレットを指定します。
このシークレットには、HTTPS 証明書とプライベートキーを埋め込む Kubernetes シークレットリソースが埋め込まれます。
HTTPS Ingress には、Kubernetes クラスターに設定された TLS ベースのシークレットが必要です。
tls.crt
およびtls.key
フィールドを指定して、サーバ証明書と証明書キーをそれぞれ含めます。 -
コンテンツルーティングでは、次の詳細を指定します。
-
URL パス -Kubernetes サービスとポートに関連付けられているパスを指定します。
-
Kubernetes サービス -目的のサービスを指定します。
-
[ポート ]-サービスポートを指定します。
-
LB メソッド -選択した Kubernetes サービスに優先する負荷分散方法を選択します。
選択したメソッドは、Ingress 仕様を適切なアノテーションで更新します。たとえば、 ROUNDROBIN メソッドを選択すると、Citrix アノテーションは次のように表示されます。
"lbmethod":"ROUNDROBIN" <!--NeedCopy-->
-
パーシステンスタイプ -選択した Kubernetes サービスに優先する負荷分散パーシステンスタイプを選択します。
選択した永続性タイプは、Ingress 仕様を適切な注釈で更新します。たとえば、 COOKIEINSERTを選択すると、Citrix 注釈は次のように表示されます。
"persistenceType":"COOKIEINSERT" <!--NeedCopy-->
[ Add ] をクリックして、Ingress 設定に URL パスとポートを追加します。
デプロイ後、Ingress 設定は以下に基づいてクライアントトラフィックを特定のサービスにリダイレクトします。
- 要求された URL パスとポート。
- 定義された LB メソッドと永続性タイプ。
(注)
イングレス構成で使用される Kubernetes サービスは NodePort タイプであることが想定されます。
-
-
オプションで、[ イングレス説明] を指定します。
-
[ 展開] をクリックします
デプロイする前に設定を確認する場合は、[ Ingress Spec の生成] をクリックします。指定された Ingress 設定は YAML 形式で表示されます。設定を確認したら、[ Deploy] をクリックします。
-
(注) Ingress 構成を使用して作成された仮想サーバーにライセンスを適用します。ライセンスを適用するには、次の手順に従います。
- [設定] > [ライセンスと分析の設定]に移動します。
- [ 仮想サーバーライセンスの概要] で、 [仮想サーバーの自動選択]を有効にします。