Guida rapida: esegui una query sull'API

Prerequisiti

  1. Completa tutti i passaggi richiesti nella guida introduttiva Prima di iniziare.
  2. Distribuisci l'API .

Panoramica

Puoi eseguire query sull'API utilizzando gli stessi metodi, indipendentemente dal metodo di installazione utilizzato. La modalità di esecuzione di query sull'API dipende dal fatto che tu abbia o meno configurato un endpoint pubblico. Se l'endpoint non è pubblico, dovrai determinare autonomamente come esporre l'API. Esistono molte opzioni per farlo, tra cui la creazione di un Ingress se il tuo cluster lo supporta, la pubblicazione del servizio creato, l'esecuzione di Istio e così via.

I passaggi descritti di seguito illustrano come eseguire query su un endpoint. Esistono due metodi:

  1. Esegui una query sull'endpoint all'interno del cluster (non è richiesto un IP pubblico).
  2. Esegui una query su un IP pubblico.

Esegui una query sul nome DNS interno (non è richiesto un IP pubblico)

Questo esempio esegue una query dall'interno del cluster utilizzando il nome del servizio DNS (Domain Name System) assegnato al servizio: $NAME.$NAMESPACE, ad esempio speech.speech.. Puoi impostare le variabili di ambiente o sostituirle con il valore effettivo nei comandi.

  1. Crea un nuovo job all'interno del cluster da cui eseguire query sull'API. Se questo job esiste già nel cluster, devi prima rimuoverlo.

    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. Controlla i log per visualizzare la trascrizione:

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

Esegui una query su un IP pubblico

Se hai installato Istio nel tuo cluster, assicurati che Istio Ingress Gateway sia in esecuzione con un IP pubblico. Se non hai installato Istio, puoi impostare il valore per $PUBLIC_IP. Al termine, puoi inviare query di trascrizione a un endpoint pubblico.

  1. Se hai installato Istio, segui le istruzioni per ottenere l'IP pubblico di Ingress e impostarlo su PUBLIC_IP.

  2. Se non hai installato Istio, verifica che l'indirizzo IP sia stato associato. Dovrebbe apparire sotto EXTERNAL-IP di seguito. Se non viene visualizzato dopo alcuni minuti, vai al tuo cluster nella console per la risoluzione dei problemi.

    kubectl get service $NAME --namespace $NAMESPACE
    
    1. Copia il file binario onprem_client dall'immagine Docker:

      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. Utilizza il file binario onprem_client per inviare una query:

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

Passaggi successivi

Scopri come inviare una richiesta di trascrizione all'API Speech-to-Text On-Prem.