Kubernetesベースのアプリケーション向けNetScaler VPXとAzure Pipelinesを使用したカナリアおよびブルー/グリーンデプロイメント

最終公開日 : Oct 02, 2026
このトピックでは、NetScaler VPXとAzure Pipelinesを使用してKubernetesアプリケーションのカナリアおよびブルー/グリーンデプロイメントを実現する方法について説明します。

Kubernetesベースのアプリケーション向けNetScaler VPXとAzure Pipelinesを使用したカナリアデプロイメント

カナリアは、アプリケーションの新しいバージョンを小規模かつ段階的な増分ステップでデプロイするデプロイ戦略です。カナリアの考え方は、まず新しい変更を少数のユーザーにデプロイし、新しいデプロイを拒否するか昇格させるかを決定し、その後残りのユーザーに変更を展開することです。この戦略により、本番環境にアプリケーションの新しいバージョンをデプロイする際のリスクが制限されます。
Azure pipelines は、Azure DevOps が提供するクラウドサービスで、ビルドの自動実行、テストの実行、さまざまな開発環境および本番環境へのコードのデプロイを可能にします。
このセクションでは、NetScaler VPXとNetScaler Ingress ControllerをAzure Pipelinesと組み合わせて使用し、Kubernetesベースのアプリケーションのカナリアデプロイメントを実現する方法について説明します。

カナリアデプロイメントの利点

  • アプリケーションのカナリアバージョンは、新しいコードに存在する可能性のある潜在的な問題やデプロイメントの問題に対する早期警告として機能します。
  • カナリアバージョンは、スモークテストやA/Bテストに使用できます。
  • カナリアは、簡単なロールバックとゼロダウンタイムアップグレードを提供します。
  • 複数のバージョンのアプリケーションを同時に実行できます。
このソリューションでは、NetScaler VPXがAzureプラットフォームにデプロイされ、アプリケーションのロードバランシングを可能にし、NetScaler VPXを使用してカナリアデプロイメントを実現します。Microsoft AzureへのNetScalerのデプロイ方法の詳細については、NetScalerドキュメントのリンクを参照してください。

NetScalerを使用したカナリアデプロイメント

ルールベースのカナリアデプロイメントであるIngressアノテーションを使用して、NetScalerでカナリアデプロイメントを実現できます。このアプローチでは、ルールベースのカナリアデプロイメント戦略に基づいてアプリケーションリクエストを処理する必要があることを示すために、特定のIngressオブジェクトを追加で定義する必要があります。Citrixソリューションでは、Ingressレベルでのカナリアベースのトラフィックルーティングは、次のようにさまざまなルールセットを定義することで実現できます。
  • 重みに基づいてカナリアルールを適用する
  • HTTPリクエストヘッダーに基づいてカナリールールを適用する
  • HTTPヘッダー値に基づいてカナリールールを適用する
詳細については、「Ingressアノテーションを使用した簡素化されたカナリアデプロイ」(/ja-jp/netscaler-k8s-ingress-controller/canary/canary.html#simplified-canary-deployment-using-ingress-annotations)を参照してください。

NetScaler VPXとAzureパイプラインを使用したカナリアデプロイ

Citrixは、Kubernetesベースのアプリケーション向けに、NetScaler VPXとNetScaler Ingress ControllerをAzureパイプラインと組み合わせて使用するカナリアデプロイのソリューションを提案しています。
カナリアデプロイ
このソリューションには、3つの構成ディレクトリがあります。
  • kubernetes_configs
  • deployment_configs
  • pipeline_configs

kubernetes_configs

このディレクトリには、バージョンベースのアプリケーション固有のデプロイYAMLファイルと、カナリアデプロイを実現するためのNetScaler構成をプッシュする役割を担うNetScaler Ingress ControllerをデプロイするためのHelmベースの構成ファイルが含まれています。
kubernetes_configs
注:
最新のHelmチャートは、NetScaler Ingress Controller Helm charts repositoryからダウンロードし、 cic_helmディレクトリに配置できます。

deployment_configs

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

pipeline_configs

このディレクトリには、ユーザー設定を読み取り、アプリケーションの新しいバージョンを導入するか、アプリケーションのバージョンを停止するためのユーザーのリクエストに基づいてパイプラインをトリガーするAzureパイプラインスクリプトとPythonスクリプトが含まれています。アプリケーションのイングレスYAMLにおけるトラフィックウェイトの割合の変更は、利用可能なアプリケーションバージョン間でトラフィックを切り替えるようにパイプラインをトリガーします。
pipeline_configs
3つの設定ファイルがすべて揃っている状態で、GitHubのdeployment_configsおよびkubernetes_configsディレクトリ内のファイルへの更新は、Azureのパイプラインをトリガーします。
アプリケーションのイングレスYAMLで、ingress.citrix.com/canary-weightアノテーションを使用してトラフィック分割の割合を調整できます。

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

このトピックでは、NetScalerとAzureパイプラインを使用してカナリアモードでサンプルアプリケーションをデプロイする方法を説明します。

前提条件

以下を確認してください。
  • NetScaler VPXがAzureプラットフォームにすでにデプロイされており、サンプルアプリケーションで使用できる状態になっていること。
  • Azureパイプライン用にKubernetes service connectionが設定されたAKSクラスター。
次の手順を実行します。
  1. GitHubリポジトリをクローンし、cd/canary-azure-devopsディレクトリに移動します。
  2. kubernetes_configsディレクトリ内のバージョン管理されたフォルダーv1に、アプリケーションデプロイメント固有のYAML(イングレスファイルを含む)を配置します。
  3. 既存のYAMLファイルdeploy_cic.yaml、deploy.yaml、およびteardown.yamlを使用して、NetScaler Ingress Controllerのデプロイ、およびアプリケーションのデプロイと破棄を行う3つのAzureパイプラインを作成します。パイプラインの作成については、Azure pipelinesを参照してください。
  4. パイプラインYAMLのサブスクリプション、エージェントプール、サービス接続、およびNetScalerの詳細を更新します。
  5. パイプラインを保存します。
  6. deploy_config.jsonのパスを、アプリケーションYAMLが配置されているディレクトリを指定するパスで更新します。
    {

     "K8S_CONFIG_PATH" : "cd/canary-azure-devops/kubernetes_configs/v1"

    }
  7. Gitを使用してdeploy_config.jsonファイルとv1ディレクトリをコミットし、パイプラインをトリガーしてアプリケーションのv1バージョンをデプロイします。
  8. NetScalerを介してアプリケーションにアクセスします。
  9. kubernetes_configsの下にv2ディレクトリを作成して、アプリケーションのv2バージョンを導入します。このバージョンのイングレスに、トラフィック分割のために適切な重みが設定されたカナリアアノテーションが指定されていることを確認してください。
  10. deploy_config.jsonをv2ディレクトリを指定するパスで更新して、アプリケーションのv2バージョンをデプロイします。これで、イングレスアノテーションで設定されたカナリアの重みに基づいて、v1とv2のバージョン間でトラフィックが分割されます(例: ingress.citrix.com/canary-weight: "40")。
  11. 新しいバージョンがすべてのトラフィックを処理できるようになるまで、イングレスアノテーションのトラフィックの重みを段階的に増やし続けます。

Kubernetesベースのアプリケーション向けNetScaler VPXとAzureパイプラインを使用したブルー/グリーンデプロイ

ブルー/グリーンデプロイは、ブルーとグリーンと呼ばれる2つの同一の運用環境を実行することで、ダウンタイムとリスクを削減する手法です。常に、いずれかの環境のみが稼働しており、すべての運用トラフィックを処理します。ブルー/グリーン方式の基本は、2つの別個で同一の環境を並行してデプロイすることです。両方の環境にアプリケーションをデプロイすることは、ジョブとタスクを使用することで完全に自動化できます。このアプローチでは、アプリケーションのすべてのリソースの重複が強制されます。ただし、さまざまな継続的デプロイツールでブルー/グリーンデプロイを実行する方法は多数あります。
NetScaler VPXとAzureパイプラインを使用すると、トラフィックの重みをゼロまたは100に調整することで、同じカナリアベースのソリューションを使用してブルー/グリーンデプロイを実現できます。