3.6. 入力シークレットおよび設定マップ
シナリオによっては、ビルド操作で、依存するリソースにアクセスするための認証情報や他の設定データが必要になる場合がありますが、この情報をソースコントロールに配置するのは適切ではありません。この目的で input secrets および input config mapsを定義することができます。
たとえば、Maven を使用して Java アプリケーションをビルドする場合、プライベートキーを使ってアクセスされる Maven Central または JCenter のプライベートミラーをセットアップできます。そのプライベートミラーからライブラリーをダウンロードするには、以下を指定する必要があります。
- ミラーの URL および接続の設定が含まれる settings.xml ファイル。
- ~/.ssh/id_rsa などの、設定ファイルで参照されるプライベートキー。
セキュリティー上の理由により、認証情報はアプリケーションイメージで公開しないでください。
以下の例は Java アプリケーションについて説明していますが、/etc/ssl/certs ディレクトリー、API キーまたはトークン、ラインセンスファイルなどに SSL 証明書を追加する場合に同じ方法を使用できます。
3.6.1. 入力シークレットおよび設定マップの追加
シナリオによっては、ビルド操作で、依存するリソースにアクセスするための認証情報や他の設定データが必要になる場合がありますが、この情報をソースコントロールに配置するのは適切ではありません。この目的で input secrets および input config mapsを定義することができます。
手順
既存の BuildConfig
オブジェクトに入力シークレットおよび/または設定マップを追加するには、以下を行います。
ConfigMap
オブジェクトがない場合はこれを作成します。$ oc create configmap settings-mvn \ --from-file=settings.xml=<path/to/settings.xml>
これにより、settings-mvn という名前の新しい設定マップが作成されます。これには、settings.xml ファイルのプレーンテキストのコンテンツが含まれます。
Secret
オブジェクトがない場合はこれを作成します。$ oc create secret generic secret-mvn \ --from-file=id_rsa=<path/to/.ssh/id_rsa>
これにより、secret-mvn という名前の新規シークレットが作成されます。 これには、id_rsa プライベートキーの base64 でエンコードされたコンテンツが含まれます。
設定マップおよびシークレットを既存の
BuildConfig
オブジェクトのsource
セクションに追加します。source: git: uri: https://github.com/wildfly/quickstart.git contextDir: helloworld configMaps: - configMap: name: settings-mvn secrets: - secret: name: secret-mvn
シークレットおよび設定マップを新規の BuildConfig
オブジェクトに追加するには、以下のコマンドを実行します。
$ oc new-build \ openshift/wildfly-101-centos7~https://github.com/wildfly/quickstart.git \ --context-dir helloworld --build-secret “secret-mvn” \ --build-config-map "settings-mvn"
ビルド時に、settings.xml および id_rsa ファイルはソースコードが配置されているディレクトリーにコピーされます。OpenShift Container Platform S2I ビルダーイメージでは、これはイメージの作業ディレクトリーで、Dockerfile の WORKDIR
の指示を使用して設定されます。別のディレクトリーを指定するには、destinationDir
を定義に追加します。
source: git: uri: https://github.com/wildfly/quickstart.git contextDir: helloworld configMaps: - configMap: name: settings-mvn destinationDir: ".m2" secrets: - secret: name: secret-mvn destinationDir: ".ssh"
新規の BuildConfig
オブジェクトの作成時に、宛先のディレクトリーを指定することも可能です。
$ oc new-build \ openshift/wildfly-101-centos7~https://github.com/wildfly/quickstart.git \ --context-dir helloworld --build-secret “secret-mvn:.ssh” \ --build-config-map "settings-mvn:.m2"
いずれの場合も、settings.xml ファイルがビルド環境の ./.m2 ディレクトリーに追加され、id_rsa キーは ./.ssh ディレクトリーに追加されます。