第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 を使用したグローバルビルドのデフォルトの設定
通常インストール (Advanced installation) の実行時に、インベントリーファイルで設定可能な 以下のパラメーターを使用して 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 に設定します。
変更を有効にするために、マスターサービスを再起動します。
# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers
27.3. グローバルビルドの上書きの設定
グローバルビルドの上書きは以下の 2 通りの方法で設定できます。
27.3.1. Ansible を使用したグローバルビルドの上書きの設定
通常インストール (Advanced installation) の実行時に、インベントリーファイルで設定可能な以下のパラメーターを使用して 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 にある既存の容認はここに一覧されている値で上書きされます。
変更を有効にするために、マスターサービスを再起動します。
# systemctl restart atomic-openshift-master-api atomic-openshift-master-controllers