3.2.21. Dynamic Configuration Manager の使用
HAProxy ルーターを Dynamic Configuration Manager を使用するように設定できます。
Dynamic Configuration Manager は、HAProxy リロードのダウンタイムなしに特定のタイプのルートをオンラインにします。これは、ルートおよびエンドポイントの addition|deletion|update など、ルートおよびエンドポイントのすべてのライフサイクルイベントを処理します。
ROUTER_HAPROXY_CONFIG_MANAGER 環境変数を true に設定して Dynamic Configuration Manager を有効にします。
$ oc set env dc/<router_name> ROUTER_HAPROXY_CONFIG_MANAGER='true'
Dynamic Configuration Manager が HAProxy を動的に設定できない場合、これは設定を再作成し、HAProxy プロセスをリロードします。これには、新規ルートにカスタムタイムアウトなどのカスタムアノテーションが含まれる場合や、ルートにカスタム TLS 設定が必要な場合などが含まれます。
動的な設定は、事前に割り当てられたルートおよびバックエンドサーバーのプールと共に HAProxy ソケットおよび設定 API を内部で使用します。ルートの事前に割り当てられたプールは、ルートのブループリントを使用して作成されます。ブループリントのデフォルトセットはセキュリティー保護のないルート、カスタム TLS 設定のないセキュリティー保護された edge ルート、および passthrough ルートをサポートします。
re-encrypt ルートにはカスタム TLS 設定情報が必要であるため、Dynamic Configuration Manager でそれらを使用するには追加の設定が必要になります。
ROUTER_BLUEPRINT_ROUTE_NAMESPACE を設定し、オプションで ROUTER_BLUEPRINT_ROUTE_LABELS 環境変数を設定することで Dynamic Configuration Manager が使用できるブループリントを拡張します。
ブループリントルート namespace のすべてのルート、またはルートラベルに一致するルートは、ブループリントのデフォルトセットに似たカスタムブループリントとして処理されます。これには、re-encrypt ルートやカスタムアノテーションを使用するルート、またはカスタム TLS 設定のあるルートが含まれます。
以下の手順では、reencrypt-blueprint、annotated-edge-blueprint、および annotated-unsecured-blueprint の 3 つのルートオブジェクトがあることを前提としています。各種のルートタイプオブジェクトについては、ルートタイプ を参照してください。
手順
新しいプロジェクトを作成します。
$ oc new-project namespace_name新規ルートを作成します。この方法では既存サービスを公開します。
$ oc create route edge edge_route_name --key=/path/to/key.pem \ --cert=/path/to/cert.pem --service=<service> --port=8443ルートにラベルを付けます。
$ oc label route edge_route_name type=route_label_1ルートオブジェクト定義から 3 つの異なるルートを作成します。すべてにラベル
type=route_label_1が付けられます。$ oc create -f reencrypt-blueprint.yaml $ oc create -f annotated-edge-blueprint.yaml $ oc create -f annotated-unsecured-blueprint.jsonまた、ブループリントルートとしての使用を防ぐラベルをルートから削除することもできます。たとえば、
annotated-unsecured-blueprintをブループリントルートとして使用されることを防ぐには、以下を実行します。$ oc label route annotated-unsecured-blueprint type-ブループリントプールに用される新規のルーターを作成します。
$ oc adm router新規ルーターの環境変数を設定します。
$ oc set env dc/router ROUTER_HAPROXY_CONFIG_MANAGER=true \ ROUTER_BLUEPRINT_ROUTE_NAMESPACE=namespace_name \ ROUTER_BLUEPRINT_ROUTE_LABELS="type=route_label_1"ラベル
type=route_label_1が設定された namespace またはプロジェクトnamespace_nameのすべてのルートはカスタムブループリントとして処理でき、使用できます。ブループリントは、namespace
namespace_nameで通常実行するようにルートを管理することによって、追加し、更新し、削除できることに注意してください。Dynamic Configuration Manager は、ルーターがroutesおよびservicesの有無を監視するのと同様の方法で namespacenamespace_nameのルートへの変更の有無を監視します。事前に割り当てられたルートおよびバックエンドサーバーのプールサイズは、
ROUTER_BLUEPRINT_ROUTE_POOL_SIZE(デフォルトは10)、およびROUTER_MAX_DYNAMIC_SERVERS(デフォルトは5) 環境変数で制御できます。また、Dynamic Configuration Manager が加える変更をディスクにコミットする頻度、つまり HAProxy 設定が再作成され、HAProxy プロセスがリロードされるタイミングを制御することもできます。デフォルトは 1 時間 (3600 秒) または Dynamic Configuration Manager のプールスペースが不足するタイミングになります。COMMIT_INTERVAL環境変数がこの設定を制御します。$ oc set env dc/router -c router ROUTER_BLUEPRINT_ROUTE_POOL_SIZE=20 \ ROUTER_MAX_DYNAMIC_SERVERS=3 COMMIT_INTERVAL=6hこの例では、各ブループリントルートのプールサイズを
20に増やし、動的サーバーの数を3に減らし、またコミット期間を6時間に増やしています。