IBM Cloud Docs
NLB の DNS サブドメインの登録

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.12.2.2.23.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 アドレスのサブドメインを作成して、アプリをパブリック・インターネットに公開します。

始める前に

1 つ以上の NLB IP アドレスのサブドメインを作成するには、以下のようにします。

  1. NLB の EXTERNAL-IP アドレスを取得します。 アプリを公開する複数ゾーン・クラスターの各ゾーンに NLB がある場合は、各 NLB の IP を取得します。

    kubectl get svc
    

    以下の出力例では、NLB EXTERNAL-IP168.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
    
  2. DNS サブドメインを作成することによって、この IP を登録します。 複数の IP アドレスを指定するには、複数の --ip オプションを使用します。

    ibmcloud ks nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP>
    
  3. サブドメインが作成されたことを確認します。

    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>
    
  4. オプション: 前の手順で作成した IBM 提供のサブドメインを指すようにカスタム・ドメインをセットアップします。

    1. お客様のドメイン・ネーム・サービス (DNS) プロバイダーまたは IBM Cloud の DNS を使用して、カスタム・ドメインを登録します。
    2. IBM 提供サブドメインを正規名レコード (CNAME) として指定することで、カスタム・ドメインの別名を定義します。
  5. Web ブラウザーに、作成したサブドメインによってアプリにアクセスする URL を入力します。

次に、ヘルス・モニターを作成して、サブドメインに対するヘルス・チェックを有効にできます

サブドメインのフォーマットについて

NLB のサブドメインは、<cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud の形式に従います。

例えば、NLB に作成したサブドメインが mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud のようになります。 以下の表で、サブドメインの各構成要素について説明します。

表 1. NLB サブドメインのフォーマットについて
NLB のサブドメインの構成要素 説明
* クラスターには、サブドメインのワイルドカードがデフォルトで登録されます。
<cluster_name>

クラスターの名前。- クラスター名が 26 文字以下で、そのリージョンで一意である場合は、クラスター名全体が含まれ、変更されません: myclustername

  • クラスター名が 26 文字以下で、そのリージョンに同じ名前のクラスターが既に存在する場合には、クラスター名全体が含まれ、ダッシュとランダムな 6 文字が追加されます: myclustername-ABC123
  • クラスター名が 26 文字以上であり、そのリージョンで一意である場合は、クラスター名の最初の 24 文字のみが使用されます: myveryverylongclusternam
  • クラスター名が 26 文字以上であり、そのリージョンに同じ名前の既存のクラスターがある場合は、クラスター名の最初の 17 文字のみが使用され、ダッシュとランダムな 6 文字が追加されます: myveryverylongclu-ABC123
<globally_unique_account_HASH> IBM Cloud アカウントにグローバルに一意のハッシュが作成されます。 アカウントのクラスター内で NLB に作成したすべてのサブドメインは、このグローバルに一意のハッシュを使用します。
0001 作成するサブドメインごとにカウンターとして機能します。
<region> クラスターが作成されたリージョン。
containers.appdomain.cloud IBM Cloud Kubernetes Service のサブドメインのサブドメイン。

ヘルス・モニターを作成して、サブドメインに対するヘルス・チェックを有効にする

単一のサブドメインの背後にある NLB IP アドレスに対するヘルス・チェックを有効にして、IP アドレスが使用可能かどうかを判別します。

開始する前に、DNS サブドメインに NLB IP を登録します

  1. サブドメインを取得します。 出力では、ホストのモニターの StatusUnconfigured になっています。

    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
    
  2. サブドメインのヘルス・チェック・モニターを作成します。 構成パラメーターを指定しない場合は、デフォルト値が使用されます。

    ibmcloud ks nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --enable --description <description> --type <type> --method <method> --path <path> --timeout <timeout> --retries <retries> --interval <interval> --port <port> --header <header> --expected-body <expected-body> --expected-codes <expected-codes> --follows-redirects <true> --allows-insecure <true>
    
    -c, --cluster <cluster_name_or_ID>
    必須: サブドメインが登録されているクラスターの名前または ID。
    --nlb-host <host_name>
    必須: ヘルス・チェック・モニターを有効にするサブドメイン。
    --enable
    必須: サブドメインのヘルス・チェック・モニターを有効にします。
    --description <description>
    ヘルス・モニターの説明。
    --type <type>
    ヘルス・チェックに使用するプロトコル: HTTPHTTPS、または TCP。 デフォルト: HTTP
    --method <method>
    ヘルス・チェックに使用するメソッド。 type HTTP および HTTPS のデフォルト: GETtype TCP のデフォルト: connection_established
    --path <path>
    typeHTTPS の場合: ヘルス・チェックの対象となるエンドポイント・パス。 デフォルト: /
    --timeout <timeout>
    IP が正常でないと見なされるまでのタイムアウト (秒)。 デフォルト: 5
    --retries <retries>
    タイムアウトが発生したときに、IP が正常でないと見なされるまでに再試行する回数。 再試行は即時に実行されます。 デフォルト: 2
    --interval <interval>
    各ヘルス・チェックの間隔 (秒)。 間隔を短くすると、フェイルオーバーの時間が改善される場合がありますが、IP の負荷が増える場合があります。 デフォルト: 60
    --port <port>
    ヘルス・チェックのために接続するポート番号。 typeTCP の場合、このパラメーターは必須です。 typeHTTP または HTTPS の場合、80 (HTTP の場合) または 443 (HTTPS の場合) 以外のポートを使用する場合にのみポートを定義します。 TCP のデフォルト: 0。 HTTP のデフォルト: 80。 HTTPS のデフォルト: 443
    --header <header>
    typeHTTP または HTTPS の場合: ヘルス・チェックで送信する HTTP 要求ヘッダー (ホスト・ヘッダーなど)。 User-Agent ヘッダーはオーバーライドできません。 要求に複数のヘッダーを追加するには、このオプションを複数回指定します。 このオプションは、 --header Header-Name=value の形式で値を受け入れます。 モニターを更新すると、既存のヘッダーは、指定したヘッダーに置き換えられます。 既存のすべてのヘッダーを削除するには、空の値 (--header "") を使用してオプションを指定します。
    --expected-body <expected-body>
    typeHTTP または HTTPS の場合: ヘルス・チェックが応答本体で検索する大/小文字を区別しないサブストリング。 このストリングが検出されない場合、IP が正常でないと見なされます。
    --expected-codes <expected-codes>
    typeHTTP または HTTPS の場合: ヘルス・チェックが応答内で検索する HTTP コード。 HTTP コードが検出されない場合、IP が正常でないと見なされます。 デフォルト: 2xx
    --allows-insecure <true>
    typeHTTP または HTTPS の場合: 証明書を検証しない場合は true に設定します。
    --follows-redirects <true>
    typeHTTP または HTTPS の場合: IP によって返されたすべてのリダイレクトに従う場合は、true に設定します。

    コマンド例

    ibmcloud ks nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --description "Login page monitor" --type HTTPS --method GET --path / --timeout 5 --retries 2 --interval 60 --header Host=example.com --header Origin=https://akamai.com --expected-body "healthy" --expected-codes 2xx --follows-redirects true
    
  3. ヘルス・チェック・モニターが正しい設定を使用して構成されていることを確認します。

    ibmcloud ks nlb-dns monitor get --cluster <cluster_name_or_id> --nlb-host <host_name>
    

    出力例

    Created On:         2019-04-24 09:01:59.781392 +0000 UTC
    Modified On:        2020-02-26 15:39:05.273217 +0000 UTC
    Type:               https
    Description:        Health check monitor for ingress public hostname
    Method:             GET
    Path:               /alive
    Expected Body:      -
    Expected Codes:     2xx
    Follow Redirects:   false
    Allow Insecure:     true
    Port:               443
    Timeout:            5
    Retries:            2
    Interval:           15
    
    Headers:
    Origin:    https://akamai.com
    Host:      example.com
    
    Health Monitor Apply Properties Status:   success
    
  4. サブドメインのヘルス・チェック状況を確認します。

    ibmcloud ks nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    出力例

    Hostname                                                                                Status      Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     Healthy     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> --description <description> --type <type> --method <method> --path <path> --timeout <timeout> --retries <retries> --interval <interval> --port <port> --header <header> --expected-body <expected-body> --expected-codes <expected-codes> --follows-redirects <true> --allows-insecure <true>

サブドメインのヘルス・チェック・モニターは、以下のコマンドを実行していつでも無効にできます。

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>