CRD を使用した API の作成

アダプターをプロビジョニングした後で、API を作成してサービスをバインドする必要があります。API は Anypoint Platform または Anypoint Service Mesh を使用して作成できます。

  • Anypoint Platform を使用して API を作成する

    API 仕様ファイルが 550KB より大きい場合に Anypoint Platform を使用して API を作成します。REST API または OAS アセットタイプをアップロードする場合は、​.json​、​.raml​、​.zip​、または ​.yaml​ ファイルを使用します。SOAP API または WSDL アセットタイプをアップロードする場合は、​.wsdl​ または ​.xml​ ファイルを使用します。

  • Anypoint Service Mesh の Autocreate 機能を使用した API の作成

    Anypoint Platform で API を自動的に作成するように Anypoint Service Mesh を設定できます (手動でのロギングは不要です)。REST API や SOAP API など、仕様ファイルを必要とする API を作成する場合は、CLI がアップロードできるように、仕様ファイルが 550KB を超えず、ファイルシステムで利用できることを確認してください。

Anypoint Platform を使用して API を作成する

Anypoint Platform を使用して API を作成するには、次の手順を実行します。

  1. [Anypoint Platform] > [API Manager]​ に移動し、​[Manage API (API を管理)]​ ドロップダウンリストを選択します。

  2. [Create new API (新しい API を作成)]​ を選択します。

    [Creating an asset (アセットの作成)] ページが表示されます。

  3. API の ​[Name (名前)]​ と ​[Asset types (アセットタイプ)]​ の詳細を指定します。

    アセットは再利用するため Exchange で作成されるようになりました。アセットを作成したら、エンドポイント設定を行う準備ができました。

    [Endpoint Configuration (エンドポイント設定)] ウィンドウが表示されます。

  4. [Managing type (管理種別)]​ 項目で、​[Basic Endpoint (基本エンドポイント)]​ ラジオボタンを選択します。

  5. [Application type (アプリケーション種別)]​ 項目で、​[Non-Mule application (非 Mule アプリケーション)]​ ラジオボタンを選択します。

  6. 必要に応じて、​[Implementation URI (実装 URI)]​ を指定し、​[Save (保存)]​ をクリックします。

    API が作成されます。

Anypoint Service Mesh の Autocreate 機能を使用した API の作成

2022 年 10 月 29 日以降、API の Autocreate 機能に関するユーザーログイン情報オプションはサポートされなくなりました。接続アプリケーション方式に移行する必要があります。詳細は、下記のセクションと​「Obtain Connected Apps credentials page (接続アプリケーションのログイン情報ページの取得)」​を参照してください。

Anypoint Service Mesh の Autocreate 機能を使用して API を作成する場合は、認証に​接続アプリケーションのログイン情報​を使用できます。このオプションは、次のユーザーに使用できます。

  • Anypoint Platform または外部 IdP によって管理されている

  • 多要素認証は有効にしていてもしていなくてもよい

接続アプリケーションのログイン情報を使用した API の自動作成

Anypoint Service Mesh の Autocreate 機能を設定する前に、以下を確認してください。

  • 以下を取得します。

  • これらのクライアントログイン情報に以下が含まれていることを確認します。

    • API を Exchange にパブリッシュするための「Exchange Contributor (Exchange コントリビューター)」権限

    • API Manager で API を管理するための「Manage API Configuration (API 設定の管理)」権限

接続アプリケーションを使用して API を自動作成するには、次の手順を実行します。

  1. API 定義ファイルを作成し、.yaml ファイル拡張子を付けて保存します (例: test-api.yaml​)。

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: ServiceInstance
    metadata:
      name: _Kubernetes API resource name_ # example: orders-api
      namespace: _namespace name_ # example: default
      labels:
        service-mesh.mulesoft.com/kind: api
    spec:
      clusterServiceClassExternalName: anypoint-platform-api-instance
      clusterServicePlanExternalName: service-mesh
      parameters:
        environmentId: _environment ID_ # example: 7cea45c6-3237-464d-bd34-3122c4abde29
        groupId: _group ID_ # Optional - example: 350b8164-e809-4091-91f5-079fb30e5a1e
        assetId: _asset ID_ # example: orders-api
        version: _version_ # example: 0.0.1
        instanceLabel: _instance label_ # example: public
        tags:
          apiSpec:
          - _tag in Exchange asset_ # example: orders
          apiInstance:
          - _tag in API Manager instance_ # example: orders
        clientId: _ID of the Anypoint Platform connected app_
        clientSecret: _Secret of the Anypoint Platform connected app_
  2. CRD ファイルを適用します。 ​kubectl apply -f test-api.yaml

  3. API が正常に作成されていることを確認します。 ​asmctl api list

  4. 必要に応じて、Exchange アセットが Exchange で作成されていて API が API Manager で作成されていることを確認します。

Kubernetes シークレットの参照

Anypoint Service Mesh では、接続アプリケーションのログイン情報などの機密情報を保存して管理するために Kubernetes シークレットの使用がサポートされています。Kubernetes シークレットを使用する場合は、API を作成するたびにユーザー名とパスワードを指定する必要はありません。

Kubernetes シークレットを設定する前に、必要な権限を持っていることを確認してください。

Kubernetes シークレットにクライアントログイン情報を保存する手順は、次のとおりです。

  1. YAML ファイルで、重要な情報を格納するシークレットを作成します (例: orders-api-config.yaml​)。

    apiVersion: v1
    kind: Secret
    metadata:
      name: _secret name_ # example: orders-api-config
      namespace: _namespace name_ # example: default
    type: Opaque
    stringData:
      config: |
        {
          "clientId": "_replace-with-connected-app-id_",
          "clientSecret": "_replace-with-connected-app-secret_"
        }
  2. シークレットを適用します。

    kubectl apply -f orders-api-config.yaml

    シークレットが正しく適用されると、「secret/orders-api-config created (シークレット/orders-api-config が作成されました)」というメッセージが表示されます。

  3. 次の例で示しているように API CRD のシークレットを参照します。

    apiVersion: servicecatalog.k8s.io/v1beta1
    kind: ServiceInstance
    metadata:
      name: _Kubernetes API resource name_ # example: orders-api
      namespace: _namespace name_ # example: default
      labels:
        service-mesh.mulesoft.com/kind: api
    spec:
      clusterServiceClassExternalName: anypoint-platform-api-instance
      clusterServicePlanExternalName: service-mesh
      parameters:
        environmentId: _environment ID_ # example: 7cea45c6-3237-464d-bd34-3122c4abde29
        groupId: _group ID_ # Optional - example: 350b8164-e809-4091-91f5-079fb30e5a1e
        assetId: _asset ID_ # example: orders-api
        version: _version_ # example: 0.0.1
        instanceLabel: _instance label_ # example: public
        tags:
          apiSpec:
          - _tag in Exchange asset_ # example: orders
          apiInstance:
          - _tag in API Manager instance_ # example: orders
      parametersFrom: # The element specifies the secret name and configuration required for retrieving the parameters.
      - secretKeyRef:
          name: _secret name_ # example: orders-api-config
          key: config