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

Alibaba Cloud Service Mesh:Consul サービスレジストリへの接続

最終更新日:Jun 22, 2026

Service Mesh は、Consul サービスレジストリとの統合をサポートしており、マイクロサービスの ASM への移行を支援します。このトピックでは、Consul サービスレジストリを ASM と統合する方法について説明します。

前提条件

  • ご利用の ASM インスタンスは、v1.7.5.31-g28ec7490-aliyun 以降のバージョンである必要があります。

  • Consul がサービスレジストリとしてデプロイされていること。詳細については、「Installing Consul on Kubernetes」をご参照ください。

  • Service Mesh に追加された Kubernetes クラスター内のポッドは、Consul サーバーエンドポイントにアクセスできる必要があります。 たとえば、Consul サーバーが同じ Kubernetes クラスターにインストールされてパブリックエンドポイントを公開している場合や、アクセス可能な内部エンドポイントを提供している場合などです。

  • Web、Web2、および組み込みの Consul サービスを含むサンプルサービスが Consul に登録されている必要があります。詳細については、「Services」をご参照ください。

背景情報

ASM は、Service Mesh 内のサービスが Service Mesh 外のサービスを呼び出せるようにすることでマイクロサービスの ASM への移行を容易にする、Consul サービスレジストリへの接続機能を提供します。ASM は、Service Mesh 内のサービスを Consul サービスレジストリに自動的に登録しません。Service Mesh 外のサービスがサービスメッシュ内のサービスを呼び出せるようにするには、Service Mesh 内のサービスを Consul サービスレジストリに手動で登録する必要があります。

ステップ 1:ASM-se-syncer 設定の取得

  1. ASM インスタンス ID を取得します。

    1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

    2. [Mesh Management] ページで、[Name/ID] 列からターゲットインスタンスの ID を見つけます。

  2. クラスターのリージョン ID を取得します。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。

    3. [基本情報] セクションで、クラスターのリージョンを確認します。たとえば、リージョンが中国 (北京) の場合、リージョン ID は cn-beijing です。リージョンの詳細については、「サポートされているリージョン」をご参照ください。

  3. AccessKey ID と AccessKey Secret を取得します。詳細については、「AccessKey ペアの作成」をご参照ください。

ステップ 2:ASM-se-syncer のインストール

  1. kubectl を使用してクラスターに接続します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。

  2. ローカルマシンに Helm をインストールします。詳細については、「Helm ドキュメント」をご参照ください。

    説明

    kubectl でクラスターに接続すると、Helm クライアントは自動的に KubeConfig ファイルを使用してクラスターに接続します。

  3. asm-se-syncer の Helm チャートをダウンロードし、ローカルマシンに解凍します。

  4. asm-se-syncer フォルダに移動し、values.yaml ファイルを見つけます。values.yaml ファイルに ASM ID、クラスターのリージョン ID、AccessKey ID、および AccessKey Secret を追加し、次の Consul サービス情報を変更してから、values.yaml ファイルを保存します。

    [
      {
        "name": "consul-test",
        "prefix": "consul-",
        "type": "consul",
        "endpoint": "http://consul-server.consul:8500",
        "toNamespace": "default"
      }
    ]

    パラメーター

    説明

    name

    サービスレジストリの一意の名前。

    prefix

    生成されるサービスエントリリソースの名前のプレフィックス。

    type

    サービスレジストリのタイプ。サポートされている値は consul のみです。

    endpoint

    サービスレジストリのエンドポイントアドレス。

    toNamespace

    生成されたサービスエントリリソースが作成される名前空間。名前空間が存在しない場合は、自動的に作成されます。

    複数の Consul サービスレジストリに接続するには、各レジストリの設定を values.yaml ファイルに追加します。その後、values.yaml ファイルを保存します。

    [
      {
        "name": "consul-test01",
        "prefix": "consul01-",
        "type": "consul",
        "endpoint": "http://consul-server01.consul:8500",
        "toNamespace": "default"
      },
      {
        "name": "consul-test02",
        "prefix": "consul02-",
        "type": "consul",
        "endpoint": "http://consul-server02.consul:8500",
        "toNamespace": "default"
      }
    ]
  5. 次のコマンドを実行して ASM-se-syncer をインストールします。

    helm install -f values.yaml se-syncer ./

    ASM-se-syncer がインストールされると、ASM は自動的に Consul サービスレジストリに接続し、ACK クラスターに asm-serviceregistry-syncer コンポーネントをインストールし、Consul から Service Mesh にサービスを同期します。

ステップ 3:Consul 統合の検証

  1. ASM コンポーネントのインストールステータスを確認します。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

    2. [クラスターリスト] ページで、ご利用のクラスターの名前をクリックします。左側のナビゲーションウィンドウで、ワークロード > デプロイメント をクリックします。

    3. [デプロイメント] ページで、asm-serviceregistry-syncer という名前のコンポーネントを見つけます。

      コンポーネントが 1/1 の準備完了状態であれば、正常に実行されています。

  2. サービスエントリリソースの同期ステータスを確認します。

    1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[クラスターとワークロード管理] > [外部サービス (ServiceEntry)] を選択します。

    3. External Service(ServiceEntry) ページで、Consul に登録されているサービスが Service Mesh に同期されていることを確認します。

      説明
      • [External Service(ServiceEntry)] ページでは、Consul サービスの名前は [プレフィックス]-[Consul でのサービス名] という形式に従います。プレフィックスは、prefix パラメーターに指定した値です。

      • [External Service(ServiceEntry)] ページでは、Consul サービスの名前空間は、指定した toNamespace パラメーターの値です。

よくある質問

同期されたサービスの呼び出し方法

呼び出し元サービスのクラスターがサービスメッシュのデータプレーンの一部になると、次のいずれかの方法で同期されたサービスを呼び出すことができます:

  • 方法 1:DNS プロキシを有効にし、サービスエントリhosts フィールドのホスト名とポートを使用してサービスを呼び出します。

    1. DNS プロキシを有効にします。詳細については、「ASM インスタンスで DNS プロキシ機能を使用する」をご参照ください。

    2. サービスを呼び出すためのホスト名とポートを取得します。

      1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

      2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[クラスターとワークロード管理] > [外部サービス (ServiceEntry)] を選択します。

      3. [External Service(ServiceEntry)] ページで、ターゲットのサービスエントリを見つけ、[Operator] 列の [View YAML] をクリックします。

        [Edit] ダイアログボックスでホスト名とポートを取得し、http://<hostname>:<port> を使用してサービスを呼び出します。ServiceEntry の YAML ファイルでは、主要な設定項目 hostspro-qf-test に設定され、ポート番号 (number) は 80 に設定されています。

        - apiVersion: istio.alibabacloud.com,
              controller: true
              kind: ASMServiceRegistry
              name: default
              uid: 5d301b4e-39bc-46b5-xxx
              resourceVersion: '432158678'
              selfLink: >-
                /apis/networking.istio.io/v1beta1/naxxx
              uid: e446b651-be82-4e13-99xxx
          spec:
            addresses:
              - 172.30.xxx
            endpoints:
              - address: 172.xxx
                ports:
                  http: 80
            hosts:
              - pro-qf-test
            ports:
              - name: http
                number: 80
                protocol: HTTP
            resolution: STATIC
  • 方法 2:[External Service(ServiceEntry)] の endpoints フィールドのアドレスを使用してサービスを呼び出します。

    1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、[クラスターとワークロード管理] > [外部サービス (ServiceEntry)] を選択します。

    3. [External Service(ServiceEntry)] ページで、ターゲットのサービスエントリを見つけ、[Operator] 列の [View YAML] をクリックします。

      [Edit] ダイアログボックスでアドレスを見つけます。http://<address> 形式を使用してサービスを呼び出します。YAML では、主要な設定項目は spec.endpoints の下の address フィールドです。

      - apiVersion: istio.alibabacloud.com
            controller: true
            kind: ASMServiceRegistry
            name: default
            uid: 5d301b4e-39bc-46b5-xxx
            resourceVersion: '432158678'
            selfLink: >-
              /apis/networking.istio.io/v1beta1/naxxx
            uid: e446b651-be82-4e13-99xxx
        spec:
          addresses:
            - 172.30.xxx
          endpoints:
            - address: 172.xxx
              ports:
                http: 80
          hosts:
            - pro-qf-test
          ports:
            - name: http
              number: 80
              protocol: HTTP
          resolution: STATIC

サービス同期の仕組み

Consul に登録されたサービスは、サービスエントリリソースとして自動的に Istio に同期されます。Consul でサービスが削除または更新されると、その変更は Istio の対応するサービスエントリに自動的に同期されます。

Consul 統合の無効化方法

次のコマンドを実行して、Consul 同期リソースを削除します。

helm uninstall se-syncer