SAE は、K8s サービスを使用してサービス間呼び出しを行うことで、多言語アプリケーションのサービス登録とサービス検出をサポートします。SAE クラスター内でアクセス可能なアプリケーションに固定ドメイン名を設定することで、デプロイごとにインスタンスの IP アドレスが変更される問題を解決できます。このトピックでは、SAE コンソールを使用して、アプリケーションに K8s サービスベースのサービスアクセスを設定する方法について説明します。
背景情報
分散マイクロサービスフレームワークでは、サービスの起動と停止に伴い、サービス登録とサービス検出によってサーバーコンポーネントとクライアントコンポーネント間の信頼性の高い通信が保証されます。
-
サービス登録:サービスインスタンスは、その情報をレジストリに登録し、クライアントはそれを読み取ってサブスクライブします。
-
サービス検出:レジストリは、事前定義されたインターフェイスを介して、サービスインスタンスのアドレスとメタデータをクライアントに提供します。クライアントは、リクエストを行う前に、依存サービスのアドレスをレジストリに照会します。
制限事項
-
このドメイン名は、同じ SAE アプリケーション内のインスタンスへのアクセスにのみ使用できます。FC、ACK、ECS などの他のサービスからのアクセスを許可するには、非公開または公開のクラシックロードバランサー (CLB) をバインドします。詳細については、「CLB を使用したアプリケーションのサービスアクセスの設定」をご参照ください。
-
ping コマンドを使用して K8s サービスにアクセスすることはできません。代わりに、コードから TCP または UDP を使用して K8s サービスにアクセスしてください。ネットワーク接続を確認するには、ping コマンドを使用してアプリケーションの Pod の IP アドレスをテストしてください。
-
アプリケーションポッドは、自身の K8s サービスを使用して自分自身にアクセスすることはできません。
-
サーバーアプリケーションとクライアントアプリケーションが相互に呼び出す必要がある場合、両方に K8s サービスが必要です。
操作手順
-
設定ページにアクセスします。
作成時
-
SAE コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。リージョンと名前空間を選択し、Create Application をクリックします。
-
アプリケーションのバージョンを選択し、Create Application をクリックします。
-
Basic Information ウィザードページで設定を行い、Next: Advanced Settings をクリックします。
-
Advanced Settings ウィザードページで、Service Registration and Discovery セクションを見つけて展開します。
デプロイ時
警告アプリケーションを再デプロイすると、アプリケーションは再起動されます。業務の中断など予測不能なエラーを防ぐため、オフピーク時間帯にアプリケーションをデプロイすることを推奨します。
-
SAE コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。リージョンと名前空間を選択し、対象のアプリケーション名をクリックします。
-
アプリケーションの Basic Information ページで、Deploy Application をクリックします。
-
Deploy Application ウィザードページで、Service Registration and Discovery セクションを見つけて展開します。
-
-
Kubernetes サービスベースのサービス登録と検出を設定します。
-
[Kubernetes サービスベースのサービス登録と検出] スイッチをオンにします。
-
[サービス名]、[ポート]、[プロトコル] を設定します。
パラメーター
説明
サービス名
カスタムサービス名を入力します。名前はリージョン内のアカウントごとに一意である必要があり、作成後に変更することはできません。
説明デフォルトでは、アプリケーション名がサービス名として使用されます。
ポート
ポート番号を入力します。有効な値:1~65535。
説明最大 5 つのポートとプロトコルの設定を追加できます。
コンテナポート
コンテナポートを入力します。
プロトコル
ドロップダウンリストからプロトコルを選択します。次のプロトコルがサポートされています:
-
TCP
-
UDP
-
-
ドメイン名へのアクセス
対象アプリケーションの Basic Information ページで、Application Access Settings セクションに移動し、[Kubernetes サービスベースのアクセス] タブで情報を表示します。
次の 4 種類のドメイン名がサポートされています:
-
同じ名前空間内のアプリケーションにアクセスするには、サービス名を使用します。例:
demo。 -
名前空間をまたいでアプリケーションにアクセスするには、次のいずれかのドメイン名形式を使用します。
-
demo.nsfooこの例では、
nsfooはカスタムの名前空間です。対象のアプリケーションがデフォルトの名前空間にある場合は、名前空間名としてdefaultを使用します。例:demo.default。 -
demo.nsfoo.svc.cluster.local -
demo.nsfoo.svc.cluster.local.cn-hangzhou
-
ポートマッピングの例:ポートは 2000、コンテナポートは 5000、プロトコルは TCP です。