NLB の DNS サブドメインの登録
クラシック・インフラストラクチャー
この内容は、クラシック・クラスターの NLB に固有のものです。 VPC クラスターについては、DNS サブドメインへの VPC ロード・バランサーのホスト名の登録を参照してください。
ネットワーク・ロード・バランサー (NLB) をセットアップした後、サブドメインを作成して、NLB IP の DNS エントリーを作成できます。 また、TCP/HTTP(S) モニターをセットアップして、各サブドメインの背後にある NLB IP アドレスのヘルス・チェックを行うこともできます。
- サブドメイン
- 単一ゾーンまたは複数ゾーンのクラスターでパブリック NLB を作成すると、NLB IP アドレスのサブドメインを作成して、インターネットにアプリを公開できます。 また、IBM Cloud によって、サブドメインのワイルドカード SSL 証明書の生成と保守が行われます。 複数ゾーンのクラスターで、サブドメインを作成し、各ゾーンでそのサブドメインの DNS エントリーに NLB IP アドレスを追加できます。 例えば、米国南部の 3 つのゾーンでアプリの NLB をデプロイした場合は、3
つの NLB IP アドレスに対してサブドメイン
mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloudを作成できます。 ユーザーがアプリのサブドメインにアクセスすると、クライアントがこれらの IP のいずれかにランダムにアクセスし、要求が NLB に送信されます。
現在、プライベート NLB のサブドメインを作成することはできません。
- ヘルス・チェック・モニター
- 単一のサブドメインの背後にある NLB IP アドレスに対するヘルス・チェックを有効にして、IP アドレスが使用可能かどうかを判別します。 サブドメインのモニターを有効にすると、モニターによって各 NLB IP がヘルス・チェックされ、そのヘルス・チェックに基づいて DNS 参照の結果が最新の状態に保たれます。 例えば、NLB IP アドレスが
1.1.1.1、2.2.2.2、3.3.3.3である場合、サブドメインの DNS 参照の通常の動作では、3 つの IP がすべて返され、クライアントはそのうちの 1 つにランダムにアクセスします。 IP アドレスが3.3.3.3の NLB がゾーンの障害などの理由で使用不可になると、その IP のヘルス・チェックが失敗し、モニターは障害のある IP をサブドメインから削除し、DNS 参照では正常な1.1.1.1および2.2.2.2の IP のみが返されます。
クラスター内の NLB IP に登録されているすべてのサブドメインを表示するには、以下のコマンドを実行します。
ibmcloud ks nlb-dns ls --cluster <cluster_name_or_id>
DNS マイクロサービスの更新は非同期であり、適用されるまでに数分かかる場合があります。 ibmcloud ks nlb-dns コマンドを実行して 200 確認メッセージを受け取っても、変更が実装されるまでさらに待機する必要がある場合があります。 サブドメインの状況を確認するには、ibmcloud ks nlb-dns ls を実行し、出力で Status 列を見つけます。
DNS サブドメインへの NLB IP の登録
ネットワーク・ロード・バランサー (NLB) IP アドレスのサブドメインを作成して、アプリをパブリック・インターネットに公開します。
始める前に
- 以下の制限を確認してください。
- プライベート NLB のサブドメインは作成できません。
- 最大 128 台のサブドメインを登録できます。 この制限は、サポート Caseを開いて、要求によって解除できます。
- 単一ゾーン・クラスターでアプリの NLB を作成するか、複数ゾーン・クラスターの各ゾーンで NLB を作成します。
1 つ以上の NLB IP アドレスのサブドメインを作成するには、以下のようにします。
-
NLB の EXTERNAL-IP アドレスを取得します。 アプリを公開する複数ゾーン・クラスターの各ゾーンに NLB がある場合は、各 NLB の IP を取得します。
kubectl get svc以下の出力例では、NLB EXTERNAL-IP は
168.2.4.5および88.2.4.5です。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lb-myapp-dal10 LoadBalancer 172.21.xxx.xxx 168.2.4.5 1883:30303/TCP 6d lb-myapp-dal12 LoadBalancer 172.21.xxx.xxx 88.2.4.5 1883:31303/TCP 6d -
DNS サブドメインを作成することによって、この IP を登録します。 複数のIPアドレスを指定するには、複数の
--ip。ibmcloud ks nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> -
サブドメインが作成されたことを確認します。
ibmcloud ks nlb-dns ls --cluster <cluster_name_or_id>出力例
Hostname IP(s) Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["168.2.4.5"] None created <certificate> -
オプション: 前の手順で作成した IBM 提供のサブドメインを指すようにカスタム・ドメインをセットアップします。
- ドメインネームサービス(DNS)プロバイダーと協力してカスタムドメインを登録します。
- IBM Cloud DNS 使用してカスタムドメインを登録します。
ロードバランサーの設定で
service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-nameアノテーションを使ってカスタムドメインを登録することもできます。 -
IBM 提供サブドメインを正規名レコード (CNAME) として指定することで、カスタム・ドメインの別名を定義します。
-
Web ブラウザーに、作成したサブドメインによってアプリにアクセスする URL を入力します。
サブドメインのフォーマットについて
NLB のサブドメインは、<cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud の形式に従います。
例えば、NLB に作成したサブドメインが mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud のようになります。 以下の表で、サブドメインの各構成要素について説明します。
| NLB のサブドメインの構成要素 | 説明 |
|---|---|
* |
クラスターには、サブドメインのワイルドカードがデフォルトで登録されます。 |
<cluster_name> |
クラスターの名前。- クラスター名が 26 文字以下で、そのリージョンで一意である場合は、クラスター名全体が含まれ、変更されません:
|
<globally_unique_account_HASH> |
IBM Cloud アカウントにグローバルに一意のハッシュが作成されます。 アカウントのクラスター内で NLB に作成したすべてのサブドメインは、このグローバルに一意のハッシュを使用します。 |
0001 |
作成するサブドメインごとにカウンターとして機能します。 |
<region> |
クラスターが作成されたリージョン。 |
containers.appdomain.cloud |
IBM Cloud Kubernetes Service のサブドメインのサブドメイン。 |
ヘルス・モニターを作成して、サブドメインに対するヘルス・チェックを有効にする
単一のサブドメインの背後にある NLB IP アドレスに対するヘルス・チェックを有効にして、IP アドレスが使用可能かどうかを判別します。
Calico プレ DNAT ネットワーク・ポリシー、 VPC セキュリティ・グループ、 VPC アクセス制御リスト(ACL)、またはその他のカスタム・ファイアウォール・ソリューションを使用して、Ingress またはルーター・サービスへの受信トラフィックをブロックする場合は、ヘルス・モニタリング・エンドポイントからの受信トラフィックを許可する必要があります。 詳細については、 Ingressサブドメイン監視のためのネットワーク・トラフィックの受信許可に関するドキュメントを 参照してください。
開始する前に、DNS サブドメインに NLB IP を登録します。
-
サブドメインを取得します。 出力では、ホストのモニターの Status が
Unconfiguredになっています。ibmcloud ks nlb-dns monitor ls --cluster <cluster_name_or_id>出力例
Hostname Status Type Port Path mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud Unconfigured N/A 0 N/A -
サブドメインのヘルス・チェック・モニターを作成します。 構成パラメーターを指定しない場合は、デフォルト値が使用されます。
ibmcloud ks nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --enable --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>-c, --cluster <cluster_name_or_ID>- 必須: サブドメインが登録されているクラスターの名前または ID。
--nlb-host <host_name>- 必須: ヘルス・チェック・モニターを有効にするサブドメイン。
--enable- サブドメインの新しいヘルスチェックモニタを有効にするには、このオプションを含めます。
--type <type>- ヘルス・チェックに使用するプロトコル:
HTTP、HTTPS、またはTCP。 デフォルト:HTTP。 --path <path>typeがHTTPSの場合: ヘルス・チェックの対象となるエンドポイント・パス。 デフォルト:/--timeout <timeout>- IP が到達不能と見なされるまでのタイムアウト (秒)。 ヘルス・チェックは、IP への到達を再度試行する前に、
intervalパラメーターで指定された秒数待機します。 値は1~60の範囲の整数でなければならない。 デフォルト:5 --interval <interval>- 各ヘルス・チェックの間隔 (秒)。 間隔を短くすると、フェイルオーバーの時間が改善される場合がありますが、IP の負荷が増える場合があります。 値は60~300の範囲の整数でなければならない。 デフォルト:
60。 --port <port>- ヘルス・チェックのために接続するポート番号。
typeがTCPの場合、このパラメーターは必須です。typeがHTTPまたはHTTPSの場合、80 (HTTP の場合) または 443 (HTTPS の場合) 以外のポートを使用する場合にのみポートを定義します。 TCP のデフォルト:0。 HTTP のデフォルト:80。 HTTPS のデフォルト:443。 --header <header>typeがHTTPまたはHTTPS: HTTP ヘルスチェックのリクエストヘッダはHostヘッダに限定される。 このフラグは、タイプが 'HTTP' または 'HTTPS' の場合のみ有効です。 このフラグは、'--header Header-Name=value' という形式で値を受け入れます。 モニターを更新する際に、既存のヘッダーは指定したヘッダーに置き換えられます。 既存のすべてのヘッダーを削除するには、空の値を含むフラグ '--header ""' を指定します。
コマンド例
ibmcloud ks nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --type HTTPS --path /alive --timeout 5 --interval 60 --header Host=example.com -
ヘルス・チェック・モニターが正しい設定を使用して構成されていることを確認します。
ibmcloud ks nlb-dns monitor get --cluster <cluster_name_or_id> --nlb-host <host_name>出力例
Status: enabled Type: https Method: GET Path: /alive Expected Codes: 2xx Port: 443 Timeout: 5 Interval: 60 Headers: Host: example.com -
サブドメインのヘルス・チェック状況を確認します。
ibmcloud ks nlb-dns monitor ls --cluster <cluster_name_or_id>出力例
Hostname Status Type Port Path mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud enabled https 443 /alive
サブドメインの IP およびモニターの更新と削除
生成したサブドメインの NLB IP アドレスを追加および削除できます。 また、必要に応じてサブドメインのヘルス・チェック・モニターを無効および有効にすることができます。
NLB IP
後でクラスターの他のゾーン内にさらに NLB を追加して同じアプリを公開する場合は、既存のサブドメインに NLB IP を追加できます。
ibmcloud ks nlb-dns add --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> ... --nlb-host <host_name>
サブドメインに登録する必要がなくなった NLB の IP アドレスを削除することもできます。 削除する各 IP アドレスに対して以下のコマンドを実行する必要があります。 サブドメインからすべての IP を削除してもサブドメインは引き続き存在しますが、そのサブドメインに関連付けられている IP はなくなります。
ibmcloud ks nlb-dns rm classic --cluster <cluster_name_or_id> --ip <ip> --nlb-host <host_name>
ヘルス・チェック・モニター
ヘルス・モニターの構成を変更する必要がある場合は、特定の設定を変更できます。 変更したい設定のオプションのみを含める。
ibmcloud ks nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>
サブドメインのヘルス・チェック・モニターは、以下のコマンドを実行していつでも無効にできます。
ibmcloud ks nlb-dns monitor disable --cluster <cluster_name_or_id> --nlb-host <host_name>
サブドメインのモニターを再度有効にするには、以下のコマンドを実行します。
ibmcloud ks nlb-dns monitor enable --cluster <cluster_name_or_id> --nlb-host <host_name>