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