Citrix ADM でKubernetes入力構成を管理する
Kubernetes (K8s) は、クラウドネイティブアプリケーションのデプロイ、スケーリング、管理を自動化する、オープンソースのコンテナーオーケストレーションプラットフォームです。
Kubernetes は Ingress 機能を提供し、クラスタ外のクライアントトラフィックが Kubernetes クラスタ内で実行されているアプリケーションのマイクロサービスにアクセスできるようにします。ADC インスタンスは、Kubernetes クラスタ内で実行されているアプリケーションへの入力として機能できます。ADC インスタンスは、クライアントから Kubernetes クラスター内の任意のマイクロサービスに南北トラフィックをロードバランシングし、コンテンツでルーティングできます。
注
- Citrix ADM は、Kubernetesバージョン1.14以降のクラスタで入力機能をサポートしています。
- Citrix ADM は、入力デバイスとしてCitrix ADC VPX およびMPXアプライアンスをサポートしています。
- Kubernetes環境では、Citrix ADCインスタンスは「NodePort」サービスタイプのみを負荷分散します。
複数の ADC インスタンスを、同じクラスタまたは異なるクラスタまたは名前空間上で入力デバイスとして動作するように設定できます。インスタンスを設定したら、Ingress ポリシーに基づいて各インスタンスを異なるアプリケーションに割り当てることができます。
Kuberneteskubectl
またはAPIを使用して,入力設定を作成してデプロイできます。また,Citrix ADMからの入力を構成して展開することもできます。
ADM で Kubernetes 統合の次の側面を指定できます。
クラスタ— ADM が入力設定をデプロイできる Kubernetes クラスタを登録または登録解除できます。Citrix ADM にクラスターを登録する場合は、Kubernetes APIサーバー情報を指定します。次に、Kubernetes クラスタに到達できる ADM エージェントを選択し、Ingress 構成を展開します。
ポリシー— Ingress ポリシーは、Ingress 設定をデプロイするクラスタまたは名前空間に基づいて ADC インスタンスを選択するために使用されます。ポリシーを追加するときに、クラスタ、サイト、およびインスタンスの情報を指定します。
入力設定:この設定は Kubernetes 入力設定です。この設定には、コンテンツスイッチングルールと、マイクロサービスとそのポートの対応する URL パスが含まれます。Kubernetes シークレットリソースを使用して、(ADC インスタンスでの SSL 処理の負荷を軽減するために)SSL/TLS 証明書を指定することもできます。
Citrix ADM は、入力ポリシーを使用して、入力構成をADCインスタンスに自動的にマッピングします。
入力構成が成功するたびに、Citrix ADM はスタイルブック構成パックを生成します。ConfigPack は、入力設定に対応する ADC インスタンスに適用される ADC 設定を表します。ConfigPackを表示するには、「アプリケーション」>「スタイルブック」>「構成」に移動します。
はじめに
Citrix ADC インスタンスをKubernetesクラスターの入力デバイスとして使用するには、以下の機能があることを確認してください。
Kubernetesクラスターが存在する。
ADM と Kubernetes クラスターまたは管理対象インスタンス間の通信を有効にするように、Citrix ADM エージェントがインストールおよび構成されています。データセンターまたはクラウドに存在するマネージドインスタンスを使用できます。
Citrix ADM に登録された Kubernetes クラスター。
Kubernetesクラスタに登録するためのCitrix ADM エージェントの設定
KubernetesクラスタとCitrix ADM 間の通信を有効にするには、Citrix ADMエージェントをインストールして構成する必要があります。エージェントは、次のプラットフォームにデプロイできます。
ハイパーバイザ(ESX、XenServer、KVM、Hyper-V)
パブリッククラウドサービス(Microsoft Azure、AWS など)
プロシージャに従って、エージェントを設定します。
注
既存の ADM エージェントが既に展開されている場合は、そのエージェントを使用することもできます。
秘密トークンを使用して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
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
次のコマンドを実行して、トークンのシークレット文字列を取得します。
kubectl describe secret
Citrix ADM で Kubernetes クラスターを追加する
Citrix ADM エージェントを構成して静的ルートを構成したら、Citrix ADMにKubernetesクラスターを登録する必要があります。
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
生成されたトークンをコピーし、認証トークンとして貼り付けます。
詳しくは、Kubernetesのドキュメントを参照してください。
リストからエージェントを選択します。
[作成]をクリックします。
入力ポリシーの定義
入力ポリシーは、入力クラスターまたは名前空間、またはその両方に基づいて、入力構成の展開に使用するCitrix ADCを決定します。
[オーケストレーション] > [Kubernetes] > [ポリシー]に移動します。
[Add]をクリックしてポリシーを作成します。
ポリシー名を指定します。
入力設定を Kubernetes クラスターにデプロイするための条件を定義します。これらの条件は、通常、入力クラスタと名前空間に基づいています。
[インフラストラクチャ] パネルでは、
サイト-リストからサイトを選択します。
インスタンス-リストからADCインスタンスを選択します。
[サイト] リストと [インスタンス] リストには、[条件] パネルのクラスタ選択に基づいてオプションが表示されます。
これらのリストには、Kubernetesクラスターで構成されたCitrix ADM エージェントに関連付けられているサイトまたはインスタンスが表示されます。
[Choose Network] で、ADM が仮想 IP アドレスを入力構成に自動的に割り当てるネットワークを選択します。
このリストには、[ネットワーク] > [IPAM] で作成したネットワークが表示されます。
[作成]をクリックします。
入力構成のデプロイ
kubectl
を使用してKubernetes から入力設定をデプロイするには、Kubernetes API、またはその他のツールを使用します。入力構成は、Citrix ADM から直接展開することもできます。
オーケストレーション > Kubernetes > Ingresses に移動します。
[追加]をクリックします。
[入力の作成] フィールドで、次の詳細を指定します。
入力の名前を指定します。
[クラスタ] で、入力をデプロイする Kubernetes クラスタを選択します。
リストから [クラスタネームスペース] を選択します。このフィールドには、指定した Kubernetes クラスターに存在する名前空間が一覧表示されます。
必要に応じて、[フロントエンド IP アドレスの自動割り当て] を選択します。
リストから [入力プロトコル] を選択します。[HTTPS] を選択した場合は、TLS シークレットを指定します。
このシークレットは、HTTPS 証明書と秘密キーを埋めている Kubernetes シークレットリソースを埋め込みます。
HTTPS 入力には、Kubernetes クラスタで設定された TLS ベースのシークレットが必要です。サーバ証明書と証明書キーをそれぞれ含める
tls.crt
フィールドとtls.key
フィールドを指定します。コンテンツルーティングの場合は、次の詳細を指定します。
URL パス-Kubernetes サービスおよびポートに関連付けられているパスを指定します。
Kubernetesサービス-目的のサービスを指定します。
ポート-サービスポートを指定します。
LB メソッド-選択した Kubernetes サービスに対する優先ロードバランシング方式を選択します。
選択したメソッドは、入力仕様を適切な注釈で更新します。たとえば、ROUNDROBINメソッドを選択すると、Citrix の注釈は次のように表示されます。
"lbmethod":"ROUNDROBIN"
持続性タイプ-選択した Kubernetes サービスに対して優先する負荷分散持続性タイプを選択します。
選択した永続性タイプによって、入力スペシフィケーションが適切な注釈で更新されます。たとえば、「COOKEEINSERT」を選択すると、Citrix アノテーションは次のように表示されます。
"persistenceType":"COOKIEINSERT"
[Add]をクリックして、入力設定に URL パスとポートを追加します。
展開後、Ingress 設定は、次の内容に基づいてクライアントトラフィックを特定のサービスにリダイレクトします。
- 要求されたURLパスとポート。
- 定義された LB メソッドと永続性タイプ。
注:
入力構成で使用されるKubernetes サービスは、NodePort タイプであることが予想されます。
オプションで、入力の説明を指定します。
[デプロイ]をクリックします。
展開する前に構成を確認する場合は、[入力スペックの生成]をクリックします。指定された入力設定が YAML 形式で表示されます。構成を確認したら、[Deploy]をクリックします。
注:Ingress 構成を使用して作成された仮想サーバーにライセンスを適用します。ライセンスを適用するには、次の手順に従います。
- [ システム] > [ライセンスと分析] の順に選択します。
- [仮想サーバーライセンスの概要] で、[仮想サーバーの自動選択]を有効にします。