NCP と NSX Node Agent を設定し、実行します。

手順

  1. roles/ncp/defaults/main.yaml を編集して、OpenShift API サーバの IP アドレス、NSX Manager の IP アドレス、および NCP ReplicationController yaml と nsx-node-agent DaemonSet yaml をダウンロードする URL を指定します。
  2. openshift-ansible-nsx ディレクトリから ncp ロールを実行します。
        ansible-playbook -i /PATH/TO/HOSTS/hosts ncp.yaml

タスクの結果

ncp ロールは次の処理を実行します。

  • nsx-system プロジェクトが存在するかどうかを確認します。存在しない場合にはプロジェクトを作成します。

        oc new-project nsx-system
  • ncp-rbac yaml ファイルをダウンロードし、apiVersionv1 に変更します。

  • NCP ポッドのサービス アカウントを作成し、NCP がアクセス可能なリソースを指定するクラスタ ロールを作成して、そのクラスタ ロールを NCP サービス アカウントにバインドします。

  • nsx-node-agent ポッドのサービス アカウントを作成し、Node Agent がアクセス可能なリソースを指定するクラスタ ロールを作成して、そのクラスタ ロールを Node Agent サービス アカウントにバインドします。

        oc apply -f /tmp/ncp-rbac.yml
  • 上記のサービス アカウントに関連付けられているトークンを取得し、/etc/nsx-ujo/<service_account>_token に保存します。

        secret=`kubectl get serviceaccount ncp-svc-account -o yaml | grep -A1 secrets | tail -n1 | awk {'print $3'}`
        kubectl get secret $secret -o yaml | grep 'token:' | awk {'print $2'} | base64 -d > /etc/nsx-ujo/ncp_token
        secret=`kubectl get serviceaccount nsx-node-agent-svc-account -o yaml | grep -A1 secrets | tail -n1 | awk {'print $3'}`
        kubectl get secret $secret -o yaml | grep 'token:' | awk {'print $2'} | base64 -d > /etc/nsx-ujo/node_agent_token
  • NCP の SecurityContextConstraint (SCC) yaml ファイル ncp-os-scc.yml をダウンロードし、yaml に基づいて SCC を作成します。

        oc apply -f ncp-os-scc.yml

    SCC yaml ファイルでは、NCP/nsx-node-agent が SELinux でアクセス権限を確保できるように、SELinux タイプを spc_t に指定しています。これは以下のようになります。

        seLinuxContext:
          seLinuxOptions:
          type: spc_t

    SCC yaml ファイルでは、別のファイル カテゴリからターゲットへの ncp/node-agent アクセスを許可するために seLinuxContextseLinuxOptions で SELinux ラベルに基づいたアクセス コントロール レベルが s0:c0:c1023 に設定されます。

  • NCP と NSX Node Agent ポッドを作成したユーザーに SCC を追加します。たとえば、現在のプロジェクトのデフォルト ユーザーに SCC を追加するには以下のように記述します。

        oc adm policy add-scc-to-user ncp-scc -z default
  • NCP および NSX Node Agent のサービス アカウントに SCC を以下のように追加します。

        oc adm policy add-scc-to-user ncp-scc -z ncp-svc-account
        oc adm policy add-scc-to-user ncp-scc -z nsx-node-agent-svc-account
  • NCP ReplicationController (RC) と nsx-node-agent DaemonSet (DS) の yaml ファイルをダウンロードし、ConfigMap を更新します。

  • NCP イメージをダウンロードしてロードします(nsx-node-agent も同じイメージを使用します)。

  • サービス アカウントを設定し、NCP と nsx_node_agent に必要な SecurityContextConstraint を設定します。

  • NCP ReplicationController と nsx-node-agent DaemonSet を作成します。

注:

NCP は、Kubernetes リソースのライフ サイクル イベントを監視するために、Kubernetes API サーバにパーシステント HTTP 接続を確立します。API サーバの障害またはネットワーク障害が原因で NCP の TCP 接続が無効になった場合は、NCP を再起動して、API サーバへの接続を再度確立する必要があります。接続できないと、NCP で新しいイベントが認識されません。