NEOで扱っているOSSの説明(Part2)~CI・CD編~
本記事では、NEOが提供するOSS(Open Source Software)について説明します。
本タイトルは、複数回に分けて掲載していきます。
※本記事は「NEOで扱っているOSSの説明」シリーズのパート1となります。
<目次>
目次[非表示]
- 1.はじめに
- 2.NEOが提供するOSS
- 3.NEOが提供するOSSの説明
- 3.1.CI/CD
- 3.1.1.CI/CDとは
- 3.1.1.1.継続的インテグレーション(CI)
- 3.1.1.2.継続的デリバリー(CD)
- 3.1.2.Jenkins
- 3.1.2.1.基本的な機能や特徴
- 3.1.2.2.NEOにおけるJenkins
- 3.1.3.Argo CD
- 3.1.3.1.GitOpsとは
- 3.1.3.2.基本的な機能や特徴
- 3.1.3.3.NEOにおけるArgo CD
- 4.参考
- 5.まとめ
はじめに
テクマトリックス 「NEO」について
NEO製品に関しては、「クラウドネイティブ内製化支援サービス:テクマトリックスNEOとは 」記事を参照ください。
NEOが提供するOSS
NEOでは、VMやKubernetesを対象に、OSSのサービスを自動構築するための様々なテンプレートを提供しております。これらのテンプレートを通じて、設計から構築まで時間を要するサービスの導入を、比較的短時間で行うことが可能です。
NEOが提供しているOSSのテンプレートは、下記のツールとなります。
本タイトルでは、下記に記載の各ソフトウェアについて紹介します。
今回ご紹介するのは「CI/CD」のOSSとなります。
- ソースコード管理
Gitlab アーティファクト管理
JFrog ArtifactoryCI/CD
Jenkins
Argo CDテスト自動化
Selenium
Serverspecリモートデスクトップ ゲートウェイ
Apache Guacamoleプロジェクト管理
Redmine
Mattermostネットワークトラフィック管理
NGINX Ingress Controller監視・モニタリング
Prometheus
Elastic Stackシークレット管理
HashiCorp Vault
NEOが提供するOSSの説明
CI/CD
CI/CDについて、NEOで提供しているOSSを紹介します。
CI/CDとは
継続的インテグレーション(CI)
継続的インテグレーション(CI)は、開発者がソースコードを定期的にソースコードリポジトリにコミットし、その後に自動化されたビルドとテストを実行する DevOps ソフトウェア開発の手法となります。
継続的デリバリー(CD)
継続的デリバリー(CD)は、ソフトウェア開発において、更新されたプログラムを実行環境へリリースする作業を自動化する仕組みを指します。
継続的インテグレーション(CI)と組み合わせて、開発プロセスの高速化をするために用いられるものとなります。
Jenkins
Jenkinsは、オープンソースの継続的インテグレーション(CI)および継続的デリバリー(CD)のツールです。ソフトウェアの開発プロセスを自動化し、開発者がコードを統合、ビルド、テスト、デプロイすることが容易になります。
Jenkinsでは、ビルド、テスト、デプロイといった一連の開発サイクルをコード化し、自動化することができます。(この仕組みを「パイプライン」と呼びます)
Jenkinsは、任意の条件をトリガーとして、用意したパイプラインをジョブとして構成して実行することで、CI/CDをはじめとしたプロセスの自動化を実現します。
基本的な機能や特徴
Jenkinsでは、代表的な機能として、下記の機能を提供しております。
- ジョブの自動実行
Jenkinsはジョブと呼ばれるタスクを定義し、任意の条件を基に自動実行することができます。ジョブはパイプラインの定義によりビルド、テスト、デプロイなど、さまざまなアクションを実行することが可能です。
ジョブの実行条件はスケジュール実行、Gitソースコードの変更、別のジョブの結果を基に開始するなど、さまざまな条件を指定することができます。
- 継続的インテグレーション(CI)
ソースコードの変更があった場合に自動的にビルドやテストをトリガーし、ソフトウェアの品質を監視することができます。コードの品質が低下した場合や、テストが失敗した場合に通知することもできます。
パイプラインのカスタマイズにより、柔軟に対応が可能です。
- 継続的デリバリー(CD)
CIのプロセスに加えて、ソフトウェアのデプロイやリリースまでの流れも管理することができます。CD用のパイプラインを構築して、CIパイプラインと連携することにより、ソフトウェアのリリースを迅速かつ信頼性のあるものにします。
- コントローラとエージェント
Jenkinsは、コントローラとエージェントという2つの主要なコンポーネントで構成される分散型の継続的インテグレーション(CI)サーバです。
コントローラ(Jenkinsマスターサーバ)
Jenkinsのコントローラは、すべてのジョブのスケジュール、ビルドの管理、ジョブの履歴、プラグインの管理などを行うJenkinsにおける管理サーバとなります。
ジョブを実行するエージェントを管理し、ジョブの実行を分散してスケーラビリティを向上させます。
ジョブはコントローラで実行されるように構成する事も可能ですが、コントローラ側の負荷を避けるため、エージェントでジョブを実行される形が一般的です。
エージェント
エージェントは、コントローラと連携してジョブを実行するJenkinsの実行エンジンです。物理サーバ、仮想マシン、コンテナなど、任意の環境をエージェントとして構成することによって、使用できます。
コントローラからの指示を受け取ってビルドやテストなどのジョブを実行します。
エージェントが複数ある場合、並列でジョブを実行できるため、CI/CDプロセスを高速化することができます。ただし、環境が増えることによって
コストも増加するため、実現したい自動化の規模に合わせて、エージェントの構成を検討することが重要になります。
- プラグインによる機能拡張
JenkinsはJavaで実装されており、プラグインを利用して機能を拡張することができます。プラグインは、1800個以上が提供されており、利用するツールに合わせて自由に機能を拡張することが出来ます。
※引用:http://www.techmatrix.co.jp/product/cisolution/index.html
NEOにおけるJenkins
NEOによって構築されるJenkinsは、以下の特徴があります。
- 仮想マシンの作成からインストールまでの初期設定
仮想マシンの作成からJenkinsインストールまでの初期設定をテンプレートから自動で行います。
NEOによって検証された構成をそのまま利用する事ができます。
- ジョブを実行するための任意の数のエージェント(仮想マシン)を構築
ジョブを実行するために必要なエージェント(仮想マシン)を、構成したい環境の規模に合わせて、任意の数を構築することが出来ます。
- マシンスペックの調整可能
Jenkinsテンプレートから環境構築実行時に、任意のマシンスペックを指定可能です。
構成したい環境の規模に合わせて、ハイスペック、またはロースペックな環境を選択出来ます。
- 各種NEOリソースとの疎通設定をデフォルトで構成
その他のNEOから構築されたリソースとの疎通設定はデフォルトで構成されます。NEOで構築したサービスとの連携を比較的容易に行うことが出来ます。
Argo CD
Argo CDは、Kubernetes環境の継続的デリバリー(CD)を行うためのツールです。
Kubernetesクラスタ上でアプリケーションのデリバリー(デプロイメント)を自動化するためのオープンソースのツールであり、Argo CDはGitOpsと呼ばれるモデルを活用しています。
GitOpsとは
GitOpsは、アプリケーションの状態と構成をGitリポジトリに定義し、そのリポジトリの状態が常にデプロイされたアプリケーションの実際の状態と一致するように自動的に調整するアプローチです。
※引用:https://argo-cd.readthedocs.io/en/stable/#architecture
基本的な機能や特徴
Argo CDでは、代表的な機能として、下記の機能を提供しております。
- 継続的デリバリー(CD)
Gitリポジトリに格納されたアプリケーションのマニフェストファイルやHelmチャートを定期的に監視し、変更があった場合に自動的にデプロイメントをトリガーします。これにより、継続的デリバリーのプロセスを自動化し、アプリケーションの迅速な展開が可能になります。
- ヘルスチェックと監視
デプロイメントされたアプリケーションのヘルスチェックや状態監視を行います。アプリケーションの健全性を自動的にチェックし、問題がある場合には適切なアクション(podの再作成など)を実行します。
- ロールバックと履歴管理
デプロイメントの履歴を保持し、任意のタイミングで過去のバージョンにロールバックすることができます。これにより、問題が発生した場合に素早く以前の安定したバージョンに戻すことができます。
- シークレット管理
Argo CD Vault Pluginや、external-secretsなどの外部機能を使用して、secretを安全に管理することが可能です。
https://argo-cd.readthedocs.io/en/stable/operator-manual/secret-management/
- ユーザー認証とアクセス制御
ユーザー認証をサポートし、アクセス制御を細かく設定することができます。セキュリティを強化し、アプリケーションのデプロイメントを安全に管理します。
- Helmチャートへの対応
Helmチャートをサポートしており、Helmリリースを自動的にデプロイおよび管理します。HelmチャートをGitリポジトリに格納し、Argo CDが監視することで、Helmチャートの変更があった場合に自動的にデプロイメントを更新することが可能です。これにより、アプリケーションの依存関係や設定を柔軟に管理できます。
NEOにおけるArgo CD
NEOによって構築されるArgo CDは、以下の特徴があります。
- EKSの作成からインストールまでの初期設定
EKSの作成からArgo CDインストールまでの初期設定の全てをテンプレートから自動で行うことができます。
NEOによって検証された構成をそのまま利用する事ができます。
- 各種NEOリソースとの疎通設定をデフォルトで構成
その他のNEOから構築されたリソースとの疎通設定はデフォルトで構成されます。NEOで構築したサービスとの連携を比較的容易に行うことが出来ます。
参考
本記事で紹介したOSS製品の参考資料のリンクです。
Jenkins
Jenkins製品ページ
Jenkinsドキュメント
Jenkins製品紹介ページ(テクマトリックスHP)
Argo CD
Argo CDドキュメント
Argo CD Vault Pluginドキュメント
External Secrets Operator
まとめ
本記事では、「CI/CD」において、テクマトリックス「NEO」が提供するOSSとその機能を紹介しました。
次回は「テスト自動化」のOSSについて紹介します。