Blue/Green デプロイメントパターン
DevOps環境を提供するニフクラ DevOps with GitLabサービスを利用して、KubernetesでのBlue/Green デプロイメントを構成するパターンです。
解決したい課題/要求事項
-
セットアップ、パッチ適用、バックアップ環境などの設計、構築に時間やコストがかかる
-
構築、運用には期間やスキルが必要となり、アプリケーション開発などの本業に集中できない
-
複雑なコンテナ管理には時間を割かずに、アプリケーションの開発業務に専念したい
ニフクラでの解決パターン
以下の内容により、課題の解決や要求事項の実現が可能
-
ニフクラ DevOps with GitLabとL4ロードバランサーを活用することで、Blue/Greenデプロイメントが実現可能
-
今までのインフラリソースも並行して利用できるため、新バージョンをリリースした際にもし問題が起きても、簡単に旧バージョンに切り戻すことが可能
-
また、利用者自身でそういった環境を運用せずに、アプリケーションの開発に集中できる
-
-
L4ロードバランサーからの接続先を切り替えることで、バージョンアップ時にサービス停止時間を最小限にできる
-
切り替え後の旧環境を開発環境として継続利用することで、無駄な出費を抑えることが可能
実装
-
ニフクラ DevOps with GitLabを利用すると、Blue/Green環境へのデプロイメントが容易となり、L4ロードバランサーの接続先を切り替えるだけで、簡単にBlue/Green環境を作り上げることが可能となる
-
コードの管理、プロジェクトの管理、可視化、デプロイメント、DevOpsサーバーの運用に必要な機能が一通り揃っており、これらを活用することで運用工数を大幅に削減できる
-
ニフクラ DevOps with GitLabでは、Hosted Runnerを提供している
利用者自身でRunnerサーバーを構築・運用する必要はなく、簡単に専用のCI/CD環境を立ち上げることができる-
DevOps with GitLabのRunner機能はDocker executorを採用しており、必要な実行環境のイメージを宣言すると、自動的に環境が立ち上がる
詳細は、DevOps with GitLab技術仕様 を参照
-
-
DevOpsの設定が簡単にできる分、利用者自身でDevOps環境をカスタマイズ・管理するよりも制約が多くなる
ニフクラ DevOps with GitLabの制約条件や留意事項と、利用者自身で環境を運用/構築する場合のメリット・デメリットとを勘案して、ニフクラ DevOps with GitLabの利用について検討が必要
補足
-
コントロールパネル、Web操作ですべての機能が利用可能
-
DevOps with GitLabでは[GitLab Enterprise Edition サブスクリプションと組み合わせることで、GitLab Enterprise Edition の追加機能やサポートが利用可能
詳細は GitLab製品の利用を参照 -
システムの特性によってはBlue/Greenに向かないものもある
特にデータ同期や切り替えタイミングなどの条件が厳しいシステムについては充分な検討が必要となる -
構成図にあるKubernetesの環境は、利用者自身で構築・運用する必要がある
-
仮想サーバーで共通グローバルネットワークを利用する場合のIPアドレス、デフォルトゲートウェイなどの情報については クラウド技術仕様/制限値(IPアドレス)を参照する
-
共通グローバルネットワーク、共通プライベートネットワークについての仕様は クラウド技術仕様/制限値(ネットワーク:共通ネットワーク)を参照する
注意点
-
ニフクラ DevOps with GitLabで選択可能なサーバータイプ、ディスク容量に制限がある
詳細は 機能・サービス:DevOps with GitLabを参照
本パターンの構成要素
本パターンを実現するためのニフクラサービス構成要素例は以下表の通りです。
サービス名 |
タイプ |
用途 |
数量 |
備考 |
---|---|---|---|---|
10Mbps |
- |
1 |
- |
|
devops.c-medium |
DevOpsサーバー |
1 |
- |
|
ディスク容量(100GB) |
ディスク |
1 |
- |
|
ファイアウォールグループ |
ファイアウォール |
1 |
- |
|
runner.c-medium |
DevOps Runner |
1 |
- |
|
c2-medium |
Blueリソース/Greenリソース |
2 |
- |
|
c2-large |
コンテナ環境構築用 |
2 |
Blueリソース/Greenリソース |
|
- |
- |
2 |
- |
|
- |
- |
1 |
任意で利用 |