Configure y ejecute NCP y el agente del nodo de NSX.

Procedimiento

  1. Edite roles/ncp/defaults/main.yaml y especifique la IP del servidor de la API de OpenShift, la IP de NSX Manager y las URL para descargar el archivo yaml ReplicationController de NCP y el archivo yaml nsx-node-agent de DaemonSet.
  2. Desde el directorio openshift-ansible-nsx, ejecute la función de ncp:
        ansible-playbook -i /PATH/TO/HOSTS/hosts ncp.yaml

Resultados

La función ncp realiza los siguientes pasos:

  • Comprobar si existe un proyecto nsx-system y crear uno si no es así.

        oc new-project nsx-system
  • Descargar el archivo yaml ncp-rbac y cambiar la apiVersion a v1.

  • Crear la cuenta de servicio para el pod de NCP, crear una función de clúster que especifique los recursos a los que puede acceder el NCP y enlazar la función de clúster con la cuenta de servicio del NCP.

  • Crear la cuenta de servicio para el pod nsx-node-agent, crear una función de clúster que especifique los recursos a los que puede acceder el agente del nodo y enlazar la función de clúster con la cuenta de servicio del agente del nodo.

        oc apply -f /tmp/ncp-rbac.yml
  • Obtener el token asociado a las cuentas de servicio anteriores y almacenarlo en /etc/nsx-ujo/<cuenta_servicio>_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
  • Descargar el archivo yaml de SecurityContextConstraint (SCC) ncp-os-scc.yml para NCP y crear la instancia de SCC basada en el archivo yaml.

        oc apply -f ncp-os-scc.yml

    El archivo yaml de SCC especifica el tipo de SELinux como spc_t para garantizar que NCP/nsx-node-agent tenga permisos de acceso en SELinux. Esto quiere decir lo siguiente:

        seLinuxContext:
          seLinuxOptions:
          type: spc_t

    En el archivo yaml de SCC, en seLinuxOptions de seLinuxContext, el nivel de control de acceso basado en etiquetas de SELinux se establece como s0:c0:c1023 para permitir que ncp/node-agent acceda a destinos desde diferentes categorías de archivo.

  • Agregar SCC al usuario que crea los pods de agente de nodo de NCP y NSX. Por ejemplo, para agregar SCC al usuario predeterminado en el proyecto actual:

        oc adm policy add-scc-to-user ncp-scc -z default
  • Agregar SCC a las cuentas de servicio de agente de nodo de NCP y NSX:

        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
  • Descargar los archivos yaml para ReplicationController (RC) de NCP y DaemonSet (DS) de nsx-node-agent, y actualizar ConfigMap.

  • Descargar y cargar la imagen de NCP (nsx-node-agent usa la misma imagen).

  • Configurar la cuenta del servicio y establezca el SecurityContextConstraint necesario para NCP y nsx_node_agent.

  • Crear el ReplicationController de NCP y el DaemonSet de nsx-node-agent.

Nota:

NCP abre conexiones HTTP persistentes con el servidor de API de Kubernetes para inspeccionar los eventos de ciclo de vida de los recursos de Kubernetes. Si un error del servidor de API o un error de red provoca que las conexiones TCP de NCP queden obsoletas, debe reiniciar NCP para que se puedan restablecer las conexiones con el servidor de API. De lo contrario, NCP no detectará los nuevos eventos.