ブルーグリーンデプロイとカナリアリリースを理解したいならOSSの「Argo Rollouts」で実践しようCloud Nativeチートシート(27)

Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、代表的なデプロイ戦略の「ブルーグリーンデプロイ」と「カナリアリリース」について「Argo Rollouts」で実践する。

» 2023年05月15日 05時00分 公開
[飯野拓人, 岡本隆史, 正野勇嗣株式会社NTTデータ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。前回から「Argo Rollouts」に触れ、シリーズを通して概要からハンズオンを交えた使い方までを紹介していきます。前回は第1弾として、Argo Rolloutsの概要とサポートされるデプロイ戦略について解説しました。

 今回は、手を動かすハンズオンを交えて「Argo Rolloutsがどのように動くのか」について理解していただきたいと思います。具体的には、前回紹介した代表的なデプロイ戦略の内「ブルーグリーンデプロイ」と「カナリアリリース」を取り上げ、Argo Rolloutsで指定できるデプロイパラメーターの詳細についても解説します。なお、プログレッシブデリバリーについては次回紹介する予定です。

環境構築

 ハンズオンに当たり、実行環境の準備が必要です。本稿では下記バージョンのソフトウェアで動作を検証します。他のバージョンでも同様に動くと思いますが、全ての環境で検証していないことにご留意ください。

項目 バージョン
Kubernetes v1.26.2
Argo CD v2.6.4
Argo Rollouts v1.4.1

Kubernetesクラスタの作成

 Argo Rolloutsの利用を始める前に、Argo RolloutsおよびアプリケーションをデプロイするKubernetesクラスタを用意してください。

 本稿で利用するサンプルアプリでは「Ingress」を利用します。「minikube」の場合はデフォルトでIngress機能が有効化されていないので、Ingress拡張機能を有効化してください。

minikube addons enable ingress ingress-dns

Argo CDのインストール

 作成したKubernetesクラスタ上に「argocd」ネームスペースを作成し、Argo CDをデプロイします。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.4/manifests/install.yaml

 次のコマンドを別ターミナルで実行します。

kubectl port-forward svc/argocd-server -n argocd 8080:443

 ブラウザで「http://localhost:8080」にアクセスすると、Argo CDのダッシュボード画面にアクセスできます。

Argo CDのログイン画面

※なお、管理者ユーザー「admin」のパスワードは下記コマンドで確認できます。Argo CDにログインが必要になる際に利用してください。

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

Argo Rolloutsのインストール

 作成したKubernetesクラスタ上に「argo-rollouts」ネームスペースを作成し、Argo Rolloutsをデプロイします。

kubectl create namespace argo-rollouts
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/download/v1.4.1/install.yaml

サンプルの取得

 本稿で利用するサンプルを「GitLab」で公開しています。次のコマンド(あるいはご利用のIDE)でGitリポジトリをクローンしてください。

git clone https://gitlab.com/cloudnativetips/argorollouts-sample.git

ブルーグリーンデプロイ

 前回のおさらいですが、ブルーグリーンデプロイは、新バージョンのアプリケーションを別の環境にデプロイし、トラフィックを瞬間的に切り替える方法です。旧バージョンと新バージョンが完全に分離しているので、問題が発生した際に迅速にロールバックできます。

 デプロイ実行における各リソースの動きをArgo Rolloutsコントローラー視点で整理すると、次の通りです。

  • 【1】Rolloutに対して、新バージョン環境の作成を命令する
  • 【2】「Preview」サービスに対して、新バージョン環境にルート切り替えを命令する
  • 【3】「Active」サービスに対して、新バージョン環境にルート切り替えを命令する
  • 【4】Rolloutに対して、旧バージョン環境の削除を命令する
ブルーグリーンデプロイの詳細説明図

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。