第6章 制限された環境でのアーティファクトリポジトリーの使用
本セクションでは、自己署名証明書を使用して、インハウスリポジトリーのアーティファクトと連携するようにさまざまなテクノロジースタックを手動で設定する方法を説明します。
6.1. Maven アーティファクトリポジトリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Maven は 2 つの場所に定義されたアーティファクトをダウンロードします。
-
プロジェクトの
pom.xmlファイルで定義されるアーティファクトリポジトリー。pom.xmlでのリポジトリーの設定は Red Hat CodeReady Workspaces に固有のものではありません。詳細は、POM に関する Maven のドキュメントを参照し てください。 -
settings.xmlファイルで定義されるアーティファクトリポジトリー。デフォルトでは、settings.xmlは'~/.m2/settings.xml" にあります。
6.1.1. settings.xmlでのリポジトリーの定義 リンクのコピーリンクがクリップボードにコピーされました!
example.server.org で独自のアーティファクトリポジトリーを指定するには、settings.xml ファイルを使用します。これには、settings.xml が Maven ツールを使用するすべてのコンテナー(特に Maven コンテナーおよび Java プラグインコンテナー)にあることを確認します。
デフォルトでは、settings.xml は Maven プラグインコンテナーの永続ボリューム上にある <home dir>/.m2 ディレクトリーにあり、一時モードにない場合はワークスペースを再起動するたびにファイルを再作成する必要はありません。
Maven ツールを使用する別のコンテナーがあり、このコンテナーと <home dir>/.m2 フォルダーを共有する場合は、devfile でこの特定のコンポーネントのカスタムボリュームを指定する必要があります。
手順
example.serverします。.org でアーティファクトリポジトリーを使用するように settings.xml ファイルを設定Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. ワークスペース全体にまたがる Maven settings.xml ファイルの定義 リンクのコピーリンクがクリップボードにコピーされました!
すべてのワークスペースで独自の settings.xml ファイルを使用するには、ワークスペースと同じプロジェクトに Secret オブジェクト(希望の名前)を作成します。必要な settings.xml の内容を Secret の data セクションに配置します(同じディレクトリーに存在する必要のある他のファイルとともに該当する可能性があります)。ファイルまたは環境変数をワークスペースコンテナーにマウントすることで、シークレットのラベル付けおよびこのシークレットにアノテーションを付けます。これにより、Secret の内容がワークス ペース Pod にマウントされるようにします。この Secret を使用するには、以前に実行したワークスペースを再起動する必要があります。
前提条件
これは、プライベート認証情報を Maven リポジトリーに設定するために必要です。詳細は、Maven ドキュメント Settings.xml#Servers を参照してください。
この settings.xml をマウントするには、以下を実行します。
手順
settings.xmlを base64 に変換します。cat settings.xml | base64
$ cat settings.xml | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なアノテーションおよびラベルも定義する新規ファイル
secret.yamlに出力をコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このシークレットをクラスターに作成します。
oc apply -f secret.yaml
$ oc apply -f secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
新しいワークスペースを開始します。Maven コンテナーには、元のコンテンツと共に
/home/user/.m2/settings.xmlが表示されます。
6.1.2.1. OpenShift 3.11 および OpenShift <1.13 リンクのコピーリンクがクリップボードにコピーされました!
1.13 よりも古いバージョンの OpenShift では、複数の VolumeMounts が同じパスに配置することができません。したがって、devfile のボリューム /home/user/.m2 および /home/user/.m2/settings.xml でシークレットを設定すると競合に解決されます。これらのクラスターでは、devfile の Maven リポジトリーのボリュームとして /home/user/.m2/repository を使用します。
6.1.3. Java プロジェクトでの自己署名証明書の使用 リンクのコピーリンクがクリップボードにコピーされました!
内部アーティファクトリポジトリーには、Java ではデフォルトで信頼される認証局によって署名された証明書がありません。通常は、内部企業の認証局によって署名されるか、自己署名されます。Java トラストストアに追加して、これらの証明書を受け入れるツールを設定します。
手順
リポジトリーサーバーからサーバー証明書ファイルを取得します。多くの場合、これは
tls.crtという名前のファイルです。Java トラストストアファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
/projects/maven/truststore.jksにトラストストアファイルをアップロードして、すべてのコンテナーで利用できるようにします。
トラストストアファイルを追加します。
Maven コンテナーで以下を行います。
javax.net.sslシステムプロパティーをMAVEN_OPTS環境変数に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ワークスペースを再起動します。
Java プラグインコンテナーで以下を行います。
devfile に、Java 言語サーバーの
javax.net.sslシステムプロパティーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow