IBM Cloud Kubernetes Service 内の Kubernetes への Voice Gateway のデプロイ

IBM® Voice Gateway を IBM Cloud Kubernetes Service 内の Kubernetes クラスターにデプロイして、クラウドで実行することができます。

始めに

IBM Cloud 内の Kubernetes クラスターへの Voice Gateway のデプロイ

  1. コマンド・ラインを使用して IBM Cloud 上の Kubernetes クラスターにアクセスできるように、以下の CLI ツールを構成します。

    1. IBM Cloud CLI をインストールします。これは、コマンド・ラインから IBM Cloud Kubernetes Service と対話するために必要です。
    2. IBM Cloud Kubernetes Service プラグイン (ibmcloud ks) および Kubernetes CLI をインストールします

      IBM Cloud Kubernetes Service プラグイン (ibmcloud ks) は、コマンド・ラインから Voice Gateway クラスターを管理するために必要です。 Kubernetes CLI では、ネイティブ Kubernetes コマンドを使用して IBM Cloud と対話できます。

    3. kubectl コマンドを実行するように IBM Cloud CLI を構成します

      CLI を構成した後は、Kubernetes kubectl コマンドを実行することによって、IBM Cloud 内の Voice Gateway クラスターを操作できます。

    4. Calico CLI をインストールして構成しcalicoctl コマンドを使用してデフォルトのネットワーク・ポリシーを変更できるようにします。

      ネットワーク・ポリシーは、クラスター内のポッドを出入りするネットワーク・トラフィックのどれを許可し、どれをブロックするかを指定します。

  2. ローカルの sample.voice.gateway リポジトリーの複製内の kubernetes/bluemix ディレクトリーの下にある single-tenant ディレクトリーまたは multi-tenant ディレクトリーのいずれかに移動します。 次に、サンプル Calico ネットワーク・ポリシーを適用します。

    #change to the directory
    cd sample.voice.gateway/kubernetes/bluemix/<YOUR_CHOICE_OF_SINGLE_OR_MULTI_TENANT>
    calicoctl apply -f calico-v3.yaml
    
  3. 同じディレクトリーで、Kubernetes デプロイメント・ファイルを開きます。

    • V1.0.2.0 以降: deploy.json ファイルを開きます。
    • V1.0.2.0 より前: deploy-vgw-v100x.json ファイルを deploy.json ファイルに名前変更し、deploy.json ファイルを開きます。

    このデプロイメント・ファイルには、Media Relay (vgw-media-relay) および SIP Orchestrator (vgw-sip-orchestrator) のコンテナーに関する構成情報が入っています。 各コンテナーの env オブジェクトに名前と値のペアのリストが入っており、それぞれ構成環境変数に対応しています。

    1. deploy.json ファイルを編集して、Voice Gateway の実装に必要な以下の Watson サービスの資格情報を入力します。

      vgw-media-relay コンテナーに、以下のすべての値を入力します。

      • Speech to Text: WATSON_STT_TOKEN_SERVICE_PROVIDER_URLWATSON_STT_URL
      • Text to Speech (セルフサービスのみ): WATSON_TTS_TOKEN_SERVICE_PROVIDER_URLWATSON_TTS_URL

      vgw-sip-orchestrator コンテナーに、Watson Assistant 値を入力します。

      • Watson Assistant (セルフサービスのみ): WATSON_CONVERSATION_WORKSPACE_IDWATSON_CONVERSATION_TOKEN_SERVICE_PROVIDER_URLWATSON_CONVERSATION_URL

        Watson Assistant ワークスペース ID を見つけるには、Watson Assistant ツール内の「ワークスペース」ビューに移動します。 アシスタントを選択し、使用したいスキル上で「アクション」アイコン () をクリックし、「詳細の表示」を選択します。

        重要: ファイル内に API 鍵を指定しないでください。 資格情報を保護するために、Kubernetes 秘密を作成します。

      例:

      {
         "name": "WATSON_CONVERSATION_URL",
         "value": "https://gateway.watsonplatform.net/assistant/api"
      },{
         "name":"WATSON_CONVERSATION_WORKSPACE_ID",
         "value":"2346v425-ya4v-26hj-5hu6-wf57b9fc253c"
      },{
         "name":"WATSON_CONVERSATION_TOKEN_SERVICE_PROVIDER_URL",
         "value":"https://iam.cloud.ibm.com/identity/token"
      },{
         "name":"WATSON_CONVERSATION_APIKEY",
         "valueFrom": {
             "secretKeyRef": {
                 "name": "secret-creds",
                 "key": "WATSON_CONVERSATION_APIKEY"
             }
         }
      }
      

      これらの値を指定するときや値を見つけるときに問題があった場合、このサイトが役立つことがあります。

    1. SIP トランクまたはセッション・ボーダー・コントローラーを既に構成した場合は、vgw-sip-orchestrator コンテナーの env オブジェクトで WHITELIST_TO_URI 値を定義します。 SIP トランクへの通話をホワイトリスト登録すると、サービス妨害 (DoS) 攻撃や、外部ソースからの望まないセッションを防止するのに役立ちます。これらが発生すると、Watson サービスの不要な課金を招き、Voice Gateway のパフォーマンスに影響するおそれがあります。 詳しくは、『発信者および着信者のホワイトリスト登録』を参照してください。

      {
        "name": "WHITELIST_TO_URI",
      "value": "2345556789"
      }
      
    2. エージェント・アシスタントを実装している場合は、transcription レポート・イベントを構成します。

      例:

      {
        "name": "REPORTING_URL",
      "value": "http://myresteventserver.ibm.com/"
      }, {
        "name": "REPORTING_USERNAME",
      "value": "myRestAdmin"
      }
      {
        "name": "REPORTING_PASSWORD",
      "value": "myRestTokenOrPassword"
      }, {
        "name": "REPORTING_TRANSCRIPTION_EVENT_INDEX",
      "value": "transcription"
      }
      
  4. Kubernetes 秘密を作成して、Watson サービス・インスタンスのパスワード資格情報を保管します。 秘密を作成するには、kubectl create secret generic secret-creds コマンドを実行します。このとき、--from-literal オプションを使用して、以下の各サービスの環境変数とパスワード資格情報を指定します。

    • Speech to Text: WATSON_STT_APIKEY
    • Text to Speech (セルフサービスのみ): WATSON_TTS_APIKEY
    • Watson Assistant (セルフサービスのみ): WATSON_CONVERSATION_APIKEY

      以下のコードは、秘密の例を示しています。

      kubectl create secret generic secret-creds
      --from-literal=WATSON_STT_APIKEY=aaaBBBcc2hskx44mdcdd_Ind3
      --from-literal=WATSON_TTS_APIKEY=aaaBBBcc2hskx44mdcdd_Ind3
      --from-literal=WATSON_CONVERSATION_APIKEY=aaaBBBcc2hskx44mdcdd_Ind3
      

      この秘密は、Voice Gateway を再デプロイするたびに再使用できます。 秘密を再作成する必要が生じるのは、サービス・インスタンスを変更した場合のみです。

  5. kubectl create コマンドでデプロイメント・ファイルを指定して、Voice Gateway コンテナーを入れる Kubernetes ポッドを作成します。

     kubectl create -f deploy.json
    

    このコマンドを実行すると、1 つの Kubernetes クラスター内の単一ワーカー・ノード上に Voice Gateway ポッドを 1 つデプロイします。

次の作業

IBM Cloud Kubernetes Service 内に Voice Gateway をデプロイした後、Voice Gateway の開始で説明しているように、デプロイメントをテストします。 ibmcloud ks workers myClusterName コマンドを実行すると、Voice Gateway のパブリック IP アドレスを判別できます。

kubectl を使用した Kubernetes クラスターとの対話に不慣れな場合、詳細については Kubernetes 資料を参照してください。この資料には kubectl の説明書が含まれています。

deploy.json ファイルを編集して構成変数を追加または変更した後、ポッドを再デプロイすることにより、Voice Gateway デプロイメントをさらに構成できます。 USE_OPTIMAL_CONFIGURATION 環境変数を設定することにより、最新のリリースに含まれている最適な構成設定を使用できます。 最適な構成設定の使用 (Using optimal configuration settings) を参照してください。

機密情報の保護: Text to Speech キャッシュおよび音声録音収集の両方がデフォルトで無効化されます。 これらのフィーチャーを有効にする場合、Voice Gateway がデプロイされているファイル・システムに書き込まれる可能性のある機密データを保護および軽減するための適切な手段を講じてください。 Voice Gateway を IBM Cloud にデプロイした場合、データ・ストレージは自動的に暗号化されます。 『IBM Cloud Kubernetes Service のセキュリティー』を参照してください。 暗号化は、音声録音またはキャッシュされた Text to Speech 応答を通して生成される可能性のある機密情報を保護するのに役立つことがあります。 IBM Cloud Kubernetes Service 暗号化は、ファイル・システムに保管されたデータのみを保護します。 Voice Gateway と統合されたサービス内のデータを保護するには、追加ステップを実行する必要があります。

ポッドに関する情報の表示

Voice Gateway ポッドを開始した後、Kubernetes ダッシュボードまたはコマンド・ラインを使用して、ポッドに関する情報を表示できます。

追加の Voice Gateway ポッドのデプロイ

追加の Voice Gateway ポッドをデプロイする場合、IBM Cloud 内の標準 Kubernetes クラスターに移動して、クラスターにノードを追加する必要があります。これは、1 つのノードにつき 1 つの Voice Gateway ポッドしか実行できないためです。 次に、deploy.json ファイル内の replicas 値を、ノードの数以下に変更します。 複数の Voice Gateway ポッドをデプロイする場合は、さらに SIP ロード・バランサー (IBM Cloud 内の Citrix NetScaler VPX 専用ロード・バランサーなど) もデプロイする必要があります。

Voice Gateway の高可用性の構成について詳しくは、『高可用性のセットアップ』を参照してください。