はじめに
こんにちは、Red Hat のコンサルタントの陳です。今回は、Red Hat Developer Sandbox を利用し、GitOps の開発を簡単に試せる手順をご紹介します。より実践的な内容で OpenShift の魅力を感じていただければと思います。
目次
- Red Hat Developer Sandbox とは?
- GitOps とは?
- このブログで得られるもの
- リポジトリの紹介
- 仕組みの紹介
- 実施手順
- おわりに
1. Red Hat Developer Sandboxとは?
Red Hat Developer Sandboxは、誰でも無料で手軽にOpenShiftを体験できるクラウドベースの環境です。これを利用することで、インフラの設定や管理に煩わされることなく、すぐにアプリケーションの開発やデプロイを始めることができます。
2. GitOpsとは?
GitOps は、Git リポジトリを信頼できる唯一の情報源として使用し、インフラストラクチャをコードとして提供します。登録されたコードは CI プロセスでチェックされ、CD プロセスではセキュリティやコードとしてのインフラストラクチャなど、アプリケーションフレームワークに設定された境界線に関する要件がチェックおよび適用されます。コードの変更はすべて追跡されるため、アップデートが容易になると同時に、ロールバックが必要な場合のバージョン管理も可能です。
3. この記事で得られるもの
- Red Hat Developer Sandboxの使い方
- GitOpsの基本概念とその利点への理解
- OpenShift上のパイプラインの構築方法
- 各種マニフェストの記述方法
- StorybookやSonarqubeなどのツールの使い方
4. リポジトリの紹介
今回使用するリポジトリは以下の二つです:
red-hat-developer-sandbox-apps
こちらのリポジトリでは、以下のものが格納されています。- 各種アプリケーションのソースコード
- ローカルでアプリケーションをデプロイするためのDockerファイル
red-hat-developer-sandbox-manifest
こちらのリポジトリでは、以下のものを格納します。- 各種リソースのマニフェストファイル
アプリケーションのコードとマニフェストを分離することで、運用や管理が容易になります。
分離の利点
変更の管理 アプリケーションのコードとマニフェストが別々のリポジトリに配置されているため、変更の影響範囲を明確に分けることができます。例えば、アプリケーションのアップデートとインフラの変更がそれぞれ独立して行えます。
チームの役割分担 開発チームと運用チームがそれぞれのリポジトリを担当することで、役割分担が明確になります。開発者はアプリケーションのコードに集中し、運用チームはインフラストラクチャの管理に集中できます。
5. 仕組みの紹介
アプリケーション
- sample-app: quarkus で開発したAPI、sonarqube 連携の設定が入っています
- sample-view: nextjs で開発した画面、sonarqube 連携の設定が入っています、storybook を起動できます
- test-reports: パイプラインで実施した各種テストのレポートをまとめて表示するもので、nodejs で書いた簡単な web サーバー
- e2e: Playwright で実現した End To End Test、sample-view の画面を開いて、ボタンクリックして、sample-app に api 呼び出し、取ってきたレスポンスを画面に正しく表示できるかチェック
- integration-test: API のプロセスにリクエストを投げるような結合テスト
マニフェスト
- gitops-pipeline: こちらのマニフェストを最初に手動で openshift にデプロイします。本来は Openshift GitOps(ArgoCD) を使うべきですが、Sandboxの制限で使えませんでした。代わりに、マニフェストを適用するパイプラインを作成しました。
- apps-pipeline: こちらのマニフェストは gitops-pipeline によってデプロイされます。その中で CI を行います。
build-and-push-sample-app-image で git commit の hash 値をアプリケーションのイメージタグにして registry に push した後、そのタグを update-sample-app-image-tag-in-repo-it で apps にある it 環境のマニフェストを更新して、git push することで、gitops-pipeline が実行され、it 環境に最新のイメージがデプロイされます。
ほかに、sonarqubeやtest-reportをデプロイするためのマニフェストも入っています。 - apps: ここに、アプリケーションをデプロイするためにマニフェストが保存されています。
6. 実施手順
手順はこちらに纏めました。
7. おわりに
これで、Red Hat Developer Sandbox を使った GitOps 開発パイプラインの設定が完了しました。この環境を活用することで、OpenShiftの強力な機能を体験し、すこしでも OpenShift に興味を持っていただければと思います。