빠른 시작: API 쿼리

기본 요건

  1. 시작하기 전에 빠른 시작에서 필요한 모든 단계를 완료하세요.
  2. API를 배포합니다.

개요

사용된 설치 방법과 관계없이 동일한 메서드를 사용하여 API를 쿼리할 수 있습니다. API를 쿼리하는 방법은 공개 엔드포인트가 구성되었는지 여부에 따라 달라집니다. 엔드포인트가 공개되지 않은 경우 API를 직접 노출하는 방법을 결정해야 합니다. 클러스터에서 지원하는 경우 인그레스 만들기, 생성된 서비스 게시, 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 인그레스 게이트웨이가 공개 IP로 실행 중인지 확인합니다. Istio를 설치하지 않은 경우 $PUBLIC_IP 값을 설정할 수 있습니다. 이 작업이 완료되면 텍스트 변환 쿼리를 공개 엔드포인트에 제출할 수 있습니다.

  1. Istio를 설치한 경우 안내에 따라 인그레스 공개 IP를 가져와 PUBLIC_IP로 설정합니다.

  2. Istio를 설치하지 않은 경우 IP 주소가 결합되었는지 확인합니다. 아래의 EXTERNAL-IP 아래에 표시됩니다. 몇 분 후에도 표시되지 않으면 Console의 클러스터로 이동하여 문제를 해결하세요.

    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에 텍스트 변환 요청 보내는 방법 알아보기