Kubernetes ネイティブ CI/CD パイプラインの使用を開始する

Kubernetes ネイティブ CI/CD パイプラインの使用を開始する
Kubernetes 用の CI/CD を設定するのは困難です。このブログでは、著者が Devtron を使用して k8s ネイティブ CI/CD パイプラインを作成するプロセスについて説明します。

Kubernetes 用の CI/CD パイプラインの設定は複雑です。一度設定すると、チームとインフラストラクチャが急速に拡大すると、CI/CD の管理が非常に困難になる可能性があります。効率的で完全に自動化された CI/CD は、機能をより早く提供するために重要な役割を果たします。 CI/CD を活用することで、アプリケーション チームはコード ベースのベスト プラクティスを確保しながら、より迅速に機能を提供できるようになります。

このブログ記事では、Devtron を使用して CI/CD パイプラインを簡単に作成および管理する方法について説明しますが、その前に CI/CD について簡単に確認しましょう。

CI/CD とは何ですか?

CI は「継続的インテグレーション」の略で、開発者がプッシュした変更を検証およびテストするフェーズです。ここで、すべてのテスト ケース (単体テストや統合テストなど) を実行します。コードベースを検証してテストした後、このステップでソフトウェア成果物を構築できます。たとえば、コンテナ イメージをビルドすることも、バイナリ実行可能ファイルをビルドすることもできます。

CD は「継続的デリバリー」の略で、自動化されたプロセスでソフトウェア成果物を本番環境/ステージング環境にプッシュすることを意味します。この場合、コンテナ イメージをビルドしてコンテナ レジストリにプッシュした後、Devtron の助けを借りて同じイメージを Kubernetes クラスターにデプロイします。

Kubernetes ネイティブ CI/CD とは何ですか?

Kubernetes ネイティブ CI/CD は、Kubernetes クラスターの一部になることでソフトウェア配信ワークフローを活用します。 Kubernetes ネイティブの CI/CD を使用する利点は、ビルド手順がポッド内で実行され、CI 用に外部で他のコンピューティング リソースを構成したり接続したりする必要がないことです。すべてのシークレットと外部認証情報がクラスター内にあるため、セキュリティの観点からこのアプローチが推奨されます。

Kubernetes ネイティブ CI/CD と Devtron

YAML を使用してパイプラインを管理する場合は、ワークフローを記述して繰り返し更新する必要があります。 YAML を理解し、ビルド プロセスを調べ、さまざまな Linux コマンドを学習し、コードを手動でデプロイし、Kubernetes を学習することは、すべて開発者にとって困難です。彼らが求めているのは、直感的でシンプルで、ドメインの専門知識を必要としないものなのです。 Kubernetes についてあまり詳しくなくても、ビルドとデプロイメントを開発、実行、トリガーできるはずです。

これが私たちが Devtron で解決しようとしている問題です。 Kubernetes 上で CI/CD パイプラインをすばやくセットアップおよび管理するのに役立つ直感的なダッシュボードを提供します。 Devtron をインストールし、アプリケーション用の CI/CD パイプラインをいくつか設定しましょう。

Devtron のインストールについては、インストール ドキュメントを参照してください。 Devtron をインストールした後、ローカル マシンにインストールしたダッシュボード URL を取得するために Devtron サービスをポート転送します。

 kubectl -n devtroncd port-forward service/devtron-service 8000:80 &

その後、ローカルホストのポート 8080 で Devtron ダッシュボードにアクセスできるようになります。

CI/CD パイプラインをデモンストレーションするために、GitHub リポジトリで Devtron が提供する nodejs デモ アプリケーションを使用しましょう。

これが完了したら、アプリケーションのグローバル構成を設定する必要があります。グローバル設定を設定するには、ドキュメントを参照してください。

ステップ1: GitOpsを有効にする

GitOps を有効にするには、グローバル構成に移動し、任意の Git プロバイダーで認証します。私たちの場合は、GitHub を使用しました。すべての GitOps 構成に対して新しい GitHub 組織を作成することをお勧めします。

ステップ2: アプリケーションを作成する

それでは、Devtron で最初のアプリケーションの作成に移りましょう。アプリケーション名 (例: demo-application) を入力し、プロジェクト (例: devtron-demo) を割り当てて、「アプリの作成」をクリックします。

ステップ3: GitHubリポジトリとビルド構成を追加する

次のステップは、ソース コードがホストされている Git リポジトリ URL を追加することです。プライベート リポジトリからアプリケーションをデプロイする場合は、Git アカウントのドキュメントを参照してください。

リポジトリの設定が完了したら、ビルド構成を設定する必要があります。コンテナ イメージをプルおよびプッシュするには、ビルド構成が必要です。レジストリを変更して、docker、ECR、GCR などを使用できます。これは、グローバル構成のコンテナ レジストリから構成できます。

Buildpacks が統合されたので、コードから直接 OCI 準拠のコンテナ イメージを構築できるようになりました。

プラットフォーム固有のイメージをビルドする場合は、ビルド構成で行うことができます。

ステップ4: 基本展開テンプレートを構成する

基本デプロイメント テンプレートは、すべての魔法が起こる場所です。 Devtron は、Kubernetes 構成の複雑さをすべて抽象化し、テンプレートを Helm チャートにパッケージ化することで、きめ細かい構成を公開します。デプロイメント テンプレートには、本番環境レベルのマイクロサービスに必要なほぼすべての主要な構成が含まれており、基本 (GUI モード) と詳細 (YAML 構成) の 2 つの表示オプションが用意されています。

ContainerPort を構成したり、リクエストと制限のデプロイメントを設定したり、環境変数を提供したりできます。また、Devtron がデプロイメント中に使用および上書きする詳細な YAML 構成を取得できる高度なオプションもあります。以下はデプロイメント テンプレートの概要です。

事前定義されたテンプレートを少し調整するだけで、Horizo​​ntal Pod Autoscaling、Ingress、Security Context、Keda Autoscaling、ボリュームマウント、その他の Kubernetes 構成を構成できます。 Devtron のデプロイメント テンプレートを使用すると、Kubernetes 構成用の大規模な YAML ファイルを作成する必要がなくなります。

ステップ5: CI/CDパイプラインを作成してトリガーする

デプロイメント テンプレートを構成したら、CI/CD ワークフローを構築できます。継続的インテグレーションの構成に移りましょう。パイプラインを作成するさまざまな方法の詳細については、ワークフロー エディターのドキュメントをお読みください。この例では、Devtron Dashbからビルドしてデプロイします。

それでは、CI ビルド パイプラインを作成し、パイプラインの詳細を構成しましょう。 CI パイプラインでは、脆弱性スキャン、ビルド前/後のステージ、ソース タイプ用のビルド イメージ、ブランチの固定、正規表現、プル リクエストまたはタグの作成などを構成できます。

ビルド パイプラインを作成したら、デプロイメント パイプラインを作成しましょう。同じページの + アイコンを使用して、デプロイメント パイプラインを追加します。 Devtron を使用すると、シーケンシャル パイプラインでも、同じビルドから複数の環境にデプロイする場合でも、必要な数のパイプラインを作成できます。

デプロイメント パイプラインデプロイメント前/後の段階で、ローリング、再作成、ブルーグリーン、カナリアなど、すぐに使用できる統合デプロイメント戦略を構成できます。また、同じアプリケーション内の異なる環境に対して異なるデプロイメント戦略を選択することもできます。デフォルトのデプロイメント戦略「ローリング」を次の図に示します。

このブログでは、ブルーグリーン展開戦略について引き続き説明します。デプロイメント戦略の構成を確認し、ユースケースに基づいて変更を加えることができます。この構成の変更は、他のすべての展開戦略に適用されます。

CI パイプラインと CD パイプラインを構成すると、パイプライン全体は次のようになります。同じアプリケーション内で、さまざまな環境やビルド タイプに対して、異なる構成を持つ複数のワークフローを作成できます。

面白いですね! !

パイプラインが作成されたので、パイプラインをトリガーする必要があります。そのためには、[ビルドとデプロイ] セクションに移動する必要があります。

イメージをビルドするには、「マテリアルの選択」をクリックし、ビルドするイメージを選択して、「ビルドの開始」をクリックします。

ビルドが開始されると、ビルド プロセスのログをチェックでき、ビルドが成功すると、アーティファクト セクションでビルドされたイメージを確認できます。また、次の画像に示すように、ダッシュボードで必要なすべての監査情報とともに以前のビルドを確認することもできます。

デプロイメント パイプラインをトリガーしましょう。イメージ ビルド パイプラインが正常に選択されると、ページに [ビルドとデプロイ] オプションが表示されます。イメージを選択し、「デプロイ」をクリックします。デプロイメントが開始されたコミットとセキュリティの詳細を検査することもできます。デプロイメントが開始されると、Devtron は各デプロイメントのすべてのステージと K8s 構成の詳細を提供します。また、CD パイプラインでは、次の図に示すように、デプロイメントに関するすべての監査情報を取得します。

ステップ6: アプリケーションの詳細

アプリケーションをデプロイすると、アプリの詳細で表示できるようになります。ワークロードとアプリケーション メトリックに関するすべての正常性関連情報は、[アプリの詳細] タブから簡単に監視できます。

アプリケーションを正常にデプロイすると、アプリケーションに関するすべての情報を 360 度表示し、ログの表示、ターミナルでの実行、マニフェストやイベントの確認など、さまざまなポッド操作を実行できるようになります。また、複数のコンテナ ログを grep できる Logs Analyzer も付属しています。また、特定のアプリケーションに関連付けられているすべての Kubernetes リソースをグループ化して表示するので、デバッグや監視に非常に便利です。

結論は

このブログでは、Kubernetes CI/CD について学び、Devtron を使用してわずか 3 分ですべてのベスト プラクティスと GitOps を簡単に設定する方法を学びました。 Kubernetes CI/CD をすばやくセットアップする主な利点の 1 つは、コードベースの構築と継続的なテストを自動化することで、リリース プロセス全体を高速化できることです。開発者は手動でビルドやテストを行う必要がありません。高速で信頼性が高く、効率的な Kubernetes CI/CD により、より優れた製品とユーザーの満足度が向上します。

<<:  急速に台頭するクラウドデータアーキテクチャ

>>:  AWS ECS と AWS Lambda: 5 つの主な違い

推薦する

分散ファイルシステムを設計する場合、どのような点を考慮する必要がありますか?

1. 概要分散ファイルシステムは分散分野における基本的なアプリケーションであり、最も有名なものは間違...

ダブルピンインドメイン名budao.comは、アリババの元幹部とみられる買い手によって取得された。

Aimin.com からのドメイン名ニュース: 最近、ネットユーザーがフォーラムで、杭州 Budao...

ブラインドボックスは無力、ポップマート

若い消費者層が主な消費勢力となり、その特殊な消費行動により、上場当初は理解されていなかったポップマー...

ハイブリッド マルチクラウドと AI で IT アーキテクチャとビジネスを将来に備えましょう

人工知能 (AI) には、人間の意思決定を加速および拡大する力があり、ビジネス運営を劇的に改善し、重...

将来消滅するリンクの種類を予測する

諺にあるように、物事は時間とともに変化します。現在人気の Baidu ランキング手法は、アルゴリズム...

張向東:モバイルインターネット船に乗るには

記者 | 梁俊燕インターン | 李 孟陽写真 | 王昭張向東はPCインターネットの盛況には乗れなかっ...

Dockerカーネル技術の原則: 名前空間のマウント

[[411078]]前回の記事では、UTS 名前空間について紹介しました。コンテナ内の各コンテナは個...

SAP Greater Chinaは第4四半期に素晴らしい業績を達成し、2017年を華々しく締めくくりました。

SAP Greater China は本日、2017 年第 4 四半期に素晴らしい業績を達成し、ソフ...

JVMは難しいですか?あるいは、この記事を読んだばかりかもしれません。

コンセプト仮想マシン: 完全なハードウェア システム機能をシミュレートし、完全に分離された環境でソフ...

V5.net韓国cn2+bgp回線のサーバーの簡単な評価

v5.net は、韓国のソウル データ センターにある独立したサーバーを運用しています。デフォルトで...

ザクロアルゴリズムはウェブサイト広告の終焉を意味するのか?

広告はほとんどのウェブサイトが生き残るための手段の 1 つであり、一部のウェブサイトではそれが収入源...

クラウド コンピューティングが今後 1 年間で変化する 5 つの方法

調査会社 Forrester の調査レポートによると、クラウド コンピューティングはもはやまったく新...

友好的なリンク交換で見落としがちな重要な指標を分析する: PR出力値

こんな風に感じたことはありませんか。Baidu で何かや質問を検索したとき、返される結果が満足のいく...

分散ロックのウォッチドッグメカニズムの詳細な説明

今日は、Redis のウォッチドッグ メカニズムについて見ていきます。結局のところ、分散ロックを実装...

CloudOps 戦略に不可欠な 5 つのツール

CloudOps と、CloudOps 戦略に不可欠なツールについて詳しく学びます。 CloudOp...