Kubernetes を使用した Sametime ミーティングのインストール

始める前に

  • Ingress Controller を使用した Kubernetes v1.16.0 以降 (基本的な単一ノード・デプロイメントについては「Kubernets クイックスタート」を参照してください)
  • Helm v3.1.2
  • Sametime プロキシ v11.6
  • Sametime チャット v11.6

このタスクについて

ネットワークに関する考慮事項

Sametime ミーティングではデフォルトでポート 30000 で UDP を使用します。サービスを提供するクライアントにこのポートへの UDP インバウンド・アクセス権が設定され、デプロイメントからのアウトバウンド UDP トラフィックが制限されていない必要があります。さらに Sametime ミーティングでは、インターネットにアクセス可能な STUN サーバーを使用して、クライアントとサーバーでオーディオ/ビデオ/アプリ共有データの交換のためのメディア・パスをネゴシエーションできるようになります。公開 Google STUN サーバーはデフォルトで設定されています。

次を追加します。

stun.l.google.com:19302
stun1.l.google.com:19302
stun2.l.google.com:19302

これらのアドレスはコンテナーからアクセスできる必要があります。アクセスできない場合は、ミーティングに参加中に問題が発生する可能性があります。

デフォルト STUN サーバーを変更するには、 「代替 STUN サーバーの構成」を参照してください。

Docker/Kubernetes ではデプロイされたサービスに内部プライベート・ネットワーク・アドレスを使用します。アプリケーションではノード上のネットワーク・ポートを直接公開する場合もあります。Sametime ミーティングでは、HTTP/HTTPS トラフィック用の LoadBalancer サービスとメディア・トラフィック用の NodePort サービスが定義されます。これらのサービスを外部に公開するには、HTTP/HTTPS トラフィックに Ingress Controller が必要になり、ノードの IP アドレスがメディア・トラフィックに対してアクセス可能である必要があります。

Kubernetes に Sametime ミーティングをデプロイするには

手順

  1. Flexnet から Sametime_meetings.zip をダウンロードします。
  2. マスター kubernetes ホスト自体または kubernetes クラスターへの管理アクセス権限を持つマシン上のいずれかのディレクトリーに zip ファイルを解凍します。
  3. そのディレクトリーに変更し、次のコマンドを実行して Docker イメージを Docker レジストリーにロードします。
    ./load.sh
    注: ロード・スクリプトは、デフォルトで Docker イメージをローカル・ホストに抽出するのみです。プロンプトが表示されたら、独自の Docker レジストリー・ホスト FQDN を指定する必要があります。これはクラウド・プロバイダー・レジストリーかすべてのノードからアクセス可能なその他のプライベート・レジストリーである可能性があります。独自のレジストリーを使用しない場合は、kubernetes クラスター内の各ノードでロード・スクリプトを実行し、スクリプトのデフォルト値を使用する必要があります。

    1. デプロイメントのシークレットを構成します。
      ./generateSecrets.sh
      プロンプトが表示されたら、既存の Sametime デプロイメントの Sametime JWT シークレットを入力します。Community サーバーの sametime.ini ファイルで、値は JWT_SECRET 構成項目に定義されます。プロキシ・サーバーでは、stproxyconfig.xml<jwtSecret> 構成エレメントの値になります。この値は、両方の場所で base64 でエンコードされています。base64 でエンコードされた値をここにコピーして貼り付けます。
      注: 新しいシークレットを定義するには、フィールドに値を入力しないでください。
    2. このコマンドの実行後、 helm/templates/meetings-secrets.yaml にはこのデプロイメントに固有のシークレットが含まれます。この sametimeJwt 値は JwtSecret データ・オブジェクトにあり、Sametime v11.6 のチャット・サーバーとプロキシ・サーバーの sametime.inistproxyconfig.xml でそれぞれ構成される必要があります。
  4. ミーティング録画ボリュームを作成します。
    ミーティング録画は、ミーティング中にミーティングレコーダーノードの一時ディレクトリーに MP4 ファイルとして保存されます。ミーティングの後、録画は永続ボリュームに移動されます。kubernetes クラスターにアクセス可能なボリュームを割り当てると、会議の 1 時間あたり約 100M の速度を想定して、予想される会議録画数を処理するのに十分な量を割り当てる。
    注: デフォルトでは録画は 3 日間保持されるので、ボリュームをサイズ変更する際にはこの点を念頭に置いてください。
    • 自己管理 k8s クラスターで永続ボリュームを作成するには、「単一ノード・デプロイメント用の永続ストレージの構成」を参照してください。
    • クラウド・プロバイダーの場合、永続ストレージを作成するためのさまざまなオプションがあります。その結果、記録のニーズを満たすのに十分なストレージを持つ永続ボリューム・クレームが kubernetes クラスターに確立されるようにしてください。クレームの accessMode は ReadWriteOnce にしてください。kubernetes クラスターで使用可能なストレージがある場合は、すべてのクラウド・プロバイダーで機能するデフォルトの storageClassName を想定し、以下のコマンドを使用してクレームを定義できます。ファイルを編集して、必要に応じて十分なストレージ量を構成してください。
      kubectl create -f kubernetes/storage/sametime-meetings-pvc.yaml
  5. helm ディレクトリーに移動し、グローバル構成を編集します。
    注: これらの値は大/小文字が区別され、小文字で入力する必要があります。
    デプロイメントの詳細を使用して values.yaml ファイルを構成します。以下は重要なフィールド、説明、該当する場合のデフォルト値になります。
    • server_host_name

      これはユーザーが Web ブラウザーを介してアクセスする場合と同じシステムの完全修飾ホスト名として定義されるべきです、デフォルトは meetings.company.com

    • jwtCookieDomain

      これは完全修飾ホスト名のドメイン部分として定義されるべきです。Sametime プロキシ・デプロイメントでのシングル・サインオンに使用されます。例えばプロキシが webchat.company.com で、ミーティング・サーバーが meetings.company.com の場合、2 つのデプロイメント間で Cookie を共有できるようになるように Cookie ドメインは company.com であるべきです。デフォルトは空です。つまり、SSO が構成されていません。

    • sametimeProxyHost

      これは Sametime プロキシ v11.6 ホストの解決可能な名前または IP アドレスです。デフォルトは空です。

    • sametimeProxyPort

      これは Sametime プロキシ v11.6 ホストのポートです。デフォルトは 443 です。

    • idpUrl

      SAML が認証に使用される場合、これはその構成の IDP URL になります。デフォルトは空です。

    • jvbPort

      これはデプロイメントで使用されるメディア・ポートです。デプロイメントで使用される Kubernetes NodePort を定義します。値はノード・ポート範囲構成を専門にしている場合を除き、30000 から 32767 の範囲内にする必要があります。デフォルトは 30000 です。

    • privateIp

      これはサーバーにアクセスするネットワーク・アドレスです。

    • numberOfRecorders

      これは固定数のレコーダーで、特定の静的デプロイメントに対して一度に記録できるミーティングの数を制限します。この値はお使いの仮想サウンド・デバイスの数と一致している必要があります。詳しくは、ホスト上の仮想サウンド・デバイスの構成を参照してください。

      クラウド・プロバイダーにデプロイする場合、ポッドからノードの 1 対 1 構成を想定して、レコーダー・ノード・グループ内の最小ノード数と一致するレコーダーのデフォルト数になります。レコーダー・ノードの数は、必要に応じてこの最小サイズからレコーダー・ノード・グループの最大サイズまで増加します。デフォルトは 5 です。

    • recordingsExpireInDays

      ミーティング録画をダウンロード/再生できる日数です。デフォルトは 3 です。

    • recordingsClaim

      これはミーティング録画用のストレージ・ボリュームを定義する永続ボリューム・クレームの名前です。デフォルトは sametime-meetings です。

    • imageRepo

      これは Sametime ミーティング Docker イメージがある Docker リポジトリ―ーです。クラウド・プロバイダーのイメージ・レジストリーや独自のプライベート・レジストリーを使用する場合は、この設定をそのイメージ・レジストリーのベース名に更新する必要があります。デフォルトは sametime-docker-prod.cwp.pnp-hcl.com で、各 kubernetes ノードで ./load.sh スクリプトをデフォルト構成で実行したと想定されます。

  6. Helm グラフをデプロイします
    helm install sametime-meetings .
    注:
    • このコマンドでは、ユーザーが helm ディレクトリー内に存在すると想定されます。. は現行ディレクトリーを表します。
    • sametime-meetings の代わりにデプロイメントの記述名を選択できます。-n or --namespace オプションを使用して、名前空間にアプリケーションをデプロイすることもできます。最初に、kubectl create namespace を介して名前空間を作成します。
  7. サービスを確認します。
    少なくとも 3 人のユーザーがミーティングに参加して、お互いに顔を見て、声が聞こえることを確認します(2 人のミーティングの場合は、サーバーを通過するメディア・パスを避けるため、有効なテストを提供しないように最適化されています)。

    1 つのマシンからサービスを検証できます。

    1. 1 つのマシンから 3 人の個別のユーザーとしてミーティングにログインし、それぞれ独自のブラウザー・タブでログインします。
    2. ユーザーの音声の調整を解除
    3. ユーザーの音が聞こえれば、サービスは機能しています。