はじめに
- この記事では、以下の流れを手順を追って記載します。
- Red Hat OpenShift上にNameSpaceを作成する
- PostgresqlをDeployする
- SonarQube提供元が公開しているDockerfileを使って、SonarQubeをコンテナとしてDeploy、Postgresqlに接続してデータの永続化を実現する
記事を書いた理由
- 何気に今からやろうとしていることを一から解説してくれてた記事が無くて困ったので、これからやる人にとって役立つものとして残すため
OpenShiftにNameSpaceを作成する
- 便宜上、
NameSpace
はsonarqube
としていますが、お好きなものを設定してください。 - コマンドラインでやる場合は以下のコマンド。
oc new-project sonarqube
PostgresqlをDeployする
- 方法はおまかせします。Postgresqlのコンテナイメージを使うでもよし
- 一応、本記事ではOpenShiftで最初から用意されているTemplateを使います。
- Postgresqlのパラメータとして重要なのは以下3つになります。
- 便宜上、以下のようにしておりますが、なんらか任意の値を設定してください。
- PostgresqlコンテナがDeployできました!
SonarQubeの公式Dokcerfileを確認し、リポジトリをフォークする
- まず、DcokerHubのSonarQubeページにアクセスします。
- SourceはGitHubで公開されているので、SonarSourceにアクセスします。
- 本記事の執筆時点ではVer9とVer10が存在しているようですが、特にこだわりなければ10を選んでおきます。
- 今回はサポートなしの無料で利用するため、
Community
の中のDockerfileを使います。
- このDokcerfileをそのまま使ってSonarQubeコンテナをDeployすると、Postgresqlとの接続がされません。
- ↓こんな感じのメッセージが出てデータが永続化されない
- なので、少しいじります。リポジトリをご自身のアカウントにフォークしてください。
Dockerfileを編集する
- Postgresqlの接続先URLを確認しましょう。
- 先程DeployしたPostgresqlの
Service
リソースの詳細画面でホスト名
となっている部分を確認します。 -
ホスト名
はNameSpace
とService
の名称から機械的に決められ、今回の例ではURL形式は以下になります。
jdbc:postgresql://postgresql.sonarqube.svc.cluster.local:5432/sonarqubedb
- フォークしてきたDockerfileに以下のようにPostgresqlの接続情報を追記します。
SONAR_JDBC_URL=jdbc:postgresql://postgresql.sonarqube.svc.cluster.local:5432/sonarqubedb \
SONAR_JDBC_USERNAME=user \
SONAR_JDBC_PASSWORD=password
OpenShiftにSonarQubeコンテナをDeployする
- 再びOpenShiftの画面です。+追加 > Gitからのインポート と進みます。
- フォークしたご自身のリポジトリのClone URLをコピペしてください。
-
コンテキストディレクトリー
に、先程編集したDockerfile
が格納されているディレクトリのPathを指定します。
- すると、自動で
Dockerfile
を認識し、インポートストラテジーもDockerfile
になります。 - アプリ名 等はご自由にどうぞ!
- SonarQubeのDockerfileでは、コンテナの9000番PortでExposeしているようです。
- 故に
Targetport
を9000
と変更してください。
- 「作成」をクリック!
- DeployできたらRouteのURLをクリックしてSonarQubeのコンソールにアクセスしましょう!
- 初期の管理者ログイン情報は以下です。
- Login:
admin
- Password:
admin
- Login:
- 初期パスワード変更画面に従って、パスワードを変更してください。
- おめでとうございます!ログインできました!Posgresqlに接続されてデータの永続化もされているので、下部に警告メッセージも出ていません!