NCP 및 NSX 노드 에이전트를 설치하고 실행합니다.

프로시저

  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 포드에 대한 서비스 계정을 생성하고, 노드 에이전트가 액세스할 수 있는 리소스를 지정한 후 클러스터 역할을 노드 에이전트 서비스 계정에 바인딩합니다.

        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용 SCC(SecurityContextConstraint) 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 파일에서 seLinuxContextseLinuxOptions에는 ncp/node-agent 에이전트가 다양한 파일 범주의 대상에 액세스할 수 있도록 SELinux 레이블 기반 액세스 제어 수준이 s0:c0:c1023으로 설정됩니다.

  • NCP 및 NSX 노드 에이전트 포드를 생성하는 사용자에게 SCC를 추가합니다. 예를 들어 현재 프로젝트의 기본 사용자에게 SCC를 추가하려면 다음과 같이 합니다.

        oc adm policy add-scc-to-user ncp-scc -z default
  • NCP 및 NSX 노드 에이전트 서비스 계정에 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 RC(ReplicationController) 및 nsx-node-agent DS(DaemonSet)용 yaml 파일을 다운로드하고 ConfigMap을 업데이트합니다.

  • NCP 이미지를 다운로드하고 로드합니다(nsx-node-agent는 동일한 이미지를 사용함).

  • 서비스 계정을 구성하고 NCP 및 nsx_node_agent에 필요한 SecurityContextConstraint를 설정합니다.

  • NCP ReplicationController 및 nsx-node-agent DaemonSet을 생성합니다.

참고:

NCP가 Kubernetes API 서버에 대한 영구 HTTP 연결을 열어 Kubernetes 리소스의 수명주기 이벤트를 모니터링합니다. API 서버 장애 또는 네트워크 장애로 인해 NCP의 TCP 연결 문제가 발생하는 경우 NCP를 다시 시작하여 API 서버에 대한 연결을 다시 설정해야 합니다. 그러지 않으면 NCP가 새 이벤트를 확인하지 못합니다.