VPC ネットワーク・ロード・バランサーのセットアップ
VPCクラスタの各ゾーンにパブリックまたはプライベートの Kubernetes LoadBalancer
サービスを設定することで、アプリをパブリックまたはプライベートネットワークに公開します。 その後、オプションで、VPC NLB を DNS レコードおよび TLS 証明書に登録します。 VPC NLBは、TCPとUDPの両方のプロトコルをサポートしています。
パブリックまたはプライベートVPC NLBの設定
クラスタの各ゾーンに Kubernetes LoadBalancer
サービスを設定することで、アプリをネットワークトラフィックにさらすことができます。 Kubernetes LoadBalancer
サービスを作成すると、アプリへのリクエストをルーティングするパブリックまたはプライベートの Network Load Balancer for VPC (VPC NLB)が、クラスタ外の VPC 内に自動的に作成されます。
開始前に
- VPC NLB の Kubernetes
LoadBalancer
サービスをデプロイするネームスペースの Writer または Manager IBM Cloud IAM サービスアクセスロールが あることを確認します。 - Red Hat OpenShift クラスターにアクセスします。
- VPC NLB を表示するには、
infrastructure-service
プラグインをインストールします。 コマンドを実行するための接頭部は、ibmcloud is
です。ibmcloud plugin install infrastructure-service
- プライベートVPC NLBの場合:VPCのVPN接続 など、VPCのプライベートネットワークに接続します。
- プライベート VPC NLB の場合: アプリがプライベート ネットワーク リクエストを受信できるようにします。
- VPC NLB専用の VPCサブネットを作成します。 このサブネットはクラスターと同じ VPC の同じロケーションに存在する必要がありますが、このサブネットをクラスターやワーカー・ノードに接続することはできません。 特定の IP 範囲を入力する場合は、
172.16.0.0/16
、172.18.0.0/16
、172.19.0.0/16
、および172.20.0.0/16
の予約済み範囲を使用しないでください。 サブネットをプロビジョニングしたら、その ID に注意してください。 - VPC NLBを経由してアプリに接続するクライアントがVPCと専用VPCサブネットのゾーン外に存在する場合、 カスタムイングレスルーティングテーブルを作成する必要があります。 詳しくは、既知の制限の表および ルーティング・テーブルおよびルートについてを参照してください。 カスタム・イングレス・ルーティング・テーブルの トラフィック・ソースとして、以下のいずれかを選択します:オンプレミスネットワークからのトラフィックには、 ダイレクトリンクを選択します。 別のVPCまたは古典的なインフラストラクチャからのトラフィックについては、トランジットゲートウェイを選択します。 同じVPC内の別のゾーンからのトラフィックについては、VPCゾーンを選択します。 詳細については、VPCのVPN接続の設定 を参照してください。
- VPC NLB専用の VPCサブネットを作成します。 このサブネットはクラスターと同じ VPC の同じロケーションに存在する必要がありますが、このサブネットをクラスターやワーカー・ノードに接続することはできません。 特定の IP 範囲を入力する場合は、
LoadBalancer
サービスの設定
-
アプリをクラスターにデプロイします。 デプロイメント構成ファイルの metadata セクションに、ラベルを追加しておく必要があります。 このカスタム・ラベルにより、アプリが実行されるすべてのポッドが識別されてロード・バランシングに含められます。
-
Kubernetes
LoadBalancer
サービスの構成 YAML ファイルを作成します。 YAMLファイルでは、service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type
アノテーションを"public"
または"private"
として指定します。 サンプルファイルのannotations
セクションには、使用可能な注釈がいくつかだけ含まれています。 必須およびオプションの VPC NLB 注釈の完全なリストについては、注釈と仕様 を参照してください。VPC NLBを簡単に識別できるようにするには、
<app_name>-vpc-nlb-<VPC_zone>
という形式でサービス名を付けることを検討してください。apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "public" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet1_ID,subnet2_ID>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster.
-
クラスターに Kubernetes
LoadBalancer
サービスを作成します。oc apply -f <filename>.yaml -n <namespace>
-
クラスターに Kubernetes
LoadBalancer
サービスが正常に作成されたことを確認します。 サービスが作成されると、VPC NLB によって割り当てられた外部 IP アドレスが **「LoadBalancer Ingress」**フィールドに取り込まれます。VPC NLB が VPC にプロビジョンされるまでに数分かかります。 VPC NLB のプロビジョンが完了するまで、Kubernetes
LoadBalancer
サービスの外部 IP アドレスがpending
になることがあります。oc describe svc myloadbalancer -n <namespace>
パブリックの
LoadBalancer
サービスの CLI 出力例:NAME: myapp-vpc-nlb-us-east Namespace: default Labels: <none> Annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb Selector: app=echo-server Type: LoadBalancer IP: 172.21.204.12 LoadBalancer Ingress: 169.XXX.XXX.XXX Port: tcp-80 80/TCP TargetPort: 8080/TCP NodePort: tcp-80 32022/TCP Endpoints: 172.17.17.133:8080,172.17.22.68:8080,172.17.34.18:8080 + 3 more... Session Affinity: None External Traffic Policy: Local HealthCheck NodePort: 30882 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning SyncLoadBalancerFailed 13m (x5 over 15m) service-controller Error syncing load balancer: failed to ensure load balancer: kube-bqcssbbd0bsui62odcdg-2d93b07decf641d2ad3f9c2985122ec1 for service default/myvpcnlb is busy: offline/create_pending Normal EnsuringLoadBalancer 9m27s (x7 over 15m) service-controller Ensuring load balancer Normal EnsuredLoadBalancer 9m20s service-controller Ensured load balancer Normal CloudVPCLoadBalancerNormalEvent 8m17s ibm-cloud-provider Event on cloud load balancer myvpcnlb for service default/myvpcnlb with UID 2d93b07d-ecf6-41d2-ad3f-9c2985122ec1: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
-
VPC NLB が VPC に正常に作成されたことを確認します。 出力で、VPC NLB の**「Operating Status」が
online
、「Provision Status」**がactive
であることを確認します。ibmcloud is load-balancers
以下の CLI 出力例では、
kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e
という名前の VPC NLB が KubernetesLoadBalancer
サービス用に作成されています。ID Name Created Host Name Is Public Listeners Operating Status Pools Private IPs Provision Status Public IPs Subnets Resource Group 06496f64-a689-4693-ba23-320959b7b677 kube-bh077ne10vqpekt0domg-046e0f754d624dca8b287a033d55f96e 8 minutes ago 1234abcd-us-south.lb.appdomain.cloud yes 95482dcf-6b9b-4c6a-be54-04d3c46cf017 online 717f2122-5431-403c-b21d-630a12fc3a5a 10.241.0.7 active 169.63.99.184 c6540331-1c1c-40f4-9c35-aa42a98fe0d9 00809211b934565df546a95f86160f62
-
手順 4 でわかった Kubernetes
LoadBalancer
サービスの IP アドレスとアプリのポートに<external_IP>:<app_port>
の形式でアクセスします。 -
オプション: これらのステップを繰り返して、アプリを公開する各ゾーンにパブリック VPC NLB をデプロイします。 その後、各ゾーン内の VPC NLB の外部 IP アドレスを 1 つの DNS サブドメインに登録できます。
クラスターを作成するときやワーカー・ノードをゾーンに追加するときに、クラスターに接続しているサブネットを削除しないでください。 クラスターで使用していた VPC サブネットを削除すると、そのサブネットの IP アドレスを使用する VPC NLB に問題が発生し、新しいロード・バランサーも作成できなくなる可能性があります。
ポートレンジを使用したパブリックNLBの設定
パブリックNLBでポートレンジを使用できるのは、複数のバックエンドアプリケーションを持つ単一のホスト名からサービスをホストする必要があり、それぞれが別々のポート番号でリッスンしている場合である。 Kubernetes クラスターでポートレンジを使用するには、いくつかの手動設定を行う必要があります。 まず、ibm-load-balancer-cloud-provider-vpc-port-range
オプションが設定されていなければなりません。 コンマで区切られた1つまたは複数の範囲を含むことができる。
spec.ports.port
の値もポート範囲の最小値に設定する必要があります。
以下の例では、30000-30010
のポート範囲を使用しています。
Nodeportサービスは、NLBサービスがリクエストを転送する各展開ごとに手動で作成する必要があります。 これらの各Nodeportサービスのポート番号は、NLBサービスに設定されているポート範囲内でなければならない。
次の図の例では、ポート 30000 の Nodeport サービスが配置 1 用に作成され、ポート 30001 の Nodeport サービスが配置 2 用に作成されています。
ユーザーは、ポート範囲を含むNLBのポート30001にリクエストを行う。 このリクエストはVPCのNLBサービスに送られ、クラスタ内のNodeportサービスにリクエストを送ります。Nodeportサービスもポート30001でリッスンしています。 そして、Nodeportサービスは、リクエストを配備2の選択されたポッドのターゲットポートに向ける。
以下の例を使用して、ポートレンジを使用するNLBを作成する。 セレクタとバックエンドポッドは、ヘルスチェックが成功を返し、データがポート範囲のポートに配信されるように、ポート範囲のロードバランサーサービスに関連付けられなければなりません。 ポート範囲を使うには、ロードバランササービスで定義されている範囲の ポート値を持つ NodePort サービスを追加で作らなければなりません。
-
以下の例の
LoadBalancer
設定をloadbalancer.yaml
というファイルとして保存します。apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-port-range: 30000-30010 name: nlb-port-range spec: externalTrafficPolicy: Cluster ports: - port: 30000 # Must match min from the port range protocol: TCP nodePort: 30011 # Can be port in range or not targetPort: 8080 selector: app: echo-server # Must be valid for health checks to work type: LoadBalancer
-
サービスを作る。
oc apply -f loadbalancer.yaml
-
先ほど作成した
LoadBalancer
で指定したポート範囲のポート値を持つNodePort
サービスを作成します。apiVersion: v1 kind: Service metadata: name: echo-server-node-port spec: ports: - port: 80 protocol: TCP # The protocol of the port range nodePort: 30003 # Node port in the port range targetPort: 8080 selector: app: echo-server type: NodePort
-
NodePort サービスを作成する。
oc apply -f nodeport.yaml
-
NLBが提供する範囲内のポートにアクセスする。
curl https://<public ip assigned to NLB>:30003
30003
= リクエストに応答する範囲内のノードポートである- 範囲内の他のポートは、追加のノード・ポート・サービスが作成されない限り、応答しない。
DNS レコードおよび TLS 証明書の登録
VPC NLB は、アプリへのアクセスに使用できる静的外部 IP アドレスを提供します。 HTTPS に対応するためにアプリ・ドメインの SSL 証明書を登録するには、IBM 提供のサブドメインを作成するか、カスタム・ドメインを持ち込みます。
例えば、マルチゾーン・クラスターがあり、そのクラスターの各ゾーンでワーカー・ノード上のアプリのレプリカを実行するとします。 ゾーンごとに1つのVPC NLBを作成し、アプリのレプリカを公開します。 その後、各 VPC NLB によって提供される外部 IP アドレスを 1 つの DNS エントリーに登録できます。
VPC NLB の DNS サブドメインを作成した後に、nlb-dns health-monitor
コマンドでカスタム・ヘルス・チェックを作成することはできません。 代わりに、デフォルトの VPC ヘルス・チェックが使用されます。 詳しくは、VPC の資料を参照してください。
- アプリのゾーンごとに1つのVPC NLBを作成します。 VPC NLB を構成する Kubernetes
LoadBalancer
サービスに HTTPS ポートを定義するようにしてください。 - HTTPS 経由でアプリケーションにアクセスするために SSL 証明書を使用するには、アプリケーションが TLS 接続を終了できる必要があります。
VPC NLB IPアドレスをDNSサブドメインに登録する手順に従ってください。
-
ロード・バランサーの外部 IP アドレスを取得します。
oc get svc -o wide
出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ... myapp-vpc-nlb-jp-tok-3 LoadBalancer 172.21.xxx.xxx 169.xx.xxx.xx 8080:30532/TCP 1d run=webserver
-
IP アドレスの、カスタム DNS サブドメインまたは IBM 提供の DNS サブドメインを作成します。
-
カスタム・ドメイン:
- ドメイン・ネーム・サービス (DNS) プロバイダーを利用するか、または IBM Cloud DNS を使用して、カスタム・ドメインを登録します。
- ロード・バランサーの IP アドレスを A レコードとして指定して、カスタム・ドメインの別名を定義します。
-
IBM 提供のサブドメイン:
nlb-dns
コマンドを使用して、IP アドレスのサブドメインおよび SSL 証明書を生成します。IBM Cloud によって、サブドメインのワイルドカード SSL 証明書の生成と保守が行われます。- DNS サブドメインと SSL 証明書を作成します。
ibmcloud oc nlb-dns create vpc-gen2 --type public --cluster <cluster_name_or_id> --ip <vpc_nlb1_ip> --ip <vpc_nlb2_ip> --ip <vpc_nlb3_ip>
- サブドメインが作成されたことを確認します。 詳しくは、サブドメインのフォーマットについてを参照してください。
出力例ibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>
Subdomain IP(s) Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud 169.46.xx.x,169.48.xxx.xx,169.48.xxx.xx None created <certificate>
- DNS サブドメインと SSL 証明書を作成します。
-
-
Web ブラウザーを開き、サブドメインを使用してアプリにアクセスするための URL を入力します。
HTTPS 経由でアプリケーションにアクセスするために SSL 証明書を使用するには、HTTPS ポートが Kubernetes LoadBalancer
サービスで定義されていることを確認してください。 curl -v --insecure https://<domain>
を実行すると、要求が HTTPS ポートで正しく転送されているか確認できます。 接続エラーが発生する場合、サービスで
HTTPS ポートが開いていないことを示します。 また、ご使用のアプリで TLS 接続を終了できることを確認してください。 curl -v https://<domain>
を実行すると、アプリが TLS を適切に終端するか確認できます。 証明書エラーは、アプリが TLS 接続を適切に終了していないことを示します。
注釈と仕様
必須およびオプションの VPC NLB 注釈と仕様を確認してください。
必要な注釈と仕様
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "nlb"
- VPC NLBを作成するためのアノテーション。 このアノテーションを含めずに
nlb
を指定すると、デフォルトでVPC ALBが作成されます。 service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
- (プライベートNLBでは必須)プライベートリクエストを受け付けるサービスを指定するためのアノテーション。 このアノテーションが含まれていない場合、パブリックVPC NLBが作成される。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets
- (プライベートNLBでは必須、パブリックNLBではオプション)VPC NLBがデプロイする専用サブネットを指定するためのアノテーション。 値には、VPC サブネット ID、VPC サブネット名、または VPC サブネット CIDR を指定できます。 サブネットは 1 つだけ指定してください。 このサブネットは、クラスターと同じ VPC 内になければならず、クラスターのワーカー・ノードが配置されたゾーンに存在する必要があります。ただし、このサブネットにワーカー・ノードを接続することはできません。
このサブネットと同じゾーンに存在するワーカー・ノードは、VPC NLB からトラフィックを受信するように構成されます。 すべてのリソース・グループのサブネットを確認するには、
ibmcloud oc subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>
を実行します。 externalTrafficPolicy
Local
またはCluster
を指定します。Local
に設定すると、クライアント要求のソース IP アドレスがアプリに保存されます。 この設定により、受信トラフィックが別のノードに転送されるのを防ぐことができる。 このオプションは、HTTP ヘルス・チェックも構成します。Cluster
に設定すると、VPC NLB が最初に着信要求を転送するワーカー・ノードからのみ DSR が実装されます。 着信リクエストが到着すると、リクエストはアプリポッドを含むワーカーノードに転送される。 アプリ・ポッドからの応答が元のワーカー・ノードに送信されると、そのワーカー・ノードが DSR を使用し、VPC NLB をバイパスして応答を直接クライアントに送信します。 このオプションは、TCP ヘルス・チェックも構成します。 UDPロードバランサーの場合、Cluster
オプションを選ぶとservice.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp
が必要になります。 詳細については、UDPロードバランサーのTCPヘルスチェックを設定する を参照してください。
オプションの注釈と仕様
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name
- VPCロードバランサーを永続化するために一意な名前を付けましょう。 永続的なVPCロードバランサーは、所属するクラスタが削除されても削除されません。 詳細については、永続的VPCロードバランサー を参照してください。 このアノテーションはロードバランサーの作成時にのみ設定できます。 更新作業では使用できない。
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone
- クラスターが接続されている VPC ゾーンを指定するアノテーション。 VPC NLB が、そのゾーンのワーカー・ノードが接続されているのと同じサブネットにデプロイされます。 後でこのアノテーションを別のゾーンに変更しても、VPC NLB は新しいゾーンに移動しません。 このアノテーションまたは
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets annotation
を指定しない場合、VPC NLBは最適なゾーン(Ready
状態のワーカーノードがあるゾーンなど)にデプロイされます。 ワーカーノードにdedicated: edge
ラベルが設定されていて、このアノテーションを指定すると、指定されたゾーン内のエッジノードだけがトラフィックを受信するように設定されます。 他のゾーンのエッジ・ノードや、指定したゾーンの非エッジ・ノードは、ロード・バランサーからトラフィックを受信しません。 ゾーンを見るには、ibmcloud ks zone ls --provider vpc-gen2
を実行する。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector
- ワーカーノードラベルセレクタを指定するアノテーション。 ラベルセレクタキーを指定することで、クラスタ内の特定のワーカーノードがトラフィックを受信するように設定できます。 注釈に含めることができるラベルセレクタは1つだけで、セレクタは
"key=value"
形式で指定する必要があります。 このアノテーションが指定されていない場合、クラスタ内のすべてのワーカーノードが VPC NLB からのトラフィックを受信するように設定されます。 このアノテーションはservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone
アノテーションより優先され、ワーカーノードのdedicated: edge
ラベルは無視されます。 特定のゾーンへのトラフィックを制限するには、このアノテーションを使用して、そのゾーン内のワーカーノードを指定します。 クラスタ ワーカー ノードに新しいラベルを設定しても、ワーカー ノードが自動的にトラフィックを受信するように構成されるわけではないことに注意してください。新しくラベルを設定したワーカー ノードがトラフィックを受信できるようにするには、VPC NLB を再作成または更新する必要があります。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-udp
- UDPロードバランサーのTCPヘルスチェックに使用するTCPノードポート。
externalTrafficPolicy
がCluster
に設定されている UDP ロード・バランサーの場合は必須。 ポート値を設定する前のその他の考慮事項については、UDP ロード・バランサーの TCP ヘルス・チェックの構成を参照してください。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol
- このアノテーションは、Kubernetes ロードバランサーサービスに関連付けられた VPC ロードバランサーリソースのヘルスチェックプロトコルを設定します。 利用可能なオプションは、
http
、https
、またはtcp
です。 通常、VPC LBのヘルスチェックプロトコルは、Kubernetes ロードバランサーサービス仕様のexternalTrafficPolicy
設定の値によって決定されます。 しかし、このアノテーションはそのロジックを上書きする。 このアノテーションは、Kubernetes および特に kube-proxy がexternalTrafficPolicy
のさまざまな設定に関してどのように動作するかを 変更しません。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port
- ヘルスチェックに使用されるTCPポート。 この注釈は、
ibm-load-balancer-cloud-provider-vpc-health-check-protocol
も指定されている場合にのみ適用されます。 指定された TCP ポートが Kubernetes ノードのポート範囲 (30,000-32,767) 外である場合、クラスタワーカーノードに適用される VPC セキュリティグループを modify して、そのポートでのインバウンドトラフィックを許可する必要があります。 このアノテーションが VPC ALB に関連付けられた Kubernetes ロードバランサーサービスに適用される場合、VPC ALB に割り当てられたセキュリティグループの送信ルールは、指定された TCP ポートへの送信トラフィックを許可するように 変更 する必要があります。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path
- HTTP、HTTPsヘルスチェック用のヘルスチェック URL パス。 この注釈は、
ibm-load-balancer-cloud-provider-vpc-health-check-protocol
がhttp
またはhttps
に設定されている場合にのみ適用されます。 URL パスは、 オリジンフォームリクエストターゲットの形式でなければならない。 このアノテーションが指定されず、ibm-load-balancer-cloud-provider-vpc-health-check-protocol
アノテーションがhttp
またはhttps
に設定されている場合は、デフォルト値/
が適用されます。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay
- オプション。 ヘルスチェックを試行するまでの待機秒数。 デフォルトでは、この値は
5
に設定され、最小値は2
、最大値は60
です。 この値はibm-load-balancer-cloud-provider-vpc-health-check-timeout
の値より大きくなければならず、デフォルトでは2
に設定されています。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout
- オプション。 ヘルスチェックの応答を待つ秒数。 デフォルトでは、この値は
2
に設定され、最小値は1
、最大値は59
です。 この値はibm-load-balancer-cloud-provider-vpc-health-check-delay
より小さくなければなりませんが、デフォルトでは5
に設定されています。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries
- VPC ロードバランサーのヘルスチェックの最大再試行回数。 デフォルトでは、この値は
2
に設定され、最小値は1
、最大値は10
です。 service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name: "example-ingress-domain.<region>.containers.appdomain.cloud"
- バージョン 4.16 またはそれ以降。
- ロードバランサーの IP アドレスを、指定した Ingress ドメイン に登録します。 指定されたドメインが存在しない場合、内部のIBM マネージド・プロバイダ (
akamai
) を使用するドメインが作成されます。新しいドメインを作成するには、既存のすべてのドメイン(クラスタ上のドメインだけではありません)で一意な名前にする必要があります。 ロードバランサーサービスを削除すると、ドメインからIPアドレスが削除されます。 しかし、注釈を削除しても、ドメインからIPアドレスは削除されない。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota
- オプション。 ロードバランサがルーティングする、ゾーンごとのワーカーノードの数。 デフォルト値は 8 です。 3つのゾーンにワーカーノードがあるクラスタの場合、ロードバランサは合計24のワーカーノードにルーティングすることになります。 ロードバランサーがルーティングする全ゾーンのワーカーノードの合計数は50を超えることはできません。 クラスタの全ゾーンのワーカーノード数が 50 未満の場合は、0 を指定してゾーン内のすべてのワーカーノードにルーティングします。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-security-group
- バージョン 1.30 以降。
- オプション。 VPCロードバランサーに追加する顧客管理のセキュリティグループ。 IBMセキュリティ・グループ を使用したくない場合は、自分が所有し管理するセキュリティ・グループを指定してください。 このオプションは、IBMセキュリティ・グループを削除し、指定したセキュリティ・グループに置き換えます。 既存のロードバランサーからアノテーションを削除すると、追加したセキュリティグループがIBMセキュリティグループに置き換わります。 この注釈はいつでも追加・削除できる。 あなたは、自分のセキュリティ・グループを管理し、最新の状態に保つ責任があります。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-allow-outbound-traffic
- Secure by Default を実行しているクラスタで使用できます。 アノテーションを使用して、指定した外部ポートに関連付けられた ALB の各 IP アドレスにセキュリティグループを作成します。 これらのルールはクラスタセキュリティグループに作成されます。
80,443
のように、有効な外部ポートをカンマ区切りで指定します。 この例では、各外部ポート値に関連付けられた各パブリックALBに2つのIPアドレスがある場合、IPアドレスごとに1つのアウトバウンドルールが作成され、合計4つの新しいルールが作成される。 この注釈はいつでも追加・削除できる。 selector
- アプリ・デプロイメント YAML の
<selector_key>
セクションで使用したラベル・キー (<selector_value>
) と値 (spec.template.metadata.labels
)。 このカスタム・ラベルにより、アプリが実行されるすべてのポッドが識別されてロード・バランシングに含められます。 port
- サービスが listen するポート。
targetPort
- オプション: サービスがトラフィックを転送する宛先ポート。 ポッド内で実行されているアプリケーションは、このターゲット・ポートで着信TCPトラフィックをリッスンしていなければならない。 ターゲット・ポートは、多くの場合、アプリケーション・ポッドで実行されているイメージで静的に定義されている。 ポッドに設定されているターゲットポートは、サービスのノードポートとは異なり、VPC LBに設定されている外部ポートとも異なる可能性があります。