28.7. サービスの外部 IP を使用した Ingress クラスタートラフィックの設定
MetalLB 実装または IP フェイルオーバーデプロイメントのいずれかを使用して、ExternalIP リソースをサービスに接続し、OpenShift Container Platform クラスター外部のトラフィックでそのサービスを利用できるようにすることができます。この方法で外部 IP アドレスをホストすることは、ベアメタルハードウェアにインストールされたクラスターにのみ適用されます。
トラフィックをサービスにルーティングするには、外部ネットワークインフラストラクチャーを正しく設定する必要があります。
28.7.1. 前提条件
クラスターが ExternalIP が有効にされた状態で設定されている。詳細は、サービスの ExternalIP の設定 を参照してください。
注記Egress IP に同じ ExternalIP を使用しないでください。
28.7.2. ExternalIP のサービスへの割り当て
サービスに ExternalIP リソースを割り当てることができます。リソースをサービスに自動的に割り当てるようにクラスターを設定した場合は、ExternalIP をサービスに手動でアタッチする必要がない場合があります。
この手順の例では、IP フェイルオーバー設定を持つクラスター内のサービスに ExternalIP リソースを手動で割り当てるシナリオを使用します。
手順
CLI で次のコマンドを実行して、ExternalIP リソースの互換性のある IP アドレス範囲を確認します。
$ oc get networks.config cluster -o jsonpath='{.spec.externalIP}{"\n"}'
注記autoAssignCIDRs
が設定されていて、ExternalIP リソースのspec.externalIPs
の値を指定していないと、OpenShift Container Platform は新しいService
オブジェクトに ExternalIP を自動的に割り当てます。サービスに ExternalIP リソースを割り当てるには、次のいずれかのオプションを選択します。
新しいサービスを作成する場合は、
spec.externalIPs
フィールドに値を指定し、allowedCIDRs
パラメーターに 1 つ以上の有効な IP アドレスの配列を指定します。ExternalIP リソースをサポートするサービス YAML 設定ファイルの例
apiVersion: v1 kind: Service metadata: name: svc-with-externalip spec: externalIPs: policy: allowedCIDRs: - 192.168.123.0/28
ExternalIP を既存のサービスに割り当てる場合は、以下のコマンドを入力します。
<name>
をサービス名に置き換えます。<ip_address>
を有効な ExternalIP アドレスに置き換えます。コンマで区切られた複数の IP アドレスを指定できます。$ oc patch svc <name> -p \ '{ "spec": { "externalIPs": [ "<ip_address>" ] } }'
以下に例を示します。
$ oc patch svc mysql-55-rhel7 -p '{"spec":{"externalIPs":["192.174.120.10"]}}'
出力例
"mysql-55-rhel7" patched
ExternalIP アドレスがサービスに割り当てられていることを確認するには、以下のコマンドを入力します。新規サービスに ExternalIP を指定した場合、まずサービスを作成する必要があります。
$ oc get svc
出力例
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-55-rhel7 172.30.131.89 192.174.120.10 3306/TCP 13m