11.2. Egress サービスのデプロイ
Egress サービスをデプロイして、LoadBalancer
サービスの背後にある Pod の Egress トラフィックを管理できます。
次の例では、LoadBalancer
サービスの Ingress IP アドレスと同じ送信元 IP アドレスを持つように Egress トラフィックを設定します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてログインしている。 -
MetalLB
BGPPeer
リソースを設定している。
手順
サービスに必要な IP を使用して
IPAddressPool
CR を作成します。次の例のような内容を含むファイル (
ip-addr-pool.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、IP アドレスプールの設定を適用します。
oc apply -f ip-addr-pool.yaml
$ oc apply -f ip-addr-pool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Service
CR およびEgressService
CR を作成します。次の例のような内容を含むファイル
(service-egress-service.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
LoadBalancer
サービスは、example-pool
IP アドレスプールから MetalLB によって割り当てられた IP アドレスを使用します。- 2
- この例では、
LoadBalancerIP
値を使用して、LoadBalancer
サービスの Ingress IP アドレスを Egress トラフィックの送信元 IP アドレスとして割り当てます。 - 3
LoadBalancerIP
値を指定すると、単一ノードがLoadBalancer
サービスのトラフィックを処理します。この例では、トラフィックを処理する場合にworker
ラベルが割り当てられたノードのみを選択できます。ノードが選択されると、OVN-Kubernetes はそのノードにegress-service.k8s.ovn.org/<svc-namespace>-<svc-name>: ""
という形式でラベルを付けます。
注記sourceIPBy: "LoadBalancerIP"
設定を使用する場合は、BGPAdvertisement
カスタムリソース (CR) でロードバランサーノードを指定する必要があります。次のコマンドを実行して、サービスと Egress サービスの設定を適用します。
oc apply -f service-egress-service.yaml
$ oc apply -f service-egress-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGPAdvertisement
CR を作成してサービスをアドバタイズします。次の例のような内容を含むファイル
(service-bgp-advertisement.yaml
など) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、
EgressService
CR は、ロードバランサーサービス IP アドレスを使用するように、Egress トラフィックの送信元 IP アドレスを設定します。したがって、Pod から発信されるトラフィックに同じリターンパスを使用するには、リターントラフィックのロードバランサーノードを指定する必要があります。
検証
次のコマンドを実行して、MetalLB サービスの背後で実行されている Pod のアプリケーションエンドポイントにアクセスできることを確認します。
curl <external_ip_address>:<port_number>
$ curl <external_ip_address>:<port_number>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- アプリケーションのエンドポイントに合わせて外部 IP アドレスとポート番号を更新します。
-
LoadBalancer
サービスの Ingress IP アドレスを Egress トラフィックの送信元 IP アドレスとして割り当てた場合は、tcpdump
などのツールを使用して外部クライアントで受信したパケットを分析し、この設定を確認します。