Citrix ADC ingress controller

Kubernetesベースのアプリケーション向けにCitrix ADC VPXおよびAzureパイプラインを使用したカナリアおよびブルーグリーンの展開

このトピックでは、Citrix ADC VPX および Azure パイプラインを使用して Kubernetes アプリケーションのカナリアおよびブルーグリーンの展開を実現する方法について説明します。

Kubernetesベースのアプリケーション向けにCitrix ADC VPXおよびAzureパイプラインを使用したカナリア展開

Canary は、アプリケーションの新しいバージョンを小規模かつ段階的に段階的にデプロイするデプロイ戦略です。Canary の考え方は、最初に新しい変更を少数のユーザーにデプロイして、新しいデプロイを拒否するか昇格するかを決定し、その変更を残りのユーザーにロールアウトするというものです。この戦略により、本番環境に新しいバージョンのアプリケーションをデプロイする際のリスクが軽減されます。

Azure Pipelines は Azure DevOps が提供するクラウドサービスで、ビルドの実行、テストの実行、さまざまな開発環境や本番環境へのコードのデプロイを自動的に行うことができます。

このセクションでは、Citrix ADC VPX および Citrix ingress controller と Azure パイプラインを使用して、Kubernetes ベースのアプリケーションのカナリア展開を実現する方法について説明します。

Canary デプロイのメリット

  • Canary バージョンのアプリケーションは、新しいコードに存在する可能性のある問題やデプロイメントの問題に対する早期警告として機能します。
  • Canary バージョンはスモークテストと A/B テストに使用できます。
  • Canary は簡単なロールバックとゼロダウンタイムアップグレードを提供します。
  • 複数のバージョンのアプリケーションを同時に実行できます。

このソリューションでは、Citrix ADC VPXをAzureプラットフォームに展開して、アプリケーションの負荷分散を可能にし、Citrix ADC VPXを使用してカナリア展開を実現します。Microsoft Azure に Citrix ADC を展開する方法の詳細については、 Citrixのドキュメントリンクを参照してください

Citrix ADCを使用したカナリア展開

ルールベースのカナリア展開であるIngressアノテーション付きのCitrix ADCを使用して、カナリア展開を実現できます。このアプローチでは、ルールベースのカナリアデプロイメント戦略に基づいてアプリケーションリクエストを処理する必要があることを示すために、特定のアノテーションを持つ追加の Ingress オブジェクトを定義する必要があります。Citrix ソリューションでは、IngressレベルでのCanaryベースのトラフィックルーティングは、以下のようにさまざまなルールセットを定義することで実現できます。

  • 体重に基づいてカナリアールを適用する
  • HTTP リクエストヘッダーに基づいた Canary ルールの適用
  • HTTP ヘッダー値に基づいてカナリアールを適用する

詳細については、 Ingress アノテーションを使用した簡略化された Canary デプロイメントを参照してください

Citrix ADC VPX と Azure パイプラインを使用したカナリア展開

Citrix は、Kubernetes ベースのアプリケーション向けに、Citrix ADC VPX および Citrix ingress controller と Azure パイプラインを使用するカナリア展開のソリューションを提案しています。

canary-deployment

このソリューションには、次の 3 つの設定ディレクトリがあります。

  • kubernetes_configs
  • deployment_configs
  • pipeline_configs

kubernetes

このディレクトリには、バージョンベースのアプリケーション固有の展開YAMLファイルと、Citrix ADC構成をプッシュしてカナリア展開を実現するCitrix Ingress Controllerを展開するためのHelmベースの構成ファイルが含まれています。

kubernetes

注:

Citrix ingress controller Helm チャートリポジトリから最新の Helm チャートをダウンロードしcic_helm ディレクトリの下に配置できます。

deployment_configs

このディレクトリには 、Canary デプロイ時にデプロイまたは停止されるアプリケーションの特定のバージョンで使用可能な YAML ファイルのパスを指定する setup_configJSON ファイルとteardown_config JSON ファイルが含まれます。

deployment_configs

pipeline_configs

このディレクトリには、Azure パイプラインスクリプトと python スクリプトが含まれます。Python スクリプトは、ユーザー設定を読み取り、新しいバージョンのアプリケーションの導入またはアプリケーションのバージョンのティアダウンを求めるユーザーリクエストに基づいてパイプラインをトリガーします。アプリケーションイングレス YAML のトラフィックウェイトの割合が変化すると、パイプラインは利用可能なバージョンのアプリケーション間でトラフィックを切り替えます。

pipeline_configs

3 つの設定ファイルがすべて揃っていると、GitHub のdeployment_configsディレクトリとkubernetes_configsディレクトリにあるファイルが更新されると、Azure のパイプラインがトリガーされます。

トラフィック分割率は、アプリケーションの Ingress YAMLのingress.citrix.com/canary-weightアノテーションを使用して調整できます。

Canary in Azure パイプラインにサンプルアプリケーションをデプロイする

このトピックでは、Citrix ADC および Azure パイプラインを使用してサンプルアプリケーションをカナリアモードで展開する方法について説明します。

前提条件

以下の点を確認してください。

  • Citrix ADC VPX はすでにAzureプラットフォームに展開されており、サンプルアプリケーションですぐに使用できます。
  • Azure パイプライン用に設定された Kubernetes サービス接続を持つ AKS クラスター。

次の手順を実行します:

  1. GitHub リポジトリのクローンを作成し、ディレクトリcd/canary-azure-devopsに移動します。

  2. kubernetes_configsディレクトリ内のバージョン管理されたフォルダーv1の下に、アプリケーションデプロイメント固有の YAML (ingress ファイルも含む) を配置します。
  3. Citrix ingress controller をデプロイし、 アプリケーションをデプロイおよび破棄するために 、既存の YAML ファイル、deploy_cic.yamldeploy.yamlおよびteardown.yamlを使用して 3 つの Azure パイプラインを作成します。 パイプラインの作成については、「Azure パイプライン 」を参照してください。
  4. パイプライン YAML でサブスクリプション、エージェントプール、サービス接続、Citrix ADC の詳細を更新します。
  5. パイプラインを保存します。
  6. deploy_config.jsonのパスを、アプリケーション YAML が配置されているディレクトリを指定するパスで更新します。

    {
    
     "K8S_CONFIG_PATH" : "cd/canary-azure-devops/kubernetes_configs/v1"
    
    }
    
  7. Gitを使用してdeploy_config.jsonファイルと v1 ディレクトリをコミットし、アプリケーションの v1 バージョンをデプロイするパイプラインをトリガーします。

  8. Citrix ADC を介してアプリケーションにアクセスします。
  9. kubernetes_configsの下にv2ディレクトリを作成して、v2 バージョンのアプリケーションを導入します。このバージョンの Ingress に Canary アノテーションが指定され、トラフィックの分割に適した重みが設定されていることを確認します。
  10. v2 ディレクトリを指定するパスでdeploy_config.jsonを更新して、バージョン v2 のアプリケーションをデプロイします。これで、トラフィックは Ingress アノテーションに設定された Canary Weight(例: ingress.citrix.com/canary-weight: "40")に基づいて、バージョン v1 と v2 の間で分割されます。

  11. 新しいバージョンですべてのトラフィックを処理できる状態になるまで、ingress アノテーションでトラフィックの重みを徐々に増やしていきます。

Kubernetesベースのアプリケーション向けにCitrix ADC VPXおよびAzureパイプラインを使用したブルーグリーンの展開

Blue-Green デプロイメントは、Blue と Green と呼ばれる 2 つの同一の本番環境を実行することで、ダウンタイムとリスクを軽減する手法です。常に、すべての本番トラフィックを処理する環境の 1 つだけがライブになります。Blue-Green 方式の基本は、2 つの異なるが同一の環境を並べて展開することです。両方の環境へのアプリケーションのデプロイは、ジョブとタスクを使用することで完全に自動化できます。このアプローチでは、アプリケーションのすべてのリソースの重複が強制されます。ただし、Blue-Green デプロイメントは、さまざまな継続的デプロイツールで実行できるさまざまな方法があります。

Citrix ADC VPX と Azure パイプラインを使用すると、同じカナリアベースのソリューションを使用して、トラフィックの重みをゼロまたは 100 に調整することで、ブルーグリーンの展開を実現できます。

Kubernetesベースのアプリケーション向けにCitrix ADC VPXおよびAzureパイプラインを使用したカナリアおよびブルーグリーンの展開