この記事はWeChatの公開アカウント「Invincible Coder」から転載したもので、著者はInvincible Coderです。この記事を転載する場合は、Wudi Coder の公開アカウントにご連絡ください。 オリジナルリンク: https://mp.weixin.qq.com/s/WPwoRi240rKaWeIs0yNZ2g マイクロサービス アーキテクチャを実装すると、元の単一システム構造が多数のマイクロサービス アプリケーションになり、開発、テスト、運用、保守の展開で多くの課題に直面することになります。マイクロサービス アーキテクチャの下でエンジニアリングの研究開発効率を向上させ、開発、テスト、運用、保守の展開などのプロセスを円滑に進めることが、マイクロサービス テクノロジー システムを真に定着させ、メリットを生み出すための鍵となります。 上記の目標を達成するためには、開発者がいつでもどこでもコードをビルドし、指定された動作環境に公開できる、DevOps(開発と運用)のコンセプトに基づいた高度に自動化されたリリースシステムを構築する必要があります。このプロセスは、通常、CI/CD (継続的インテグレーション/継続的デリバリー) プロセスと呼ばれます。 DevOps の具体的な実践に関しては、一般的に各企業が自社の開発段階や実際のニーズに基づいて具体的な実装計画を選択します。資格のある企業は機能豊富なビジュアル パブリッシング システムを開発できますが、条件が限られているスタートアップは、オープン ソースまたは既存の技術コンポーネント (GitLab、Jenkins など) を使用して、比較的シンプルでありながら完全に機能する自動パブリッシング システムを実装できます。 この記事では、Spring Cloud マイクロサービス技術システムを背景に、GitLab 独自の CI/CD メカニズムと Kubernetes コンテナ化技術を使用して、比較的充実した CI/CD プロセスを備えた自動リリース システムを実装します。 CI/CD プロセスの概要 実際、DevOps はマイクロサービス アーキテクチャの普及後に登場した概念ではなく、長年のソフトウェア開発の実践を通じて業界が蓄積した理論とツールの集合体です。この記事で説明する自動リリース システムは、実際には、CI/CD パイプラインを構築することで、アプリケーションの構築、テスト、パッケージ化、リリースを効率的に自動化する方法を確立することです。 CI (継続的インテグレーション)/CD (継続的デリバリー) の概念は、特定のテクノロジーを指すのではなく、ソフトウェア エンジニアリング文化と一連の運用原則および特定のプラクティスを指します。 CI (継続的インテグレーション) の主な目的は、一貫した自動ビルド方法を確立してプログラム コードをパッケージ化することです。これにより、チーム メンバーはコードをより頻繁に送信し、コードをより早く統合し、コード内の問題を迅速に発見して解決できるため、共同開発の効率とソフトウェア配信の品質が向上します。継続的インテグレーション (CI) の基本的なプロセスを図に示します。 実装プロセスの観点から見ると、CI の主なプロセスは、開発者が送信したコードを、特定のインフラストラクチャ環境で高度に自動化された方法で実行できるプログラム パッケージ (Docker イメージなど) にパッケージ化することです。このプロセスは、GitLab Runner (CI パイプライン)、Sonar (コードチェックツール) などのツールセットによって完了することができ、CI プロセスを構築するときに実際のニーズに応じて統合および適用できます。 継続的デリバリー (CD) の主なロジックは、CI プロセスで構築されたプログラム イメージをイメージ リポジトリから特定のインフラストラクチャ環境 (テスト/本番 Kubernetes クラスターなど) に自動的に公開することです。 CD を実装するための主なツールとしては、GitLab Runner (CD パイプライン)、Helm (Kubernetes パッケージ管理ツール) などが挙げられます。 実際、CD の核心は、さまざまなユーザー入力パラメータ (yaml ファイル、環境構成パラメータなど) を通じて特定のリリース指示 (Helm 指示など) を自動的に生成し、パラメータに設定された対応する情報に従ってプログラムの特定の実行環境を構成することです。持続可能なデリバリー(CD)の基本的な運用プロセスを次の図に示します。 上記は CI/CD の基本的な概念とプロセスであり、自動リリース システムの実装の基礎でもあります。以下のコンテンツでは、主にこれら 2 つの段階に焦点を当てて、自動公開システムの基本的なプロセス ロジックを実装します。 システムの基本コンポーネント この記事で解説する自動リリースシステムは、主に GitLab が提供する GitLab CI メカニズムを利用して、コードの送信やマージなどのイベントが発生したときに、あらかじめ設定された CI/CD プロセスを自動的にトリガーします。 CI プロセスには、主に基本的なコードのコンパイル、構築、パッケージ化などの段階が含まれます。上記の手順を完了すると、パッケージ化されたアプリケーションの Docker イメージがイメージ ウェアハウスに公開されます。 CD ステージでは、イメージ リポジトリからアプリケーション Docker イメージをプルし、設定された CD プロセスに従って、指定された Kubernetes クラスターにアプリケーションを公開します。具体的なシステム構造を下図に示します。 上図に示すように、自動リリースシステムは主に GitLab、Harbor イメージ リポジトリ、Kubernetes クラスターで構成されています。 GitLab は主にコードのバージョン管理、CI/CD プロセスの定義とトリガーを担当し、Harbor はアプリケーション Docker イメージの保存と配布を担当し、Kubernetes クラスターはアプリケーション コンテナを動作させるためのインフラストラクチャ環境です。 GitLab-CI自動リリースシステムの主要実装 先ほど、GitLab-CI メカニズムに基づく自動リリース システムの基本コンポーネントについて説明しました。このシステムを実装するには、GitLabサーバーをインストールしてデプロイし、GitLab Runner機能、プライベートイメージリポジトリサービス(HarborまたはJFrog)、Kubernetesクラスターを構成する必要があります(詳細についてはこのコラムの他の記事を参照してください)。 GitLab サーバーは CI/CD プロセス実行の主なキャリア ポイントであるため、サービスが Maven に基づいて構築された Java サービスである場合は、ビルド速度を上げるために、GitLab サーバーに Maven クライアントをインストールし、Maven プライベート サーバーのアドレスを構成する必要もあります。さらに、GitLab サーバーは、CI/CD プロセス中に Docker イメージのパッケージ化とビルドを実行し、イメージを Docker イメージ リポジトリにプッシュし、プライベート リポジトリから Kubernetes クラスターに Docker イメージを公開します。したがって、GitLab サーバーには Docker 環境と kubelet クライアントもインストールする必要があります。 環境が問題なければ、Gitlab プロジェクトのルート ディレクトリ コードに「.gitlab-ci.yml」ファイルを作成し、特定の CI/CD プロセスを定義できます。ただし、具体的な定義の前に、次のように、Maven プロジェクトにアプリケーション Docker イメージ パッケージのプラグイン構成と Dockerfile ファイル定義を追加する必要があります。
プロジェクトの pom.xml ファイルに「dockerfile-maven-plugin」プラグインを追加します。このプラグインは、以前の「docker-maven-plugin」プラグインの代わりであり、Maven プロジェクト ビルドを Docker イメージとしてパッケージ化することをサポートします。上記の構成では、Dockerイメージの具体的な構築方法は、
Maven パッケージング プラグインを構成した後、Maven パッケージング コマンドを使用してアプリケーション コードを Docker イメージにパッケージ化できるようになります。この時点で、「.gitlab-ci.yml」ファイルで特定の CI/CD ビルド ステージを定義します。例は次のとおりです。
前述のように、「.gitlab-ci.yml」ファイルで「テスト、ビルド、プッシュ、デプロイ」の 4 つのステージを定義しました。これらの段階の具体的な説明は次のとおりです。
デプロイ フェーズでは、Docker イメージが公開され、Kubernetes クラスターに実行されます。これには、Kubernetes デプロイ リリース YAML ファイルの記述が含まれます。具体的な例は以下のとおりです。
すべての準備が整ったら、GitLab リポジトリにコードを送信するとビルド パイプラインが自動的にトリガーされ、パイプラインは「.gitlab-ci.yml」ファイルで定義した特定の CI/CD パイプライン ロジックを自動的に実行して、アプリケーションの自動リリースを実現します。 GitLab-CI メカニズムに基づく自動リリース システムは構築が比較的簡単で、多くの開発作業を必要としません。そのため、現在多くのスタートアップ企業がこのタイプのソリューションを使用して、マイクロサービスの自動構築と配信を実現しています。 以上がこの記事で私が伝えたいことの全てです。自動公開システムの実装原理を理解する一助になれば幸いです。 |
<<: Huawei CloudがGaussDB(DWS)リアルタイムデータウェアハウスをリリース、技術革新により業界データの価値が向上
先ほどA5 Webmaster Networkで、開設からわずか10日で百度重みが7になったという斬...
Airbnbは30億ドルの評価額で1億ドルの調達を目指す事情に詳しい関係者によると、サンフランシスコ...
最近、Baiduはさまざまなレベルで継続的にアップデートされており、多くの規則や規制が追加されていま...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン現在、中国には 7 億 2000 万人の...
昨日、ロビンはDianshiのVIPメンバーとこの非常に興味深いトピックについて話し合いました。私は...
導入ビジネス規模の継続的な拡大と技術アーキテクチャの進化により、分散システムは、高同時実行性と大量デ...
Googleが中国本土から正式に「撤退」してから5周年を迎える前夜、Googleの人気メールシステム...
世界各国の技術競争が激化する中、企業のデジタル変革の基盤となるクラウドコンピューティングは、その強力...
[元記事は51CTO.comより] 2020年以降、ローコードは業界で話題となり、資本市場と企業ユー...
Bandwagonhostは昨日、日本大阪データセンターにCN2 GIA/CTG回線を備えたVPSを...
10月に最も人気のアプリは何ですか?どの開発会社が資金援助者ですか? App Growing は、ネ...
Docker テクノロジーは、2013 年の誕生以来 4 年以上にわたって存在しています。日常の開発...
エンタープライズレベルのフルスタッククラウドICTサービスプロバイダーであるQingCloud(qi...
技術の急速な発展により、すべてのソフトウェア開発者、エンジニア、その他の技術者は、常に技術の最前線に...
本日、Host Cat は Ramnode から 128M メモリの VPS [Ramnode-VP...