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