第27章 グローバルビルドのデフォルトと上書きの設定
27.1. 概要
開発者はプロジェクト内の特定のビルド設定において、Git クローン作成のためのプロキシー設定などの設定を定義することができます。開発者に特定の設定をそれぞれのビルド設定で定義するように要求するのではなく、管理者が受付制御プラグインを使用して、すべてのビルドでこの設定を自動的に使用するグローバルビルドのデフォルトと上書きを設定することができます。
これらのプラグインから取得した設定は、ビルドプロセス時に使用されるだけで、ビルド設定やビルド自体で設定されません。プラグインでの設定を使用することで、管理者はグローバル設定をいつでも変更することができ、既存のビルド設定またはビルドから実行されたビルドに、新規設定が割り当てられます。
-
BuildDefaults受付制御プラグインを使用すると、管理者は Git HTTP や HTTPS プロキシーなどの設定についてのグローバルなデフォルトと、デフォルトの環境変数を設定することができます。これらのデフォルトによって、特定のビルド用に設定された値が上書きされることはありません。ただし、それらの値がビルド定義に存在しない場合は、デフォルト値に設定されます。 BuildOverrides受付制御プラグインを使用すると、管理者はビルドに保存されている値に関係なく、ビルドの設定を上書きできます。現時点では、このプラグインには、ビルド時にレジストリーからのローカルイメージが強制的に更新されるように、ビルドストラテジーのforcePullフラグを上書きするサポートがあります。更新することで、ユーザーはプル可能なイメージでしかビルドできないようにします。このプラグインは、イメージラベルセットが全ビルドイメージに適用されるように設定することも可能です。BuildOverridesの受付制御プラグインと上書き可能な値の設定に関する情報は、「グローバルビルドの上書きの手動設定」を参照してください。
デフォルトのノードセレクターおよび、BuildDefaults または BuildOverride 受付プラグインは以下のように連携されます。
-
マスター設定ファイルの
projectConfig.defaultNodeSelectorフィールドに定義されているデフォルトのプロジェクトノードセレクターは、指定のnodeSelector値なしに、全プロジェクトに作成済みの Pod に適用されます。これらの設定は、BuildDefaultsまたはBuildOverrideノードセレクターが設定されていないクラスターで、nodeSelector="null"が指定されているビルドに適用されます。 -
nodeSelector="null"パラメーターがビルド設定に設定されている場合のみ、クラスター全体のデフォルトのビルドノードセレクターadmissionConfig.pluginConfig.BuildDefaults.configuration.nodeSelectorが適用されます。nodeSelector=nullはデフォルト設定です。 デフォルトのプロジェクトまたはクラスター全体のノードセレクターの場合には、デフォルト設定がビルドのノードセレクターに AND として追加されます。このビルドのノードセレクターは、
BuildDefaultsまたはBuildOverride受付プラグインで設定されます。これらの設定は、BuildOverridesノードセレクターとプロジェクトのデフォルトノードセレクターの条件を満たすノードに対してのみ、ビルドがスケジューリングされるという意味です。注記RunOnceDuration プラグインを使用することで、ビルド Pod の実行時間のハード制限を定義できます。
27.2. グローバルビルドのデフォルトの設定
グローバルビルドのデフォルトは以下の 2 通りの方法で設定できます。
27.2.1. Ansible を使用したグローバルビルドのデフォルトの設定
クラスターのインストール時に、以下のパラメーターを使用して、BuildDefaults プラグインを設定できます。これらのパラメーターは、インベントリーファイルで設定可能です。
-
openshift_builddefaults_http_proxy -
openshift_builddefaults_https_proxy -
openshift_builddefaults_no_proxy -
openshift_builddefaults_git_http_proxy -
openshift_builddefaults_git_https_proxy -
openshift_builddefaults_git_no_proxy -
openshift_builddefaults_image_labels -
openshift_builddefaults_nodeselectors -
openshift_builddefaults_annotations -
openshift_builddefaults_resources_requests_cpu -
openshift_builddefaults_resources_requests_memory -
openshift_builddefaults_resources_limits_cpu -
openshift_builddefaults_resources_limits_memory
例27.1 Ansible を使用したビルドのデフォルトの設定例
# These options configure the BuildDefaults admission controller which injects
# configuration into Builds. Proxy related values will default to the global proxy
# config values. You only need to set these if they differ from the global proxy settings.
openshift_builddefaults_http_proxy=http://USER:PASSWORD@HOST:PORT
openshift_builddefaults_https_proxy=https://USER:PASSWORD@HOST:PORT
openshift_builddefaults_no_proxy=mycorp.com
openshift_builddefaults_git_http_proxy=http://USER:PASSWORD@HOST:PORT
openshift_builddefaults_git_https_proxy=https://USER:PASSWORD@HOST:PORT
openshift_builddefaults_git_no_proxy=mycorp.com
openshift_builddefaults_image_labels=[{'name':'imagelabelname1','value':'imagelabelvalue1'}]
openshift_builddefaults_nodeselectors={'nodelabel1':'nodelabelvalue1'}
openshift_builddefaults_annotations={'annotationkey1':'annotationvalue1'}
openshift_builddefaults_resources_requests_cpu=100m
openshift_builddefaults_resources_requests_memory=256Mi
openshift_builddefaults_resources_limits_cpu=1000m
openshift_builddefaults_resources_limits_memory=512Mi
# Or you may optionally define your own build defaults configuration serialized as json
#openshift_builddefaults_json='{"BuildDefaults":{"configuration":{"apiVersion":"v1","env":[{"name":"HTTP_PROXY","value":"http://proxy.example.com.redhat.com:3128"},{"name":"NO_PROXY","value":"ose3-master.example.com"}],"gitHTTPProxy":"http://proxy.example.com:3128","gitNoProxy":"ose3-master.example.com","kind":"BuildDefaultsConfig"}}}'27.2.2. グローバルビルドのデフォルトの手動設定
BuildDefaults プラグインを設定するには、以下の手順を実行します。
マスターノードの /etc/origin/master/master-config.yaml ファイルにプラグインの設定を追加します。
admissionConfig: pluginConfig: BuildDefaults: configuration: apiVersion: v1 kind: BuildDefaultsConfig gitHTTPProxy: http://my.proxy:8080 1 gitHTTPSProxy: https://my.proxy:8443 2 gitNoProxy: somedomain.com, otherdomain.com 3 env: - name: HTTP_PROXY 4 value: http://my.proxy:8080 - name: HTTPS_PROXY 5 value: https://my.proxy:8443 - name: BUILD_LOGLEVEL 6 value: 4 - name: CUSTOM_VAR 7 value: custom_value imageLabels: - name: url 8 value: https://containers.example.org - name: vendor value: ExampleCorp Ltd. nodeSelector: 9 key1: value1 key2: value2 annotations: 10 key1: value1 key2: value2 resources: 11 requests: cpu: "100m" memory: "256Mi" limits: cpu: "100m" memory: "256Mi"- 1
- Git リポジトリーからソースコードのクローンを作成する場合に使用する HTTP プロキシーを設定します。
- 2
- Git リポジトリーからソースコードのクローンを作成する場合に使用する HTTPS プロキシーを設定します。
- 3
- プロキシーを実行しないドメインの一覧を設定します。
- 4
- ビルド時に使用する HTTP プロキシーを設定するデフォルトの環境変数。この環境変数は、アセンブルおよびビルドの段階で依存関係をダウンロードするために使用できます。
- 5
- ビルド時に使用する HTTPS プロキシーを設定するデフォルトの環境変数。この環境変数は、アセンブルおよびビルドの段階で依存関係をダウンロードするために使用できます。
- 6
- ビルド時にビルドのログレベルを設定するデフォルトの環境変数。
- 7
- すべてのビルドに追加されるその他のデフォルトの環境変数。
- 8
- すべてのイメージビルドに適用されるラベル。このラベルは
BuildConfigで上書きできます。 - 9
- ビルド Pod は
key1=value2およびkey2=value2のラベルが付いたノード上でのみ実行されます。ユーザーは、これらの値が無視される場合に、ビルドに対して異なるnodeSelectorsセットを定義することができます。 - 10
- ビルド Pod にはこれらのアノテーションが追加されます。
- 11
BuildConfigに関連リソースが定義されていない場合は、デフォルトのリソースをビルド Pod に設定します。
変更を有効にするために、マスターサービスを再起動します。
# master-restart api # master-restart controllers
27.3. グローバルビルドの上書きの設定
グローバルビルドの上書きは以下の 2 通りの方法で設定できます。
27.3.1. Ansible を使用したグローバルビルドの上書きの設定
クラスターのインストール時に、以下のパラメーターを使用して、BuildOverrides プラグインを設定できます。これらのパラメーターは、インベントリーファイルで設定可能です。
-
openshift_buildoverrides_force_pull -
openshift_buildoverrides_image_labels -
openshift_buildoverrides_nodeselectors -
openshift_buildoverrides_annotations -
openshift_buildoverrides_tolerations
例27.2 Ansible を使用したビルドの上書きの設定例
# These options configure the BuildOverrides admission controller which injects
# configuration into Builds.
openshift_buildoverrides_force_pull=true
openshift_buildoverrides_image_labels=[{'name':'imagelabelname1','value':'imagelabelvalue1'}]
openshift_buildoverrides_nodeselectors={'nodelabel1':'nodelabelvalue1'}
openshift_buildoverrides_annotations={'annotationkey1':'annotationvalue1'}
openshift_buildoverrides_tolerations=[{'key':'mykey1','value':'myvalue1','effect':'NoSchedule','operator':'Equal'}]
# Or you may optionally define your own build overrides configuration serialized as json
#openshift_buildoverrides_json='{"BuildOverrides":{"configuration":{"apiVersion":"v1","kind":"BuildOverridesConfig","forcePull":"true","tolerations":[{'key':'mykey1','value':'myvalue1','effect':'NoSchedule','operator':'Equal'}]}}}'27.3.2. グローバルビルドの上書きの手動設定
BuildOverrides プラグインを設定するには、以下の手順を実行します。
マスターの /etc/origin/master/master-config.yaml ファイルにプラグインの設定を追加します。
admissionConfig: pluginConfig: BuildOverrides: configuration: apiVersion: v1 kind: BuildOverridesConfig forcePull: true 1 imageLabels: - name: distribution-scope 2 value: private nodeSelector: 3 key1: value1 key2: value2 annotations: 4 key1: value1 key2: value2 tolerations: 5 - key: mykey1 value: myvalue1 effect: NoSchedule operator: Equal - key: mykey2 value: myvalue2 effect: NoExecute operator: Equal- 1
- ビルドの開始前に、すべてのビルドがビルダーイメージとソースイメージをプルするよう強制的に実行します。
- 2
- すべてのイメージビルドに適用される追加のラベル。ここで定義されたラベルは
BuildConfigで定義されたラベルよりも優先されます。 - 3
- ビルド Pod は
key1=value2およびkey2=value2のラベルが付けられたノード上でのみ実行されます。ユーザーはキー/値のラベルを追加定義して、ビルドが実行されるノードのセットをさらに制限することができます。ただし、ノードには少なくともこれらのラベルを付ける必要があります。 - 4
- ビルド Pod にはこれらのアノテーションが追加されます。
- 5
- ビルド Pod にある既存の容認はここに一覧されている値で上書きされます。
変更を有効にするために、マスターサービスを再起動します。
# master-restart api # master-restart controllers

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.