第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 コンテナーおよび Java プラグインコンテナーで、Maven ツールを使用するすべてのコンテナーにあることを確認します。
デフォルトで、settings.xml
は、Maven および Java プラグインコンテナーの永続ボリューム上にある <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 オブジェクトを作成します。Secret のデータセクションに、必要な settings.xml
の内容を追加します (同じディレクトリーに存在するはずの他のファイルも含まれる可能性があります)。「シークレットをファイルとしてワークスペースコンテナーにマウントする」 に従ってこの Secret にラベルおよびアノテーションを付けます。これにより、Secret の内容はワークスペース Pod にマウントされます。この Secret を使用するには、それ以前に実行されているワークスペースをすべて再起動する必要があります。
前提条件
これは、プライベート認証情報を Maven リポジトリーに設定するために必要です。詳細は、Maven ドキュメントの Settings.xml#Servers を参照してください。
この settings.xml
をマウントするには、以下を実行します。
手順
settings.xml
を base64 に変換します。cat settings.xml | base64
$ cat settings.xml | base64
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
新規ワークスペースを起動します。
/home/jboss/.m2/settings.xml
とmaven
コンテナーの元のコンテンツが表示されます。
6.1.2.1. OpenShift 3.11 および OpenShift <1.13 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 3.11 では、同じパスに複数のボリュームマウントを含めることができないため、ボリュームのある devfile を /home/jboss/.m2
におき、シークレットを /home/jboss/.m2/settings.xml
に置くことで競合を解決できます。これらのクラスターでは、/home/jboss/.m2/repository
が devfile の maven リポジトリーのボリュームとして使用されます。
6.1.3. Maven プロジェクトでの自己署名証明書の使用 リンクのコピーリンクがクリップボードにコピーされました!
内部アーティファクトリポジトリーには、多くの場合、Java でデフォルトで信頼される認証局によって署名された証明書がありません。通常は、企業内の認証局によって署名されるか、または自己署名されます。これらの証明書を Java トラストストアに追加して、これらを受け入れるようにツールを設定します。
手順
リポジトリーサーバーからサーバー証明書ファイルを取得します。通常、管理者は内部アーティファクトサーバーの証明書を OpenShift シークレットとして提供する必要があります (https://access.redhat.com/documentation/en-us/red_hat_codeready_workspaces/2.6/html-single/installation_guide/index#importing-untrusted-tls-certificates_crw を参照してください)。関連するサーバー証明書は、ワークスペース内のすべてのコンテナーの
/public-certs
にマウントされます。元の Java トラストストアファイルをコピーします。
mkdir /projects/maven cp $JAVA_HOME/lib/security/cacerts /projects/maven/truststore.jks chmod +w /projects/maven/truststore.jks
$ mkdir /projects/maven $ cp $JAVA_HOME/lib/security/cacerts /projects/maven/truststore.jks $ chmod +w /projects/maven/truststore.jks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書の Java トラストストアファイルへのインポート
keytool -import -noprompt -file /public-certs/nexus.cer -alias nexus -keystore /projects/maven/truststore.jks -storepass changeit
$ keytool -import -noprompt -file /public-certs/nexus.cer -alias nexus -keystore /projects/maven/truststore.jks -storepass changeit Certificate was added to keystore
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
トラストストアファイルを追加します。
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