Kubernetes 環境におけるアプリケーションのデプロイメント
Kimihiko Kitase
Head of Enterprise Marketing, Google Cloud Japan
2019 年にはいり、システムの老朽化、複雑化、人材不足により、機能追加はおろか改修すらままならないという企業から、システム刷新についての相談を受けることが増えてきました。相談内容は、メインフレーム、オフコンや UNIX 上で動いているアプリケーションの刷新から、仮想環境またはクラウドで構築されたモノリス アプリケーションのマイクロサービス化まで多岐にわたります。
これは、2018 年 9 月 経産省のワーキンググループ「デジタルトランスフォーメーション(DX)に向けた研究会」が作成した「DXレポート~ITシステム『2025年の崖』の克服とDXの本格的な展開~」をはじめとした政府主導による DX の推進により、ようやく多くの企業が真剣に検討しはじめたためではないかと思います。先進的な企業では既に、DX の実現に向けてシステムを刷新しはじめていますが、まだ道半ばの企業も多いと思います。そこで、 Google Cloud を使用した DX の実現について技術テーマを決めて解説していきたいと思います。崖にかける新しい橋の各ピースや方法について紹介できればと思います。
今回は、アプリケーションのデプロイメント(展開方法)について取り上げます。
アプリケーションのデプロイメントには、様々な方法があります。下記に、代表的なもの上げてみます。これらは旧来からある方法ですが、昨今のアプリケーション、サービス開発でコンテナを利用するケースが増えてきたとともに、デプロイメントもコンテナに対応したものになってきました。
ローリング アップデート: 徐々に新しいバージョンに変えていく方法(図 1)
ブルーグリーン デプロイメント: 現バージョン(blue) を落とさず、新バージョン(green)をデプロイし、テスト完了後トラフィックを一気に切り替える方法(図 2)
カナリア リリース: 現バージョンを落とさず、新バージョンをデプロイしするが、トラッフィクを徐々に切り替える方法(図 3)
A/B テスト: 現バージョンを落とさず、新バージョンをデプロイし、ユーザー、デバイスに応じてトラフィックを切り替える方法(UI のテスト等で利用される事が多い)(図 4)
Kubernetes では、ローリングアップデートやブルーグリーンデプロイメントが可能です。Pod を徐々に入れ替えていくことや、クラスタをあるタイミングで現バージョンから新バージョンに変更することも可能です。
また、Istio を使えば、トラフィックを細かくルートすることにより、カナリアリリースが可能にす。例えば 最初 25% のトラフィックだけ、新しい環境にルートし様子を見ながら、問題なければ、50%, 75% とと徐々にトラフィックを移すといった形です。
しかし、これらの方法では、マニュアル作業が必要な箇所がいくつかあるので、さらに自動化させたいと思う方も多いでしょう。そこで、Tekton、Spinnaker や Skaffold と言われるソフトウェアの登場です。これらのソフトウェアを利用すれば、CI / CD パイプラインを自動化できます。このエリアは最近ホットで、いくつものソフトウェアが開発されています。2019 年 3 月には、CI/CDパイプラインの標準仕様を策定する目的で、Continuous Delivery Foundation (CDF) というファウンデーションが、Linux Foundation 配下に設立されました。CDF では、Tekton、Spinnaker、Jenkins、Jenkins X といった CI/CD ソフトウェアがホストされます。(図 5)Linux Foundation によると「CDF は業界トップクラスの開発者、エンドユーザー、ベンダー間のコラボレーションを促進し、それによりCI/CDとDevOpsのメソドロジーを広め、ベストプラクティスを定義/文書化し、ガイドラインを提供し、世界中のあらゆるソフトウェア開発チームがCI/CDベストプラクティスを実践することを可能にするトレーニング マテリアルを作成します。」ということです。
Logos courtesy of the Continuous Delivery Foundation, and respective open source projects
Spinnaker は、2015 年に、Netflix が公開した OSS ソフトウェアです。Google もコントリビューションを行っています。マルチクラウド、プラットフォームに対応しており、UI も非常に良くできているソフトウェアです。Spinnaker Summit 2019 が、11 /15 - 17 に、サンディエゴで行われるようです。KubeCon + CloudNativeCon North America 2019 (11/18 - 21) の前に開催されるので、興味ある方は参加すると面白いと思います。
Tekton は 2018 年に、Google が公開した OSS ソフトウェアです。Kubernetes 環境に特化した CI / CD ツールです。継続的デリバリのコントロール プレーンをモダナイズし、ソフトウェアのデプロイメントの頭脳となるべく開発されています。
Skaffold は、CDF でホストされていませんが、2018 年に Google が公開したOSS ソフトウェアです。 Kubernetes 環境でのアプリケーションの継続的デリバリーを簡単にしてくれる ライトウェイトな OSS ソフトウェアです。
Spinnaker、Tekton や Skaffold を使った CI/CD パイプラインの説明については、Next San Francisco や Next Tokyo でのセッション動画を参考にしてください。