クイックスタート: API をクエリする

前提条件

  1. クイックスタート: 始める前にの手順をすべて完了します。
  2. API をデプロイします

概要

使用したインストール方法に関係なく、同じメソッドを使用して API に対してクエリを実行できます。API のクエリを実行する方法は、パブリック エンドポイントを構成しているかどうかによって異なります。エンドポイントが公開されていない場合は、API の公開方法を自身で決める必要があります。たとえば、Ingress を作成する(クラスタがサポートしている場合)、作成したサービスを公開する、Istio を実行するなど、複数の方法があります。

以下に、エンドポイントをクエリする手順を簡単に説明します。次の 2 つの方法があります。

  1. クラスタ内からエンドポイントをクエリする(パブリック IP は不要)。
  2. パブリック IP をクエリする。

内部 DNS 名をクエリする(パブリック IP は不要)

この例では、$NAME.$NAMESPACE サービスに割り当てられたドメイン ネーム サービス(DNS)名(speech.speech. など)を使用して、クラスタ内からクエリを実行します。環境変数を設定するか、コマンドで実際の値に置き換えます。

  1. API のクエリを行う新しいジョブをクラスタに作成します。このジョブがすでにクラスタに存在する場合は、既存のジョブを先に削除する必要があります。

    kubectl delete jobs.batch -n $NAMESPACE query-api
    
    echo "apiVersion: batch/v1
    kind: Job
    metadata:
      name: query-api
      namespace: $NAMESPACE
    spec:
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: 'false'
          labels:
            app: query
        spec:
          containers:
          - name: entrypoint
            image: gcr.io/cloud-marketplace/speech-onprem/speech-to-text-on-prem:$VERSION
            command: ["/bin/sh", "-c"]
            args:
            - curl https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/speech/snippets/resources/commercial_mono.wav --output /tmp/audio.wav;
              /bin/onprem_client --address=$NAME.$NAMESPACE:443 --file_paths /tmp/audio.wav
          restartPolicy: Never
    " | kubectl apply -f -
    
  2. ログで結果を確認します。

    kubectl logs -n $NAMESPACE --follow $(kubectl get po -n $NAMESPACE -l
    app=query -o=jsonpath='{.items[0].metadata.name}') -c entrypoint
    

パブリック IP をクエリする

クラスタに Istio をインストールした場合は、パブリック IP で Istio Ingress Gateway が実行されていることを確認します。Istio をインストールしていない場合は、$PUBLIC_IP の値を設定できます。この処理が完了すると、音声文字変換クエリをパブリック エンドポイントに送信できます。

  1. Istio がインストールされている場合は、この手順に沿って Ingress のパブリック IP を取得し、PUBLIC_IP に設定します。

  2. Istio がインストールされていない場合は、IP アドレスがバインドされていることを確認します。これは、EXTERNAL-IP の下に表示されます。数分経っても表示されない場合は、コンソールでクラスタに移動して、トラブルシューティングを行ってください。

    kubectl get service $NAME --namespace $NAMESPACE
    
    1. Docker イメージから onprem_client バイナリをコピーします。

      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/bin/onprem_client ./onprem_client
      
      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/usr/grte.tar ./grte.tar
      
      sudo tar -xvf grte.tar -C /
      
      chmod a+x ./onprem_client
      
    2. onprem_client バイナリを使用してクエリを送信します。

      ./onprem_client --address ${PUBLIC_IP}:443
      --file_paths /path/to/audio.wav
      

次のステップ

Speech-to-Text On-Prem API に音声文字変換リクエストを送信する方法を学ぶ。