背景Kubernetes クラスターへのサービス移行をデプロイする以前の作業では、CI/CD プロセスは主に .gitlab-ci.yml ファイルを記述することによって実装されていました。このプロセスを通じて、ユニットテスト、リンティング、コンパイル、イメージのパッケージ化、コード更新後のリリースを完了できます。 ただし、サービスが Kubernetes クラスターにデプロイされた後、各サービスは GitLab リポジトリでデプロイメント テンプレートを維持し、サービスの新しいバージョンをリリースする必要があります。各デプロイメント プロセスでは、いくつかのリリース パラメータとデプロイメント テンプレートを組み合わせて、リリースに必要な deploy.yml ファイルを生成し、それを kubectl コマンドを通じて Kubernetes クラスターに公開します。ただし、このソリューションには次の欠点があります。
上記の問題を解決するために、CI/CDプロセスのリリース作業を抽出し、Kubernetesベースのリリースシステムを設計してサービスリリース作業を完結させました。 出版システムの基本機能私たちが設計した出版システムには、次の基本機能があります。
リリースプロセスの概要リリース システムがリリース操作を実行する前に、CI 前のプロセスを完了する必要があります。具体的な操作は以下のとおりです。
上記の作業が完了すると、リリース システムは各サービスに基づいて対応するバージョンを選択し、各リリースに必要なデプロイメント ファイルを生成し、Kubernetes API サーバーを呼び出してサービスのローリング アップグレードを実装できます。 リリースプロセスの詳細基本的な公開操作 公開システムでは、各公開操作は公開タスクと見なされます。したがって、サービスをアップグレードする必要がある場合は、このサービスに対して新しい公開タスクを作成する必要があります。具体的な操作は以下のとおりです。
リリースタスクの作成が完了すると、各リリースタスクの情報を表示できるようになります。上記に記入した情報に加え、リリースタスクの開始時間、リリース期間、操作ユーザー、リリースの説明、リリースステータスなどの情報も含まれます。これにより、各リリース操作の記録が完了し、問題のトラブルシューティングと追跡に役立ちます。 さらに、各リリース タスクはロールバック操作もサポートしており、新しいバージョンのリリースに問題が発生した場合にバージョンをすばやくロールバックできます。最後に公開されたタスクを再送信できます。この機能には、次の 2 つの実用的なシナリオがあります。 リリースは外部要因により失敗したため、外部要因が解決された後に再リリースする必要があります。 コードの構成情報が更新された後、Kubernetes 内の Pod はこの構成情報を更新する必要があります。ロールバックと再送信の操作は、本質的には新しいリリース タスクです。リリース パラメータは、各リリース タスクの情報に基づいて自動的に選択されるため、より高速で便利です。 リリースデプロイメントファイルの生成デプロイメント テンプレートのパラメータは、次の 2 つのカテゴリに分かれています。 基本パラメータ リリースの基本的なパラメータには、Pod レプリカの数、ヘルスチェック パス、組織情報などが含まれており、実際の状況に応じて調整できますが、調整頻度は非常に低くなります。これらのパラメータはリリース構成を通じて管理されます。各サービスはリリース構成を維持し、それをデータベースに保存します。ページ上のリリース構成を編集することで、基本的なパラメータを変更できます。さらに、リリース構成では、サービスで使用されるリリース テンプレート情報が維持されます。 基本パラメータの調整には、新しいリリースタスクの作成よりも高い権限が必要です。 公開パラメータ サービス名、バージョン番号、リリース環境、リリース方法などを含み、各リリースは必要に応じて記入されます。これらのパラメータは、新しいリリース タスクが作成されるときに決定されます。 リリースが行われるたびに、リリース システムは基本テンプレートと上記のパラメーター値を組み合わせて、このリリース タスクに必要なデプロイメント ファイルを生成し、kubectl apply を通じて Kubernetes API サーバーを呼び出して、対応するサービスのローリング アップグレードを実行します。 デプロイメントテンプレートの管理 私たちの実践では、サービスには共通点があります。特定のタイプのサービスに対してデプロイメント リリース テンプレートを抽象化し、複数のサービスで 1 つのリリース テンプレートを共有できるようにすることで、管理コストを大幅に削減します。現在リリースに使用されているデプロイメント テンプレートは GitLab に保存されています。テンプレートの管理と使用方法は次のとおりです。
Kubernetes リリース プロセスの追跡と結果の記録Kubernetes は宣言型デプロイメント ファイルを定義し、非同期呼び出しを行うことでバージョンを更新するためです。 kubectl apply を呼び出した後、対応する Pod がローリング アップデートを正しく完了できるかどうかを判断することはできません。したがって、リリース プロセスを追跡するには、コマンド kubectl rollout status deployment $deployment_name を使用します。ここで、変数deployment_name はサービスと 1 対 1 で対応しています。 リリース プロセスの追跡に関する情報は、各リリース タスクの詳細で確認できます。ここには、Pod ローリング アップデートの詳細なプロセスが記録されます。 公開された Pod が正常に更新されると、 kubectl rollout status deployment $deployment_name が正常に終了し、リリース システムはリリース タスクが成功したと判断します。何らかの理由でローリング アップデート プロセス中に Pod の新しいバージョンがブロックされた場合、リリース システムで設定されたタイムアウト期間を超えると、リリース タスクは失敗したと見なされます。 公開に失敗したタスクについては、現在、シンプルな Pod ログの表示がサポートされています。主な原則は、公開プロセス中にステータスが実行中または終了中でないポッドのログを照会して、失敗した公開タスクの問題を特定することです。効果は以下のとおりです。 要約するこの記事では主にKubernetesをベースとしたリリースシステムについて紹介します。まず、Kubernetes ベースのリリース システムを設計する背景と必要性について説明します。次に、出版システムの基本機能について説明します。 3 番目の部分はこの記事の本文であり、リリース システムの原理を詳細に説明します。まず、新しいリリース タスクの作成から始め、デプロイメント ファイルの生成、リリース テンプレートの管理、リリース結果の追跡と記録、グレースケール リリースの実装について詳しく説明します。 著者: Wu Chongbin、VPGAME 運用保守開発エンジニア。 VPGAMEは、イベント運営、メディア情報、ビッグデータ分析、プレイヤーコミュニティ、ゲーム周辺機器を統合した総合的なeスポーツサービスプラットフォームです。 |
<<: テンセントクラウドはクラウドネイティブサーバーハードウェアの研究開発に注力する星星海研究所を設立
>>: 実行中の Kubernetes ポッドにパッチを適用するにはどうすればよいでしょうか?
11月9日、テンセントのminiStationマイクロゲームコンソール発表会が北京静源芸術センターで...
[[409539]]ハイブリッドおよびマルチクラウド アーキテクチャは高価で複雑になる可能性がありま...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...
[51CTO.com クイック翻訳] ハイパーバイザーは仮想マシンの作成と操作を監視し、異なるオペレ...
DediStation.com は HWL の元所有者によって開設されたという人もいます。今のところ...
流行の影響か、Nexusbytesのロサンゼルスデータセンターには大量の未使用サーバーリソースがある...
今回はストレージ仮想化技術について学びます。データは、コンピュータ システム全体の中で最も重要かつ貴...
前回の記事「eBPF を使用してソケット レベルのリダイレクトを実装する」では、eBPF のソケット...
Kubernetes でコンテナを使用する場合、多くの場合、アプリケーションをポッドにグループ化しま...
Amazon グループ会社の Amazon Web Services, Inc. (AWS) は本日...
SEO 参照データとは何ですか? 外部リンク、インクルージョン、スナップショット、重みについては誰も...
デジタル変革がビジネスの最優先事項であることは周知の事実ですが、多くの組織は接続ソリューションのアッ...
今朝、パソコンの電源を入れると、先週 Baidu が更新されていたことがわかりました。今日は、自分の...
Baidu の有料ランキングは、キーワードの形で Baidu 検索エンジン プラットフォーム上で企業...
今はビッグデータの時代であり、データによる価値創造やデータマイニングといったホットな言葉が話題になっ...