すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:サービスの追加

最終更新日:Feb 15, 2025

このトピックでは、クラスタ内のアプリケーションサービス間の通信を有効にするために、アプリケーションにサービスを追加する方法について説明します。

背景情報

Enterprise Distributed Application Service(EDAS)のContainer Service for Kubernetes(ACK)クラスタにデプロイされたアプリケーションは、通常、同じDockerイメージを実行するポッドのグループで構成されます。これらのポッドは独立したIPアドレスを持っていますが、すぐに作成および削除されます。そのため、次々に削除される可能性のあるポッドにアクセスすることでアプリケーションにアクセスすることはできません。

サービスはフロントエンドをバックエンドから分離し、疎結合のマイクロサービスアーキテクチャを提供します。

EDASのKubernetesクラスタにアプリケーションをデプロイする場合、インターネット向けServer Load Balancer(SLB)インスタンスまたはイントラネット SLB インスタンスを使用してアプリケーションを公開できます。また、NodePortタイプのサービスをアプリケーションに追加して、ノードのIPアドレスとポートを使用して外部アクセスを有効にすることもできます。EDASの同じKubernetesクラスタに複数のアプリケーションサービスが作成されると、クラスタ内のアプリケーションサービスが相互にアクセスする必要がある場合があります。ただし、アプリケーションサービスは、インターネット向けまたはイントラネット向けのSLBインスタンスを使用して相互にアクセスすることはできません。この場合、ClusterIPタイプのサービスを追加して、クラスタ内の内部通信を有効にすることができます。

手順

  1. にログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。 上部のナビゲーションバーで、リージョンを選択し、[マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択し、[クラスタタイプ] ドロップダウンリストから [kubernetesクラスタ] を選択し、目的のアプリケーションの [名前] をクリックします。

  3. [アプリケーション概要] ページで、Plus iconサービス[アクセス構成] セクションの の横にある アイコンをクリックします。

    説明

    サービスを構成済みの場合、サービス名とIPアドレスが表示されます。Edit icon アイコンをクリックしてサービスのポートとプロトコルタイプを変更するか、Delete アイコンをクリックしてサービスを削除できます。

  4. [サービス] ダイアログボックスで、必要に応じてパラメーターを設定し、[OK] をクリックします。

    パラメーター

    説明

    サービス名

    サービスの名前。サービス名は一意である必要があります。

    名前は2~32文字で、小文字、数字、ハイフン(-)を含めることができます。名前は文字で始まり、文字または数字で終わる必要があります。

    サービスタイプ

    • サービスのタイプ。有効な値:Cluster IP:ClusterIPサービス。このタイプのサービスは、クラスタの内部IPアドレスを使用してアプリケーションサービスを公開します。これはデフォルト値です。このオプションを選択すると、アプリケーションサービスはクラスタ内からのみアクセスできます。

    • Node Port:NodePortサービス。このタイプのサービスは、各ノードのIPアドレスと静的ポートを使用してアプリケーションサービスを公開します。 NodePortサービスは、システムによって自動的に作成されるClusterIPサービスにリクエストをルーティングするために使用できます。<NodeIP>:<NodePort>にリクエストを送信することで、クラスタ外からNodePortサービスにアクセスできます。

    外部トラフィックポリシー

    • 外部トラフィックを分散するためのポリシー。有効な値:Local:このポリシーは、サービスがデプロイされているノード上のポッドにのみトラフィックをルーティングします。

    • Cluster:このポリシーは、クラスタ内の他のノード上のポッドにトラフィックをルーティングできます。

    サービスポート

    サービスのフロントエンドポート。アプリケーションはこのポートを使用してアクセスされます。有効な値:1~65535。

    コンテナポート

    プロセスがリッスンするポート。このポートはアプリケーションによって定義されます。有効な値:1~65535。

    ノードポート

    ノードがサービスを公開するために使用するポート。このポートはアプリケーションによって定義されます。有効な値:30000~32767。

    説明

    このパラメーターは、サービスタイプ パラメーターをNodePortに設定した場合にのみ使用できます。

    プロトコル

    サービスプロトコル。有効な値:TCP および UDP。デフォルト値:TCP

    説明

    アプリケーションにサービスを追加する際には、次の2つの項目に注意してください。

    • 同じサービスに複数のポートマッピングを追加できます。ただし、異なるサービス名に異なるポートマッピングを設定する必要がある場合は、手順 3 から 手順 4 を繰り返して複数のサービスを追加します。

    • 同じサービスに複数のポートマッピングを追加する場合は、ポートマッピングのサービスポートとプロトコルの両方を異なる値に設定します。たとえば、2つのポートマッピングを 80|8080|TCP80|8081|TCP に設定すると、2つのポートマッピングを保存できず、ポートマッピングに重複するエントリがあります というメッセージが表示されます。

結果の確認

現在のアプリケーションにサービスを追加した後、ACKクラスタ内のポッドにログインし、ポッド内のサービスの固定IPアドレスを使用してアプリケーションにアクセスできます。

次の例では、Web アプリケーション サービスへのアクセスを確認します。他のタイプのサービスへのアクセスを確認する方法は異なります。

  1. ACKコンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  3. [クラスタ] ページで、管理するクラスタを見つけ、[その他] > [ACK クラスターの管理][アクション] 列で を選択します。

    クラスタに関連付けられているCloud Shellがページの下部に自動的に開きます。クラスタに関連付けられているCloud Shellが開くと、システムはクラスタのkubeconfigファイルを自動的にロードします。その後、kubectlを使用してクラスタを管理できます。

  4. 次のコマンドを実行して、クラスタ内のすべてのポッドをクエリします。

    kubectl get pods

    次のポッドが返されます。

    NAME                                             READY   STATUS             RESTARTS   AGE
    store-pre-****-group-1-19-****7569b-f7***        1/1     Running            0          28h
    store-prod-***duct-group-1-1-****7f894-zh***     1/1     Running            0          28h
  5. 次のコマンドを実行して、返されたポッドの1つにログインします。

    kubectl exec -it store-prod-***duct-group-1-1-****7f894-zh*** /bin/sh
  6. 次のコマンドを実行して、サービスの固定IPアドレスを使用してアプリケーションにアクセスします。

    wget 10.XX.XX.XX:8081    # IPアドレスとポートは、サービスのIPアドレスとポートと一致している必要があります。

    次のようなログが返されます。

    Connecting to 10.XX.XX.XX:8081 (10.XX.XX.XX:8081)
    index.html           100% |*******************************************************|  2203  0:00:00 ETA
    説明

    この例では、サンプル Web サービスへのアクセスを確認します。別のタイプのサービスへのアクセスを確認する場合、返されるログは異なり、サービスタイプによって異なります。