VPC アプリケーション・ロード・バランサーのセットアップ
クラスターで Kubernetes LoadBalancer
サービスをセットアップして、アプリをパブリック・ネットワークまたはプライベート・ネットワークに公開します。 アプリを公開すると、要求をアプリに転送する VPC アプリケーション・ロード・バランサー (VPC ALB) が VPC 内のクラスターの外に自動的に作成されます。 その後、オプションで VPC ALBをDNSレコードとTLS証明書で登録 できます。 VPC ALBはTCPプロトコルのみをサポートします。
VPC 用アプリケーション・ロード・バランサーを IBM Cloud Kubernetes Service Ingress のアプリケーション・ロード・バランサーと混同しないでください。 VPC アプリケーション・ロード・バランサー (VPC ALB) は、VPC 内のクラスターの外で実行され、ユーザーが作成する Kubernetes LoadBalancer
サービスによって構成されます。 Ingress アプリケーション・ロード・バランサー (ALB) は、クラスター内部のワーカー・ノードで実行される Ingress コントローラーです。
パブリック VPC ALB またはプライベート VPC ALB のセットアップ
開始前に
- VPC ALB の Kubernetes
LoadBalancer
サービスをデプロイするネームスペースの Writer または Manager IBM Cloud IAM サービスアクセスロールが あることを確認します。 - アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
- VPC ALB を表示するには、
infrastructure-service
プラグインをインストールします。 コマンドを実行するための接頭部は、ibmcloud is
です。ibmcloud plugin install infrastructure-service
アプリが公開または非公開のリクエストを受信できるようにします:
-
アプリをクラスターにデプロイします。 デプロイメント構成ファイルの metadata セクションに、ラベルを追加しておく必要があります。 このカスタム・ラベルにより、アプリが実行されるすべてのポッドが識別されてロード・バランシングに含められます。
-
Kubernetes
LoadBalancer
サービスの構成 YAML ファイルを作成します。 YAMLファイルでは、service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type
アノテーションを"public"
または"private"
として指定します。 サンプルファイルのannotations
セクションには、使用可能な注釈がいくつかだけ含まれています。 必須およびオプションのVPC ALBアノテーションの完全なリストについては、アノテーションと仕様 を参照してください。VPC ALBを簡単に識別できるようにするには、
<app_name>-vpc-alb-<VPC_zone>
という形式でサービス名を付けることを検討してください。apiVersion: v1 kind: Service metadata: name: myloadbalancer annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "`<app_name>-vpc-alb-<VPC_zone>`" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol" service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "<public_or_private>" service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector: "<key>=<value>" 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
サービスを作成します。kubectl apply -f myloadbalancer.yaml -n <namespace>
-
クラスターに Kubernetes
LoadBalancer
サービスが正常に作成されたことを確認します。 サービスが作成されると、**「LoadBalancer Ingress」**フィールドに VPC ALB によって割り当てられたホスト名が取り込まれます。VPC ALB が VPC にプロビジョンされるまでに数分かかります。 VPC ALB のプロビジョンが完了するまで、Kubernetes
LoadBalancer
サービスのホスト名を使用してアプリにアクセスすることはできません。kubectl describe svc myloadbalancer -n <namespace>
パブリックの
LoadBalancer
サービスの CLI 出力例:NAME: myvpcalb Namespace: default Labels: <none> Annotations: Selector: app=echo-server Type: LoadBalancer IP: 172.21.XX.XX LoadBalancer Ingress: 1234abcd-us-south.lb.appdomain.cloud Port: tcp-80 80/TCP TargetPort: 8080/TCP NodePort: tcp-80 30610/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: 31438 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal EnsuringLoadBalancer 16m service-controller Ensuring load balancer Normal EnsuredLoadBalancer 15m service-controller Ensured load balancer Normal CloudVPCLoadBalancerNormalEvent 13m ibm-cloud-provider Event on cloud load balancer myvpcalb for service default/myvpcalb with UID 08cbacf0-2c93-4186-84b6-c4ab88a2faf9: The VPC load balancer that routes requests to this Kubernetes LoadBalancer service is currently online/active.
-
VPC ALB が VPC に正常に作成されたことを確認します。 出力で、VPC ALB の**「Operating Status」が
online
、「Provision Status」**がactive
であることを確認します。ibmcloud is load-balancers
以下の CLI 出力例では、
kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306
という名前の VPC ALB が KubernetesLoadBalancer
サービス用に作成されています。ID Name Family Subnets Is public Provision status Operating status Resource group r006-d044af9b-92bf-4047-8f77-a7b86efcb923 kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 Application mysubnet-us-south-3 true active online default
-
パブリックの
LoadBalancer
サービスを作成した場合は、手順 4 で確認した VPC ALB から割り当てられた KubernetesLoadBalancer
サービスのホスト名を curl します。 例:curl 06496f64-us-south.lb.appdomain.cloud:8080
出力例
Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!
プライベートの
LoadBalancer
サービスを作成した場合は、プライベート VPC ネットワークに接続しないとホスト名を curl できません。
クラスターを作成するときやワーカー・ノードをゾーンに追加するときに、クラスターに接続しているサブネットを削除しないでください。 クラスターで使用されている VPC サブネットを削除すると、そのサブネットの IP アドレスを使用しているロード・バランサーで問題が発生するだけでなく、ロード・バランサーの新規作成もできなくなる可能性があります。
Kubernetes または OpenShift クラスターに関連付けされていない VPC ALB および NLB は、'ibmcloud is' コマンドまたはコンソールの VPC Infrastructure セクションを使用して直接更新できます。 たとえば、フロントエンド・リスナーのポートやヘルスチェックのタイムアウト値を変更する。 しかし、 Kubernetes または OpenShift クラスターに結びついたVPCロードバランサーについては、Ingressコンフィギュレーションのアノテーションによって更新を行う必要がある。 IBM Cloud Providerは関連するVPCのALBやNLBと定期的に再同期し、稼働中のロードバランサーがIngressの期待するコンフィギュレーションに適合していることを確認します。 そのため、Ingressアノテーションを使わず、VPC経由で直接ロードバランサーに変更を加えると、その変更は元に戻されます。
DNS レコードおよび TLS 証明書の登録
VPC アプリケーション・ロード・バランサー (VPC ALB) は、アプリへのアクセスに使用できる 1234abcd-<region>.lb.appdomain.cloud
という形式のデフォルトの HTTP ホスト名を提供します。 しかし、HTTPS に対応するためにアプリのドメインに TLS 証明書が必要な場合は、パブリックとプライベートのどちらの VPC ALB についても、IBM 提供のサブドメインを作成したり、カスタム・ドメインを持ち込んだりできます。
VPC ALB のホスト名の DNS サブドメインを作成した後に、nlb-dns health-monitor
コマンドでカスタム・ヘルス・チェックを作成することはできません。 代わりに、デフォルトの VPC ALB のホスト名用に提供されるデフォルトの VPC ロード・バランサー・ヘルス・チェックが使用されます。 詳しくは、VPC の資料を参照してください。
開始前に
- VPC ALB をセットアップします。 VPC ALB を構成する Kubernetes
LoadBalancer
サービスに HTTPS ポートを定義するようにしてください。 - TLS 証明書を使用して HTTPS でアプリにアクセスするには、アプリが TLS 接続を終端できる必要があります。
DNS サブドメインを使用して VPC ALB のホスト名を登録するには、次のようにします。
-
get svc
コマンドを実行して、VPC ALB のホスト名を取得します。 出力の EXTERNAL-IP 列でホスト名を探します。 例えば、1234abcd-us-south.lb.appdomain.cloud
などです。kubectl get svc -o wide
出力例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR ... webserver-lb LoadBalancer 172.21.xxx.xxx 1234abcd-us-south.lb.appdomain.cloud 8080:30532/TCP 1d run=webserver
-
ロード・バランサーのホスト名の、カスタム DNS サブドメインまたは IBM 提供の DNS サブドメインを作成します。
-
カスタムドメイン :独自のカスタムドメインを指定し、ロードバランサの外部IPをCNAME (Canonical Name record)として
1234abcd-us-south.lb.appdomain.cloud
の形式で指定してエイリアスを与えます。- ドメイン・ネーム・サービス (DNS) プロバイダーを利用するか、または IBM Cloud DNS を使用して、カスタム・ドメインを登録します。
- ロードバランサの外部IPをCanonical Nameレコード(CNAME)として指定することで、カスタムドメインのエイリアスを定義します。 次の例では、
1234abcd-us-south.lb.appdomain.cloud
の外部IPを持つロードバランサーはwww.your-custom-domain.com
で到達可能です。
- ホスト/サービス
www
のように、アプリに到達させたい接頭辞を指定します。- リソース・タイプ
CNAME
を選択します。- TTL
- 生きる時間を選ぶ。
- 値/ターゲット
- 先ほど取得した LoadBalancer 外部 IP。 例えば、
1234abcd-us-south.lb.appdomain.cloud.
のように。 IBM CloudDNSを使用する場合は、必ず末尾にピリオドを入力することに注意してください。
-
IBM 提供のサブドメイン:
nlb-dns
コマンドを使用して、VPC ALB のホスト名用のサブドメインと TLS 証明書を生成します。IBM Cloud によって、サブドメインのワイルドカード TLS 証明書の生成と保守が行われます。- DNS サブドメインと TLS 証明書を作成します。
ibmcloud ks nlb-dns create vpc-gen2 --cluster <cluster_name_or_id> --lb-host <vpc_lb_hostname> --type (public|private)
- サブドメインが作成されたことを確認します。 詳しくは、サブドメインのフォーマットについてを参照してください。
出力例ibmcloud ks nlb-dns ls --cluster <cluster_name_or_id>
Subdomain Load Balancer Hostname Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["1234abcd-us-south.lb.appdomain.cloud"] None created <certificate>
- DNS サブドメインと TLS 証明書を作成します。
-
-
パブリック VPC ALB 用にサブドメインを作成した場合は、ウェブブラウザを開き、 URL を入力し て、
www.your-custom-domain.com
の例のようにサブドメイン経由でアプリにアクセスしてください。 プライベート VPC ALB のサブドメインを作成した場合は、プライベート VPC ネットワークに接続した状態で、サブドメインへのアクセスをテストする必要があります。
TLS 証明書を使用して HTTPS でアプリにアクセスするために、Kubernetes の LoadBalancer
サービスに HTTPS ポートを定義したことを確認してください。 curl -v --insecure https://<domain>
を実行すると、要求が HTTPS ポートで正しく転送されているか確認できます。 接続エラーが発生する場合、サービスで
HTTPS ポートが開いていないことを示します。 また、ご使用のアプリで TLS 接続を終了できることを確認してください。 curl -v https://<domain>
を実行すると、アプリが TLS を適切に終端するか確認できます。 証明書エラーは、アプリが TLS 接続を適切に終了していないことを示します。
プライベートVPC ALBのプライベートDNSレコードの登録
バージョン 1.28 以降では、以下のオプションアノテーションを使用して、カスタム DNS zone
を提供する独自 DNS instance
をプライベート VPC ALB に関連付けることができます。 そのためには、両方のオプションの注釈を設定しなければならない。 もし未指定の場合は、このロードバランサの hostname
プロパティに対する DNS A
レコードがパブリック
DNS ゾーン lb.appdomain.cloud
に追加されます。
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"
- このロードバランサーに関連付ける DNS
instance
を指定します。 指定されたインスタンスは、IAMポリシーに従って、異なるリージョンまたはアカウントにある可能性があります。 可能な値:9 ≤ 長さ ≤ 512 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id"
- このロードバランサーに関連付ける DNS
zone
を指定します。 指定されたゾーンは、IAMポリシーに従い、異なるリージョンまたはアカウントにある可能性がある。 可能な値:1 ≤ length ≤ 128, 値は正規表現 [1]*[a-z0-9]$ にマッチしなければならない
この機能を使用するには、事前に次のことを行う必要があります:
- ロードバランサーにバインドできるDNSゾーンを作成する
- VPC LB と DNS Services間のサービス間認証を有効にします
- クラスターのVPCをゾーンの許可ネットワークに追加する
詳しい情報は アプリケーション・ロード・バランサーをIBM Cloud DNS Servicesに統合する と DNSゾーンに許可ネットワークとしてVPCを追加する のドキュメントを参照してください。
例:
apiVersion: v1
kind: Service
metadata:
name: myloadbalancer
annotations:
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"
service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "crn:v1:bluemix:public:dns-svcs:global:a/bb1b52262f7441a586f49068482f1e60:f761b566-030a-4696-8649-cc9d09889e88::"
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "d66662cc-aa23-4fe1-9987-858487a61f45"
spec:
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 169.60.115.164
...
注釈と仕様
必須およびオプションのVPC ALBの注釈と仕様を確認する。
必要な注釈と仕様
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "alb"
- VPC ALBを作成するためのアノテーション。
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features
を含めない場合、デフォルトでVPC ALBがプロビジョニングされます。 service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private"
- (プライベートVPC ALBでは必須)パブリックまたはプライベートのリクエストを受け付けるサービスを指定するためのアノテーション。 このアノテーションが含まれていない場合、パブリックVPC ALBが作成される。
externalTrafficPolicy
- app pod を含むワーカーノードにリクエストを転送するには
Cluster
を指定します。 このワーカーノードは別のゾーンにあるかもしれない。 デフォルトでは、この注釈はCluster
に設定されている。 Local
を指定すると、受信トラフィックが別のノードに転送されるのを防ぐことができます。 このオプションは、HTTP ヘルス・チェックも構成します。- VPC ALBで元のクライアントのソースIPを使用するには、
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"
アノテーションでPROXYプロトコルを有効にする必要があることに注意してください。
オプションの注釈と仕様
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name
- VPCロードバランサーを永続化するために一意な名前を付けましょう。 永続的なVPCロードバランサーは、所属するクラスタが削除されても削除されません。 詳細については、永続的VPCロードバランサー を参照してください。 このアノテーションはロードバランサーの作成時にのみ設定できます。 更新作業では使用できない。
service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "proxy-protocol"
- PROXY プロトコルを有効にします。 ロード・バランサーは、クライアントの IP アドレス、プロキシー・サーバーの IP アドレス、両方のポート番号などのクライアント接続情報を要求ヘッダーに入れてバックエンド・アプリに渡します。 PROXY プロトコルを受け入れるようにバックエンド・アプリを構成しておく必要があります。 たとえば、 以下の手順で PROXYプロトコルを受け入れるようにNGINXアプリを設定できます。
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone
- クラスターが接続されている VPC ゾーンを指定するアノテーション。 このアノテーションでゾーンを指定すると、2つの処理が発生します:(1) VPC ALB は、ワーカーノードが接続されているゾーン内の同じサブネットにデプロイされ、(2) このゾーン内のクラスタ内のワーカーノードのみが VPC ALB からのトラフィックを受信するように設定されます。 ロード・バランサーを特定のゾーンに配置するには、ロード・バランサーを作成する際にこのアノテーションを指定する必要があります。
後でこのアノテーションを別のゾーンに変更すると、リスニングノードとバックエンドワーカーノードは新しいゾーンに合わせて自動的に更新されます。 ワーカーノードに
dedicated: edge
ラベルが設定されていて、このアノテーションを指定すると、指定されたゾーン内のエッジノードだけがトラフィックを受信するように設定されます。 他のゾーンのエッジ・ノードや、指定したゾーンの非エッジ・ノードは、ロード・バランサーからトラフィックを受信しません。 ゾーンを見るには、ibmcloud ks zone ls --provider vpc-gen2
を実行する。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets
- VPC ALB サービスがデプロイされる 1 つ以上のサブネットを指定するためのアノテーション。 指定した場合、このアノテーションは
service.kubernetes.io/ibm-load-balancer-cloud-provider-zone
アノテーションよりも優先されます。 このアノテーションがないと、クラスタがシングルゾーンからマルチゾーンに更新された場合、またはその逆の場合、VPC ALBが展開するサブネットはクラスタのゾーンに合わせて自動的に更新されます。 同じ VPC にあるサブネットで、クラスターが接続されているものとは別のサブネットを指定できることに留意してください。 その場合、VPC ALB は同じ VPC 内の別のサブネットにデプロイされますが、それでもクラスター・サブネット上のワーカー・ノードにトラフィックを転送できます。 すべてのリソース・グループのサブネットを確認するには、ibmcloud ks subnets --provider vpc-gen2 --vpc-id <vpc> --zone <zone>
を実行します。 この注釈は、既存のVPC ALBに追加または変更することができる。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector
- ワーカーノードラベルセレクタを指定するアノテーション。 ラベルセレクタキーを指定することで、クラスタ内の特定のワーカーノードがトラフィックを受信するように設定できます。 注釈に含めることができるラベルセレクタは1つだけで、セレクタは
"key=value"
形式で指定する必要があります。 このアノテーションを指定しない場合は、クラスター内のすべてのワーカー・ノードが、VPC ALB からのトラフィックを受信するように構成されます。 このアノテーションはservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone
アノテーションより優先され、ワーカーノードのdedicated: edge
ラベルは無視されます。 特定のゾーンへのトラフィックを制限するには、このアノテーションを使用して、そのゾーン内のワーカーノードを指定します。 クラスタ ワーカー ノードに新しいラベルを設定しても、ワーカー ノードが自動的にトラフィックを受信するように構成されるわけではないことに注意してください。新たにラベルを設定したワーカー ノードがトラフィックを受信できるようにするには、VPC ALB を再作成または更新する必要があります。 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
も指定されている場合にのみ適用されます。 - クラスタが Secure by Default を実行していない場合、適用されるVPCセキュリティ・グループに対して以下の修正が必要になる可能性があります。 クラスタがSecure by Defaultを実行している場合、これらの変更は自動的に適用されます。
-
- 指定された 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-vpc-idle-connection-timeout
- リスナーのアイドル接続タイムアウト(秒) 。 デフォルトのアイドルタイムアウトは、アカウント設定によって異なります。 通常、この値は
50
です。 ただし、許可リストに登録されたアカウントの中には、より大きなタイムアウト設定を持つものもある。 アノテーションを設定しないと、ロードバランサーはアカウントのタイムアウト設定を使用します。 このアノテーションを設定することで、タイムアウトを明示的に指定できます。 最小は50
です。 最大値は7200
。 service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name: "example-ingress-domain.<region>.containers.appdomain.cloud"
- バージョン 1.30 またはそれ以降。
- ロードバランサーの IP アドレスを、指定した Ingress ドメイン に登録します。 指定されたドメインが存在しない場合、内部のIBM マネージド・プロバイダ (
akamai
) を使用するドメインが作成されます。新しいドメインを作成するには、既存のすべてのドメイン(クラスタ上のドメインだけではありません)で一意な名前にする必要があります。 ロードバランサーサービスを削除すると、ドメインからIPアドレスが削除されます。 しかし、注釈を削除しても、ドメインからIPアドレスは削除されない。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-instance-crn: "private-dns-crn"
- バージョン 1.28 またはそれ以降。
- このロードバランサーに関連付ける DNS
instance
を指定します。 詳細については、プライベートDNSレコードの登録 を参照してください。 service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-private-dns-zone-id: "dns-zone-id"
- バージョン 1.28 またはそれ以降。
- このロードバランサーに関連付ける DNS
zone
を指定します。 詳細については、プライベートDNSレコードの登録 を参照してください。 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 アドレスにセキュリティグループを作成します。 これらのルールはクラスタセキュリティグループに作成され、VPC 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に設定されている外部ポートとも異なる可能性があります。
-
a-z0-9- ↩︎