CLI を使用した API へのサービスのバインド

バインドを作成すると、Anypoint Service Mesh によって Kubernetes のサービス、サービスを表すために Anypoint Platform で作成した API、サービス用に作成したアダプターの 3 方向の関連付けが作成されます。アダプターでは一意の API ID を使用してポリシーを取得し、クラスターで実行されているサービスに適用します。

Anypoint Platform を使用して API を作成した場合は、API ID を使用してサービスをバインドします。ただし、Anypoint Service Mesh を使用して API を作成した場合は、Kubernetes API リソース名を使用してサービスをバインドする必要があります。

バインドを作成した後、Anypoint Service Mesh によってバインド手順が実行され、状況が更新されるまで数秒かかります。バインドが完了すると、​list​ コマンドを使用して状況を表示できるようになります。状況の値には次のようなものがあります。

  • Ready (準備完了): バインドを使用する準備ができました。

  • Failed (失敗): バインドは正常に作成されませんでした。エラーが発生しました。

  • Binding (バインド): バインドは特定のアプリケーションへの関連付けの処理中です。

次の例では、​anypoint-service-mesh-adapter​ アダプターを ​customers​ サービスにバインドするために ​customers​ という名前のバインドが作成されています。このバインドは、アダプターが以前に作成されたのと同じ名前空間である ​nto-payments​ 名前空間で作成され、ID が 1234 の API に関連付けられます。

NAMESPACE      NAME        ADAPTER                         API ID  SERVICE NAME    STATUS
nto-payments   customers   anypoint-service-mesh-adapter   1234    customers       Ready

API をバインドする方法

好みに合わせて Anypoint Platform または Anypoint Service Mesh を使用して API をサービスにバインドできます。

Anypoint Platform を使用して作成された API をバインドする

サービスをバインドする前に、API Manager の [API Administration (API 管理)] タブから API ID を取得します。

サービスを API とバインドするには、次の手順を実行します。

  1. [Anypoint Platform] > [API administration (API 管理)]​ に移動して、API バージョン名を展開してインスタンスを表示します。

  2. インスタンス名をクリックします。

  3. API インスタンスウィンドウから、API ID をテキストエディターに保存します。

    API ID の表示、75%、75%
    Figure 1. API バージョンウィンドウで API ID が表示される場所を示す図。
1 API 名と API インスタンスバージョン。
2 API ID。
  1. API にバインドするサービスの名前を Kubernetes から取得します。

    kubectl get svc -n ​namespace

  2. マイクロサービスポートの名前が 「Istio」​で説明されている要件に従って付けられていることを確認します。

  3. コマンドウィンドウで、Anypoint Service Mesh のインストーラーをダウンロードしたディレクトリに移動し、アダプターをアプリケーションにバインドします。

    asmctl adapter binding create \
    --name=_Kubernetes binding resource name_ \
    --namespace=_namespace name_ \
    --adapter=_Kubernetes adapter resource name_ \
    --apiId=_api ID_ \
    --serviceName=_service name_

    アダプター名、バインド名、サービス名などのすべてのオブジェクト名は小文字である必要があります。Kubernetes の命名規則に従っていないと、エラーがスローされます。

    パラメーター名 説明 必須または省略可能 デフォルト値

    name (名前)

    Kubernetes のバインドリソースを表す一意の名前 (例: service-binding-anypoint-security​)。

    必須

    適用なし

    namespace (名前空間)

    サービスをデプロイする名前空間。以前にプロビジョニングしたアダプターと同じ名前空間を使用してください。

    必須

    適用なし

    adapter (アダプター)

    以前にプロビジョニングした Kubernetes アダプターリソースの名前を指定します。

    必須

    適用なし

    apiId

    この手順を開始する前に取得してある API の API ID を指定します。

    必須

    適用なし

    serviceName

    API にバインドするサービスの名前。サービス名は、Anypoint Service Mesh を使用して管理するサービスの識別子です。

    必須

    適用なし

    バインドは数秒以内にアクティブ化され、API が正常にプロキシに登録されます。

  4. バインドの状況を確認します。

    asmctl adapter binding list

    API をバインドすると、API Manager の API は [Active (アクティブ)] とマークされます。これで API を保護するためのポリシーを適用する準備ができました。

    75%
    Figure 2. サービスの状況が表示される場所を示す図。
1 API 名と API インスタンスバージョン。
2 サービスの状況。

Anypoint Service Mesh を使用して作成された API をバインドする

バインドを作成する手順は、次のとおりです。

  1. API にバインドするサービスの名前を Kubernetes から取得します。

    kubectl get svc -n ​namespace

  2. マイクロサービスポートの名前が Istio の要件​に基づいて付けられていることを確認します。

  3. Anypoint Service Mesh のインストーラーをダウンロードしたディレクトリに移動し、アダプターを API にバインドします。

    asmctl api binding create \
    --name=_Kubernetes resource name_ \
    --namespace=_namespace name_ \
    --adapter=_Kubernetes adapter resource_ \
    --api=_Kubernetes API resource_ \
    --serviceName=_service name_
    パラメーター名 説明 必須または省略可能 デフォルト値

    name (名前)

    Kubernetes のバインドリソースを表す一意の名前 (例: service-binding-anypoint-security​)。

    必須

    適用なし

    namespace (名前空間)

    サービスをデプロイする名前空間。以前にプロビジョニングしたアダプターと同じ名前空間を使用してください。

    必須

    適用なし

    adapter (アダプター)

    以前にプロビジョニングした Kubernetes アダプターリソースを指定します。

    必須

    適用なし

    api

    このアダプターを関連付ける Kubernetes API リソースを指定します。

    必須

    適用なし

    serviceName

    API にバインドするサービスの名前。サービス名は、Anypoint Service Mesh を使用して管理するサービスの識別子です。

    必須

    適用なし