8.3.6. 入力シークレットおよび ConfigMap
シナリオによっては、ビルド操作で、依存するリソースにアクセスするための認証情報や他の設定データが必要になる場合がありますが、この情報をソースコントロールに配置するのは適切ではありません。この目的の場合は、入力シークレット および input ConfigMap を定義することができます。
たとえば、Maven を使用して Java アプリケーションをビルドする場合、プライベートキーを使ってアクセスされる Maven Central または JCenter のプライベートミラーをセットアップできます。そのプライベートミラーからライブラリーをダウンロードするには、以下を指定する必要があります。
- ミラーの URL および接続の設定が含まれる settings.xml ファイル。
- ~/.ssh/id_rsa などの、設定ファイルで参照されるプライベートキー。
セキュリティー上の理由により、認証情報はアプリケーションイメージで公開しないでください。
以下の例は Java アプリケーションについて説明していますが、/etc/ssl/certs ディレクトリー、API キーまたはトークン、ラインセンスファイルなどに SSL 証明書を追加する場合に同じアプローチを使用できます。
8.3.6.1. 入力シークレットおよび ConfigMap の追加
既存の BuildConfig
に入力シークレットおよび/または ConfigMap を追加するには、以下を行います。
ConfigMap がない場合は作成します。
$ oc create configmap settings-mvn \ --from-file=settings.xml=<path/to/settings.xml>
これにより、settings-mvn という名前の新しい ConfigMap が作成されます。 これには、settings.xml ファイルのプレーンテキストのコンテンツが含まれます。
シークレットがない場合は作成します。
$ oc create secret generic secret-mvn \ --from-file=id_rsa=<path/to/.ssh/id_rsa>
これにより、secret-mvn という名前の新規シークレットが作成されます。 これには、id_rsa プライベートキーの base64 でエンコードされたコンテンツが含まれます。
ConfigMap およびシークレットを既存の
BuildConfig
のsource
セクションに追加します。source: git: uri: https://github.com/wildfly/quickstart.git contextDir: helloworld configMaps: - configMap: name: settings-mvn secrets: - secret: name: secret-mvn
シークレットおよび ConfigMap を新規の 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 ディレクトリーに追加されます。Docker ストラテジー の場合は、宛先のディレクトリーは相対パスでなければならない点に注意してください。