IBM Cloud Kubernetes Service 内の Kubernetes への Voice Gateway のデプロイ
IBM® Voice Gateway を IBM Cloud Kubernetes Service 内の Kubernetes クラスターにデプロイして、クラウドで実行することができます。
始めに
-
GitHub 上の sample.voice.gateway リポジトリーを複製またはダウンロードします。 このリポジトリーには、Kubernetes デプロイメント・ファイルや Calico ネットワーク・ポリシーなど、Voice Gateway をデプロイするために必要なサンプル・ファイルが入っています。
-
IBMid および IBM Cloud アカウントに登録し、以下の Watson サービスを作成します。
- Speech to Text
- Text to Speech (セルフサービスのみ)
- IBM Watson™ Assistant (セルフサービスのみ)
作成した各サービスの資格情報をメモしておきます。 Voice Gateway の構成でこの資格情報の指定が必要になります。
重要: Watson Assistant の場合、ダイアログ付きのワークスペースを追加する必要があります。 複製された sample.voice.gateway GitHub リポジトリーから conversation/sample-conversation-en.json ファイルをインポートすると、迅速に開始できます。 JSON ファイルのインポートについて詳しくは、Watson Assistant 資料の Creating workspaces を参照してください。 サンプルを使用せずに独自のダイアログを作成する場合、ダイアログには必ず
conversation_start
条件を含むノードとデフォルト応答を含むノードを組み込んでください。 -
また、IBM Cloud では、IBM Cloud Kubernetes Service 内に Kubernetes クラスターの作成も行います。 クラスターのセットアップについて詳しくは、IBM Cloud Kubernetes Service の資料を参照してください。
注: 30 日間の無料の試用期間に限り、ライト・クラスターを利用いただけます。このクラスターは、試用期間の終了後に自動的に削除されます。 実動デプロイメントには、必ず標準クラスターを使用してください。 詳しくは、IBM Cloud Kubernetes Service 資料のクラスター比較情報を参照してください。
IBM Cloud 内の Kubernetes クラスターへの Voice Gateway のデプロイ
-
コマンド・ラインを使用して IBM Cloud 上の Kubernetes クラスターにアクセスできるように、以下の CLI ツールを構成します。
- IBM Cloud CLI をインストールします。これは、コマンド・ラインから IBM Cloud Kubernetes Service と対話するために必要です。
-
IBM Cloud Kubernetes Service プラグイン (ibmcloud ks) および Kubernetes CLI をインストールします。
IBM Cloud Kubernetes Service プラグイン (ibmcloud ks) は、コマンド・ラインから Voice Gateway クラスターを管理するために必要です。 Kubernetes CLI では、ネイティブ Kubernetes コマンドを使用して IBM Cloud と対話できます。
-
kubectl
コマンドを実行するように IBM Cloud CLI を構成します。CLI を構成した後は、Kubernetes
kubectl
コマンドを実行することによって、IBM Cloud 内の Voice Gateway クラスターを操作できます。 -
Calico CLI をインストールして構成し、
calicoctl
コマンドを使用してデフォルトのネットワーク・ポリシーを変更できるようにします。ネットワーク・ポリシーは、クラスター内のポッドを出入りするネットワーク・トラフィックのどれを許可し、どれをブロックするかを指定します。
-
ローカルの 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
-
同じディレクトリーで、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
オブジェクトに名前と値のペアのリストが入っており、それぞれ構成環境変数に対応しています。-
deploy.json
ファイルを編集して、Voice Gateway の実装に必要な以下の Watson サービスの資格情報を入力します。vgw-media-relay
コンテナーに、以下のすべての値を入力します。- Speech to Text:
WATSON_STT_TOKEN_SERVICE_PROVIDER_URL
、WATSON_STT_URL
- Text to Speech (セルフサービスのみ):
WATSON_TTS_TOKEN_SERVICE_PROVIDER_URL
、WATSON_TTS_URL
vgw-sip-orchestrator
コンテナーに、Watson Assistant 値を入力します。-
Watson Assistant (セルフサービスのみ):
WATSON_CONVERSATION_WORKSPACE_ID
、WATSON_CONVERSATION_TOKEN_SERVICE_PROVIDER_URL
、WATSON_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" } } }
これらの値を指定するときや値を見つけるときに問題があった場合、このサイトが役立つことがあります。
- Speech to Text:
-
SIP トランクまたはセッション・ボーダー・コントローラーを既に構成した場合は、
vgw-sip-orchestrator
コンテナーのenv
オブジェクトでWHITELIST_TO_URI
値を定義します。 SIP トランクへの通話をホワイトリスト登録すると、サービス妨害 (DoS) 攻撃や、外部ソースからの望まないセッションを防止するのに役立ちます。これらが発生すると、Watson サービスの不要な課金を招き、Voice Gateway のパフォーマンスに影響するおそれがあります。 詳しくは、『発信者および着信者のホワイトリスト登録』を参照してください。{ "name": "WHITELIST_TO_URI", "value": "2345556789" }
-
エージェント・アシスタントを実装している場合は、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" }
- V1.0.2.0 以降:
-
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 を再デプロイするたびに再使用できます。 秘密を再作成する必要が生じるのは、サービス・インスタンスを変更した場合のみです。
- Speech to Text:
-
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 ダッシュボードまたはコマンド・ラインを使用して、ポッドに関する情報を表示できます。
- Kubernetes ダッシュボードを表示するには、
kubectl proxy
コマンドを実行し、ブラウザーでhttp://localhost:8001/ui/
を開きます。 - コマンド・ラインからのポッド情報を取得するには、以下を行います。
- すべてのポッドを表示する場合:
kubectl get pods
- 特定のポッドに関する詳細を取得する場合:
kubectl describe pod pod1
- すべてのポッドを表示する場合:
追加の Voice Gateway ポッドのデプロイ
追加の Voice Gateway ポッドをデプロイする場合、IBM Cloud 内の標準 Kubernetes クラスターに移動して、クラスターにノードを追加する必要があります。これは、1 つのノードにつき 1 つの Voice Gateway ポッドしか実行できないためです。 次に、deploy.json
ファイル内の replicas
値を、ノードの数以下に変更します。 複数の Voice Gateway ポッドをデプロイする場合は、さらに
SIP ロード・バランサー (IBM Cloud 内の Citrix NetScaler VPX 専用ロード・バランサーなど) もデプロイする必要があります。
Voice Gateway の高可用性の構成について詳しくは、『高可用性のセットアップ』を参照してください。