コンテナー オーケストレーションが重要なのはなぜですか?
- 7 分
このユニットでは、Tailspin チームが経営者からの新しい指示に応えるための戦略を調べるのを見ていきます。 チームは、Kubernetes がマイクロサービス アーキテクチャへの移行をどのように支援できるかを調べます。
未来は小さい
状況がテールスピンで好転しています。 最近の管理オフサイトで、Andy は Azure DevOps でチームの最近の成功を発表しました。これは好評でした。 Andy は、Docker コンテナーを使用したチームの最近の概念実証プロジェクトのデモも発表しました。 これらのデモは、組織の技術的な未来に関する一連の生産的な会話につながりました。 翌日、Andy は Space Game Web チームとニュースを共有するために戻ります。
アンディ: 昨日のオフサイトのプレゼンテーションで本当にうまくいきました。 経営陣は、これまでに行った作業に感銘を受け、特別な割り当てを発行しました。
ティム: ええと、 長い経験を積んでいるので、そのような罠が1マイル先から来るのがわかります。
アンディ: いいえ、これは私たちにとって素晴らしい機会です。 管理は Docker コンテナーのデモを愛し、マイクロサービス アーキテクチャの採用を検討したいと考えています。
Amita: マイクロサービス? 電話や時計のアプリが好きですか?
Andy: いいえ。マイクロサービスは、Web アプリのような一般的なアプリです。 主な違いは、単一のモノリシック アプリを構築してデプロイする代わりに、自律サービスとしてより適切に保守および管理されるコンポーネントをリファクタリングすることです。 その後、これらのサービスが得意とする分野で効率よく機能するように構築し、独立して動作できるようにデプロイします。
Tim:私はそれの音が好きではない。 私はすでに私たちの環境全体で非常に多くのサービスを扱っています。 これ以上増やしたくはないよ。
Andy: それは理解できる懸念事項です。 幸いにも、特定の環境で多数のコンテナーを管理するための優れたツールがいくつかあります。 Kubernetes を使用して調整された Web アプリ用のマルチコンテナー ソリューションをスパイクアウトするように求められました。 また、DevOps プロセスに与える影響についても知りたいと考えています。
Mara: Kubernetes について読んできました。 Azure は Azure Kubernetes Service を通じて優れたサポートを提供しており、Azure DevOps にパイプラインのサポートがあることを知っています。
Amita: このプロセスは複雑になると思われます。 テストにはどのような影響がありますか?
Mara: 大きな変更はしないでください。 Kubernetes には、さまざまな名前空間にデプロイする方法が用意されています。 これにより、デプロイをパーティション分割して、テストと運用環境専用の環境全体を作成できます。 また、それらはすべて同じクラスターで実行され、同じコンテナーを使用するため、テスト エクスペリエンスでは運用環境で期待される内容を提供する必要があります。
Amita: どのような環境がどこにあるかを追跡するのは難しいでしょうか。
Mara: いいえ。Azure DevOps 環境を使用して、そのすべてを行うことができます。 ポータルを使用して、各サービスの場所とアクセス方法を確認できます。 パイプラインを通じてすべて自動化されるため、手動で追跡する必要はありません。 私が今持っている唯一の懸念は、これを構築するための開発経験にどれだけの影響を与えるかです。
Andy: 良いニュースは、影響が最小限であるということです。 Docker コンテナーをビルドするようにプロジェクトが設定されていると仮定すると、Kubernetes にデプロイする必要があるのは、サービスとそのデプロイを記述するマニフェスト ファイルです。
Mara: 2 番目のコンテナーとしてリファクタリングするものについて考えたことはありますか? 私は、Web API を介してランキングを利用できるようにするよう求めるチームがいくつかあることを知っています。
アンディ:私はあなたより一歩先を行っています。 私は先週の夜 Docker プロジェクトをフォークし、ランキング データ機能を独自のマイクロサービスにリファクタリングしました。 これにより、Web サイト用のコンテナーとランキング API 用のコンテナーが残ります。 どちらのコンテナーも、アプリで使用するテクノロジ スタックに関係なく、サイトまたは API を使用するすべてのユーザーと共有できる独自のパブリック エンドポイントを持つよう構成されています。 どちらかの負荷が大幅に増加した場合は、コンテナーを個別にスケーリングできます。
Mara:このプロジェクトは素晴らしいですね! リリース パイプラインの更新を開始しましょう。
Kubernetes とは
Kubernetes は、コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのコンテナー オーケストレーション プラットフォームです。 これは、宣言型の応答性の高い方法で分散システムを実行するためのフレームワークを提供し、複数のホスト間でコンテナーを実行できるため、リソースの効率的な使用と信頼性の向上を実現します。
Tailspin チームは、すべてのニーズを満たしているため、このシナリオで Kubernetes を選択しました。
マルチコンテナー デプロイの複雑さ: Kubernetes は、まず第一に、コンテナーデプロイのデプロイと保守に関するプロセスを自動化するように設計されています。
環境とステージ間の一貫性: コンテナーが含まれるアプリに対して一貫したデプロイを確保するのと同様に、Kubernetes はクラスターが管理するコンテナーに対して一貫したデプロイを保証します。
Azure DevOps のサポート: Azure DevOps では、Kubernetes を操作するためのファースト クラスのサポートが提供されます。
開発の容易さ: ソース プロジェクトに対する Kubernetes の影響は、Docker サポートを追加する場合と同等であり、これは最小限であり、宣言型の構成に限定されます。
Kubernetes を採用すると、複数の Docker コンテナーを使用するマイクロサービス アーキテクチャを採用するプロセスが大幅に簡略化されます。