Serverless App Engine (SAE) は、Kubernetes サービス名に基づく多言語サービス登録およびディスカバリ機能を提供します。 Kubernetes サービス名を使用して、サービス間呼び出しを実行できます。 アプリケーションがデプロイされるたびに、アプリケーションインスタンスの IP アドレスが変更されます。 インスタンスの IP アドレスの変更によって発生する可能性のある問題を防ぐために、SAE クラスタ内でアプリケーションにアクセスできる固定ドメイン名を設定できます。 このトピックでは、SAE コンソールでアプリケーションの Kubernetes サービス名ベースのサービスアクセスを設定する方法について説明します。
背景情報
分散マイクロサービスフレームワークでは、サービスの起動、シャットダウン、または変更時に、サービス登録およびディスカバリ機能を使用して、サーバーが呼び出し元と通信できます。
サービス登録はサーバーに適用されます。 サーバー側のインスタンスがサービス情報をレジストリに登録すると、呼び出し側はレジストリから情報を読み取り、サブスクライブできます。
サービスディスカバリは呼び出し側に適用されます。 レジストリは、サービスのインスタンスアドレスとメタデータを検出し、定義済みのインターフェイスを提供して、呼び出し側がデータをクエリできるようにします。 呼び出し側のサービスインスタンスは、レジストリにリクエストを送信して、サーバー側のサービスインスタンスの登録情報を取得します。 次に、呼び出し側のサービスインスタンスは、取得した情報に基づいて、サーバー側のサービスインスタンスによって提供されるサービスを呼び出すリクエストを送信します。
制限事項
指定されたドメイン名は、対応する SAE アプリケーションのインスタンスへのアクセスにのみ使用できます。 Function Compute、Container Service for Kubernetes (ACK)、Elastic Compute Service (ECS) などの他のクラウドサービスのインスタンスまたはクラスタは、そのドメイン名を使用して SAE アプリケーションにアクセスすることはできません。 他のクラウドサービスが SAE アプリケーションにアクセスする必要がある場合は、内部向けまたはインターネット向けの Classic Load Balancer (CLB) インスタンスをアプリケーションにバインドすることをお勧めします。 詳細については、「CLB インスタンスに基づいてアプリケーションアクセスを設定する」をご参照ください。
ping コマンドを実行して、Kubernetes サービス名を使用してアプリケーションにアクセスすることはできません。 アプリケーションコードで TCP または UDP 関連の設定を行い、サービス名を使用してアプリケーションにアクセスできます。 ネットワーク接続が正常かどうかを確認するには、ping コマンドを実行して、アプリケーション内のポッドの IP アドレスをテストすることをお勧めします。
アプリケーションポッドは、Kubernetes サービス名を使用して自身にアクセスすることはできません。
サーバーと呼び出し元の間の通信を実装するには、サーバーと呼び出し元の Kubernetes サービス名を設定する必要があります。
アプリケーションの作成時にサービス登録およびディスカバリ機能を設定する
SAE コンソール にログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、地域を選択します。 次に、[アプリケーションの作成] をクリックします。
[基本情報] ステップで、パラメータを設定し、[次へ: アプリケーションデプロイ構成] をクリックします。
[デプロイ構成] ステップで、[テクノロジスタックプログラミング言語] パラメータと [アプリケーションデプロイ方法] パラメータ、および対応する設定を構成します。
[サービス登録とディスカバリ] セクションで、[Kubernetes サービスベースのサービス登録とディスカバリ] タブをクリックします。 このタブで、[Kubernetes サービスベースのサービス登録とディスカバリを有効にする] をオンにして、パラメータを設定します。
パラメータ
説明
サービス名
デフォルトでは、システムは アプリケーション名-Namespace ID 形式でサービス名を自動的に指定します。 接尾辞 -Namespace ID は変更できません。
説明サービスを作成した後、サービスの名前を変更することはできません。
ポート
[ポート] フィールドにポート番号を入力します。 有効な値: 1 ~ 65535。
説明ポートとプロトコルの構成は最大 5 つまで追加できます。
プロトコル
ドロップダウンリストからプロトコルを選択します。 有効な値:
TCP
UDP
[次へ: 仕様の確認] をクリックします。
[仕様の確認] ステップで、アプリケーションの詳細と選択した仕様の料金を確認します。 次に、[確認] をクリックします。
[作成完了] ステップが表示されます。 [アプリケーションの詳細] をクリックして、アプリケーションの [基本情報] ページに移動できます。
次のいずれかの方法を使用して、構成が有効になっているかどうかを確認します。
方法 1:
[基本情報] ページの左側のナビゲーションウィンドウで、[変更履歴] をクリックします。 [変更履歴] ページで、変更の詳細を表示します。 [変更ステータス] 列に [実行済み] と表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。
方法 2:
[基本情報] ページで、[インスタンスデプロイ情報] タブをクリックして、インスタンスの [ステータス] を表示します。 [ステータス] 列に [実行中] と表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。
方法 3:
[基本情報] ページの [アプリケーションアクセス設定] セクションで、[K8s サービス名ベースのアクセス] タブをクリックして、サービスディスカバリの構成を表示します。 指定されたサービス名、ポート番号、およびプロトコルが表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。
アプリケーションのデプロイ時にサービス登録およびディスカバリ機能を設定する
アプリケーションを再デプロイすると、アプリケーションが再起動されます。 ビジネスの中断などの予期しないエラーを防ぐために、オフピーク時にアプリケーションをデプロイすることをお勧めします。
アプリケーションを更新するために実行できる手順は、アプリケーション内のインスタンスの数によって異なります。 このセクションでは、インスタンス数が 1 以上であるアプリケーションに必要な機能を設定する方法の例を示します。 インスタンス数が 0 であるアプリケーションを更新する方法については、「アプリケーションを更新する」をご参照ください。
SAE コンソール にログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、地域を選択します。 次に、アプリケーションの名前をクリックします。
[基本情報] ページの右上隅にある [アプリケーションのデプロイ] をクリックします。
[サービスの登録と検出] セクションの [アプリケーションのデプロイ] ページで、[Kubernetes サービスベースのサービス登録と検出] タブをクリックします。このタブで、[Kubernetes サービスベースのサービス登録と検出を有効にする] をオンにして、パラメーターを構成します。
パラメータ
説明
サービス名
デフォルトでは、システムは アプリケーション名-Namespace ID 形式でサービス名を自動的に指定します。 接尾辞 -Namespace ID は変更できません。
説明サービスを作成した後、サービスの名前を変更することはできません。
ポート
[ポート] フィールドにポート番号を入力します。 有効な値: 1 ~ 65535。
説明ポートとプロトコルの構成は最大 5 つまで追加できます。
プロトコル
ドロップダウンリストからプロトコルを選択します。 有効な値:
TCP
UDP
設定が完了したら、[確認] をクリックします。
次のいずれかの方法を使用して、構成が有効になっているかどうかを確認します。
方法 1:
[基本情報] ページの左側のナビゲーションウィンドウで、[変更履歴] をクリックします。 [変更履歴] ページで、変更の詳細を表示します。 [変更ステータス] 列に [実行済み] と表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。
方法 2:
[基本情報] ページで、[インスタンスデプロイ情報] タブをクリックして、インスタンスの [ステータス] を表示します。 [ステータス] 列に [実行中] と表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。
方法 3:
[基本情報] ページの [アプリケーションアクセス設定] セクションで、[K8s サービス名ベースのアクセス] タブをクリックして、サービスディスカバリの構成を表示します。 指定されたサービス名、ポート番号、およびプロトコルが表示されている場合、アプリケーションはデプロイされ、構成が有効になっています。