[51CTO.com クイック翻訳] ご存知のとおり、クラウドネイティブアプリケーションの開発プロセスでは、単位時間あたりのアプリケーション展開の量と品質をいかに高速化するかを競うことがよくあります。マイクロサービス アプローチを使用すると、開発者は完全にモジュール化されたアプリケーションを迅速に設計できるため、より多くのチーム メンバーが単一のアプリケーションに対して同時に変更とリリースを記述および展開できるようになります。より短期間で頻繁な展開により、企業に次のようなメリットがもたらされることがわかります。
もちろん、リリース頻度が高くなると、アプリケーションの信頼性や顧客エクスペリエンスの満足度にも悪影響が及ぶことになります。そのため、運用チームと DevOps チームが協力してプロセスを開発し、さまざまな展開戦略を管理して、製品と顧客へのリスクを最小限に抑える必要があります。 (CI/CD パイプラインの自動化の詳細については、以下を参照してください) この記事では、ローリング デプロイメント、リビルド、ブルーグリーン、カナリア、およびそれらのバリエーションなどの高度な方法を含む、さまざまな Kubernetes デプロイメント戦略について説明します。 展開戦略 目標に応じて、Kubernetes のさまざまなデプロイメント戦略を採用できます。たとえば、より多くのテスト バージョンを起動するには、特定の環境または一部のユーザーと顧客に変更を加える必要がある場合があります。または、特定の機能を一般公開する前に、一部のユーザーに対してテストしたい場合もあります。 ローリングデプロイメント ローリング デプロイメントは、Kubernetes の標準化されたデフォルトのデプロイメント方法です。実行速度は遅くなりますが、クラスターのダウンタイムを発生させることなく、アプリケーションのポッドの古いバージョンを新しいバージョンに 1 つずつ置き換えることができます。 古いポッドの置き換えを開始する前に、ローリング アップデートでは、準備状況プローブ (準備状況プローブを参照) を通じて新しいポッドが配置されているかどうかを確認する必要があります。問題が発生した場合、クラスター全体のダウンタイムを回避するために、ローリング アップデートまたはデプロイメントが中断されます。したがって、次の YAML 定義ファイルを参照して、ローリング デプロイメント方式で古いイメージを新しいイメージに置き換えることができます。
以下に示すように、マニフェスト ファイル内のパラメータを調整することで、ローリング アップデートをさらに改良できます。
再現する これは非常にシンプルなデプロイメント方法で、下の図に示すように、すべての古いポッドを直接「削除」し、すぐに新しいポッドに置き換えます。 対応する標準マニフェスト ファイルは次のとおりです。
青/緑または赤/黒の展開 ブルー/グリーン (レッド/ブラックと呼ばれることもあります) デプロイメント戦略では、アプリケーションの古いバージョン (グリーンと呼ばれる) とそれに対応する新しいバージョン (ブルー) が同時に本番環境にデプロイされます。下の図に示すように、一般ユーザーは緑色のバージョンにのみアクセスできます。一方、QA チームは、別のサービスまたは直接ポート転送を通じて、ブルー バージョンで自動テストを実行できます。
したがって、新しいバージョンが完全にテストされ承認された後にのみ、ユーザー向けのサービスはブルー バージョンに切り替えられ、古いグリーン バージョンは最終的に「廃止」されます。
カナリア カナリアデプロイメントはブルー/グリーンデプロイメントに似ていますが、より制御されているため、より広く使用されています。カナリア デプロイメント タイプの主な特徴は、段階的なプログレッシブ配信モデルの使用です (を参照)。現在、ダークローンチや A/B テストなど、多くの戦略がこのカテゴリに分類されます。 新しい機能をテストしたい場合は、通常、アプリケーションのバックエンドにカナリア デプロイメント メソッドを使用できます。ここでは、ほぼ同一のサーバーを 2 つ準備できます。1 つは元の機能を引き続き使用し、すべてのユーザーが利用できるサーバーです。もう 1 つは、新機能が導入され、少数のユーザーにのみ公開されているものです。動作結果を比較することで、報告されたエラーが発生しなくなったら、新しいバージョンを運用システムのアーキテクチャの残りの部分に徐々に「ロールアウト」することができます。 このような戦略は、Kubernetes リソースを使用して古い Pod を新しい Pod に置き換えることで実現できますが、通常は Istio などのサービス メッシュを使用して、より便利かつ簡単に実装します。 以下の例に示すように、2 つの異なるマニフェストを Git に配置することができます。1 つは 0.1.0 としてタグ付けされた GA (GitApp) で、もう 1 つは 0.2.0 としてタグ付けされたカナリア バージョンです。 Istio 仮想ゲートウェイのマニフェスト ファイルでは、異なる重みを変更することで、2 つのデプロイメントのトラフィック パーセンテージ クォータを管理します。 Istio を使用してカナリア デプロイメントを実装する方法のステップ バイ ステップ ガイドについては、「GitOps ワークフローでの Istio の使用」チュートリアルを参照してください。 Weaveworks Flagger を使用したカナリア デプロイメント カナリアデプロイメントを管理するもう一つのシンプルで効果的な方法は、Weaveworks Flaggerを使用することです( Flagger は、カナリア デプロイメントの自動化を容易にします。 Istio または App Mesh を使用してトラフィックをルーティングおよびシフトし、Prometheus メトリックによるカナリア分析を使用します。さらに、Canary Analysis では、さまざまな受け入れテスト、負荷テスト、その他の種類のカスタム検証用に WebHook を拡張することもできます。 Flagger は Kubernetes デプロイメントを使用し、HPA (水平ポッドオートスケーラー) を選択して一連のオブジェクト (Kubernetes デプロイメント、ClusterIP サービス、Istio および APP Mesh 仮想サービスを含む) を作成し、カナリアスタイルの分析とプッシュを実行します。 制御ループを実装することにより、Flagger は HTTP リクエストの成功率、平均リクエスト期間、Pod の健全性などの主要なパフォーマンス指標を継続的に監視し、トラフィックを徐々にカナリア サービスに移行します。同時に、KPI を分析してカナリア サービス レベルの向上と低下を把握し、分析結果を Slack に公開することもできます。詳細と例については、「APP Mesh のプログレッシブ配信」を参照してください。 ダークデプロイメントとA/Bデプロイメント ダークデプロイメントは、カナリアの別のバリエーションです。ダークデプロイメントとカナリアデプロイメントの違いは、ダークデプロイメントは主にフロントエンドの処理に使用されるのに対し、カナリアデプロイメントはバックエンドで使用されることが多いことです。 ダークデプロイメントの別名は A/B テストです。新しい機能をテストするには、少数のユーザーを選択し、ユーザーに知られずに展開してプッシュする必要がある場合があります。これはいわゆる「ダーク」展開です。 機能トグルやその他の種類のツールを使用することで、ユーザーが新しい機能とどのように対話するかを知ることができます。これにより、機能をユーザーに正式にプッシュするかどうか、新しい UI がわかりにくいかどうか、その他の種類の指標を判断するのに役立ちます。 フラグとA/B展開 実際、重み付けルーティングに加えて、Flagger は HTTP のさまざまな一致条件に基づいてアクセス トラフィックをカナリア サービスにルーティングすることもできます。たとえば、A/B テストのシナリオでは、さまざまな HTTP ヘッダーまたは Cookie を使用して特定のユーザーをルーティングできます。明らかに、これはセッションの関連付けを実行する必要があるフロントエンド アプリケーションに特に役立ちます。もちろん、具体的な内容については、Flagger の関連ドキュメントを参照できます。 原題: Kubernetes デプロイメント戦略、著者: Anita Buehrle [51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。 |
<<: 企業がクラウドコンピューティングを正しく利用してビジネスを変革する方法
>>: Kubernetes 上で Kafka を実行するのは適切でしょうか?
SEO を行う人なら誰でも、SEO におけるリンクの重要性を知っています。私もリンクの正しい使い方や...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboアカウントを宣...
451 Research によると、2019 年までに企業の 69% がマルチクラウド/ハイブリッド...
2020年を通じて、パンデミックの影響でリモートワーカーの数が増加しています。その数が増え続けるにつ...
この記事では、ハイブリッド クラウド シナリオの難しさや重要なポイント、およびクラウド プラットフォ...
2021年の春節期間中、「自宅で新年を祝う」ための全国的な取り組みが開始されました。不完全な統計によ...
1. Kubernetesの利点と欠点1. Kubernetesの利点高可用性: Kubernete...
15ドルのVPS(標準128MメモリVZ)が目新しくなくなった頃、以前書いた安価な1Gメモリ(ope...
[[384950]] [51CTO.com クイック翻訳] 多くの人はエッジ コンピューティングの基...
2014 年 4 月 17 日、中国にインターネットが導入されてから 20 年目に、IT Times...
新浪科技報、11月1日朝のニュース:YiXinは本日、無料データプランを発表しました。11月8日から...
これらの Kubernetes 関連コンポーネントを活用して、監視、コマンドライン操作、マルチクラス...
心理学理論を通じて探求されるゲーミフィケーションされたユーザー成長計画は、ユーザー心理を個人的な利益...
サイトの重みが増すほど、サイトのキーワードランキングが高くなり、検索エンジンからのトラフィックが増え...
11 月 29 日の Chutian Webmaster Station (CHUTIANZ.COM...