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
時間に増やしています。