מדריך למתחילים: שליחת שאילתות ל-API

דרישות מוקדמות

  1. צריך להשלים את כל השלבים הנדרשים במדריך להתחלה מהירה לפני שמתחילים.
  2. פורסים את ה-API.

סקירה כללית

אפשר לשלוח שאילתות ל-API באמצעות אותן שיטות, בלי קשר לשיטת ההתקנה שבה השתמשתם. האופן שבו שולחים שאילתה ל-API תלוי בהגדרת נקודת קצה ציבורית. אם נקודת הקצה לא ציבורית, תצטרכו לקבוע בעצמכם איך לחשוף את ה-API. יש הרבה אפשרויות לעשות את זה, כולל יצירת Ingress אם האשכול תומך בכך, פרסום השירות שנוצר, הפעלת Istio וכן הלאה.

השלבים שמפורטים בהמשך מסבירים איך לשלוח שאילתה לנקודת קצה. יש שתי שיטות:

  1. שליחת שאילתה לנקודת הקצה מתוך האשכול (לא נדרשת כתובת IP ציבורית).
  2. הפעלת שאילתה על כתובת IP ציבורית.

שאילתה של שם ה-DNS הפנימי (לא נדרשת כתובת IP ציבורית)

בדוגמה הזו מריצים שאילתה מתוך האשכול באמצעות שם שירות של שירות שמות הדומיין (DNS) שהוקצה לשירות: $NAME.$NAMESPACE, כמו 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 באשכול, ודאו ש-Istio Ingress Gateway פועל עם כתובת IP ציבורית. אם לא התקנתם את Istio, אתם יכולים להגדיר את הערך של $PUBLIC_IP. אחרי שתשלימו את השלב הזה, תוכלו לשלוח שאילתות תמלול לנקודת קצה ציבורית.

  1. אם Istio מותקן, פועלים לפי ההוראות כדי לקבל את כתובת ה-IP הציבורית של Ingress ולהגדיר אותה ל-PUBLIC_IP.

  2. אם לא התקנתם את Istio, צריך לוודא שכתובת ה-IP שויכה. היא אמורה להופיע מתחת ל-EXTERNAL-IP שבהמשך. אם הוא לא מופיע אחרי כמה דקות, אפשר לעבור אל האשכול במסוף כדי לפתור את הבעיה.

    kubectl get service $NAME --namespace $NAMESPACE
    
    1. מעתיקים את הקובץ הבינארי onprem_client מתמונת ה-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. משתמשים בקובץ הבינארי onprem_client כדי לשלוח שאילתה:

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

המאמרים הבאים

כך שולחים בקשת תמלול ל-Speech-to-Text On-Prem API.