ブルーグリーンデプロイとカナリアリリースを理解したいならOSSの「Argo Rollouts」で実践しよう:Cloud Nativeチートシート(27)
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、代表的なデプロイ戦略の「ブルーグリーンデプロイ」と「カナリアリリース」について「Argo Rollouts」で実践する。
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のダッシュボード画面にアクセスできます。
※なお、管理者ユーザー「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に対して、旧バージョン環境の削除を命令する
関連記事
コンテナ実行基盤「Kubernetes」「Nomad」の基本 クラスタの構成方式やデプロイの仕組み
コンテナオーケストレーションツールとして知られる「Kubernetes」とHashiCorpが提供する「Nomad」を比較検証する本連載。第1回はKubernetesとNomadの基本をおさらいします。マイクロサービス移行後のテスト、CI/CD、運用監視で現場が疲弊しないためのポイント
マイクロサービスアーキテクチャへの移行を進める上で生まれた課題にどう取り組んだのか。オイシックス・ラ・大地の川上徹氏がOisixのマイクロサービス移行後のテスト、CI/CD、運用監視を紹介します。「ブルーグリーンデプロイメントの仕組み」を理解する
本連載では、「OpenStackを基盤としたブルーグリーンデプロイメント」を実現する“現場目線”のノウハウを解説していきます。今回は、「ブルーグリーンデプロイメントの利点とその仕組み」を説明します。
Copyright © ITmedia, Inc. All Rights Reserved.