SAE は、多言語のアプリケーションのサービス登録とサービスディスカバリをサポートしており、K8s ServiceName を使用したサービス間の呼び出しが可能です。SAE クラスター内のアプリケーションに、固定でアクセス可能なドメイン名を設定できます。これにより、デプロイメントごとにインスタンスの IP アドレスが変更される問題が解決されます。このトピックでは、SAE コンソールを使用して K8s ServiceName でアプリケーションのアクセスを設定する方法について説明します。
背景情報
分散マイクロサービスフレームワークでは、サービスのオンラインまたはオフラインのステータスが変更されたときに、サーバーとクライアントが適切に通信できるようにするために、サービス登録とサービスディスカバリが使用されます。
サービス登録: これはサーバーに適用されます。サービスインスタンスは、その情報をレジストリに登録します。クライアントは、レジストリからこの情報を読み取り、サブスクライブします。
サービスディスカバリ: これはクライアントに適用されます。レジストリは、サービスのインスタンスアドレスとメタデータをプローブし、事前定義されたインターフェイスを介してこの情報をクライアントに提供します。クライアントはレジストリにクエリを実行して、依存するサービスに関する情報を取得し、その情報を使用して呼び出しを行います。
制限事項
このドメイン名は、SAE アプリケーション内のインスタンスへのアクセスにのみ使用できます。FC、ACK、ECS などの他のサービスのインスタンスやクラスターは、このドメイン名を使用して SAE アプリケーションにアクセスすることはできません。他のサービスのアプリケーションが SAE アプリケーションにアクセスする必要がある場合は、非公開または公開の Classic Load Balancer (CLB) を関連付けてアクセスを提供する必要があります。詳細については、「CLB を使用してアプリケーションサービスのアクセスを設定する」をご参照ください。
K8s ServiceName にアクセスするために ping コマンドを使用しないでください。代わりに、TCP または UDP を使用してコードから ServiceName にアクセスしてください。ネットワーク接続を確認するために、ping コマンドを使用してアプリケーションの Pod IP アドレスをテストできます。
アプリケーションの Pod は、その ServiceName を使用して自身にアクセスすることはできません。
サーバーアプリケーションとクライアントアプリケーションが相互に呼び出す必要がある場合、両方に K8s ServiceName を設定する必要があります。
設定ガイド
機能にアクセスします。
アプリケーション作成時の設定エントリポイント
SAE コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。リージョンと名前空間を選択し、[アプリケーションの作成] をクリックします。
アプリケーションのバージョンを選択し、[アプリケーションの作成] をクリックします。
[アプリケーションの基本情報] ページで設定を構成し、[次へ: 詳細設定] をクリックします。
[詳細設定] ページで、[サービス登録と検出] セクションを見つけて展開します。
アプリケーションデプロイ時の設定エントリポイント
警告アプリケーションを再デプロイすると、アプリケーションが再起動されます。業務の中断などの予測不能なエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることをお勧めします。
SAE コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。リージョンと名前空間を選択し、対象のアプリケーションの名前をクリックします。
アプリケーションの [基本情報] ページで、[アプリケーションのデプロイ] をクリックします。
[アプリケーションのデプロイ] ページで、[サービス登録と検出] セクションを見つけて展開します。
[K8s Service に基づくサービス登録と検出] 機能を設定します。
[K8s Service に基づくサービス登録と検出] スイッチをオンにします。
[サービス名]、[ポート]、[プロトコル] を設定します。
設定項目
説明
サービス名
カスタムサービス名を入力します。名前は、アカウントの同じリージョン内で一意である必要があり、作成後に変更することはできません。
説明デフォルトのサービス名はアプリケーション名です。
ポート
1 から 65535 までの [ポート] 番号を入力します。
説明最大 5 つのポートとプロトコルの設定を追加できます。
コンテナーポート
コンテナーポートを入力します。
プロトコル
ドロップダウンリストからプロトコルを選択します。次のプロトコルがサポートされています:
TCP
UDP
アクセスドメイン名の表示
対象アプリケーションの [基本情報] ページで、[アプリケーションアクセス設定] セクションに移動します。[K8s Service Name に基づくアクセス] タブをクリックしてドメイン名を表示します。
次の 4 種類のドメイン名がサポートされています:
同じ名前空間内のアプリケーションにアクセスするには、サービス名を使用します。例: `demo`。
名前空間をまたいでアプリケーションにアクセスするには、次のいずれかのドメイン名形式を使用します。
demo.nsfoo
この例では、`nsfoo` はカスタム名前空間です。対象のアプリケーションが `default` 名前空間にある場合は、名前空間 ID として `default` を使用します。例: `demo.default`。
demo.nsfoo.svc.cluster.local
demo.nsfoo.svc.cluster.local.cn-hangzhou
