Los recursos de NSX-T Data Center que necesita configurar incluyen una zona de transporte de superposición, un enrutador lógico de nivel 0, un conmutador lógico para conectar las máquinas virtuales del nodo, bloques de IP para los nodos de Kubernetes y un grupo de IP para SNAT.

Importante: Si ejecuta NSX-T Data Center 2.4 o una versión posterior, debe configurar los recursos de NSX-T mediante la pestaña Opciones avanzadas de redes y seguridad.

En el archivo de configuración de NCP ncp.ini, los recursos de NSX-T Data Center se especifican mediante sus UUID o nombres.

Zona de transporte superpuesta

Inicie sesión en NSX Manager y desplácese hasta Sistema > Tejido > Zonas de transporte. Encuentre la zona de transporte superpuesta que se usa para las redes de los contenedores o cree una nueva.

Especifique una zona de transporte superpuesta de un clúster configurando la opción overlay_tz en la sección [nsx_v3] de ncp.ini. Este paso es opcional. Si no se configura overlay_tz, NCP recuperará automáticamente el identificador de zona de transporte superpuesta del enrutador de nivel 0.

Enrutamiento lógico de nivel 0

Inicie sesión en NSX Manager y desplácese hasta Opciones avanzadas de redes y seguridad > Redes > Enrutadores. Encuentre el enrutador que se usa para las redes de los contenedores o cree uno nuevo.

Especifique un enrutador lógico de nivel 0 de un clúster configurando la opción tier0_router en la sección [nsx_v3] de ncp.ini.

Nota: El enrutador se debe crear en modo activo-en espera.

Conmutador lógico

Las vNIC que usan el nodo para el tráfico de datos deben estar conectadas a un conmutador lógico superpuesto. No es obligatorio que la interfaz de administración del nodo esté conectada a NSX-T Data Center, aunque hacerlo facilitaría la configuración. Para crear un conmutador lógico, inicie sesión en NSX Manager y desplácese hasta Opciones avanzadas de redes y seguridad > Redes > Conmutación > Conmutadores. En el conmutador, cree puertos lógicos y asocie las vNIC del nodo a ellos. Los puertos lógicos deben tener las siguientes etiquetas:
  • etiqueta: <cluster_name>, ámbito: ncp/cluster
  • etiqueta: <node_name>, ámbito: ncp/node_name
El valor de <cluster_name> debe coincidir con el valor de la opción cluster de la sección [coe] de ncp.ini.

Bloques de IP para los pods de Kubernetes

Inicie sesión en NSX Manager y desplácese hasta Opciones avanzadas de redes y seguridad > Redes > IPAM para crear uno o varios bloques de direcciones IP. Especifique el bloque de IP en formato CIDR

Especifique bloques de IP de pods de Kubernetes configurando la opción container_ip_blocks en la sección [nsx_v3] de ncp.ini.

También puede crear bloques de IP específicos para los espacios de nombres que no sean SNAT (para Kubernetes) o los clústeres (para PCF).

Especifique bloques de IP que no sean SNAT configurando la opción no_snat_ip_blocks en la sección [nsx_v3] de ncp.ini.

Si crea bloques de IP que no sean SNAT mientras NCP se ejecuta, debe reiniciar NCP. De lo contrario, NCP seguirá usando los bloques de IP compartidos hasta que se agoten.

Nota: Cuando cree un bloque de IP, el prefijo no debe tener una longitud superior al valor del parámetro subnet_prefix en el archivo de configuración de NCP ncp.ini. Para obtener más información, consulte ConfigMap para ncp.ini en ncp-rc.yml.

Grupo de IP de SNAT

Un grupo de direcciones IP en NSX Manager se emplea para asignar las direcciones IP que se usarán para traducir IP de pods mediante reglas SNAT y para exponer las controladoras de entrada a través de reglas SNAT/DNAT, igual que las IP flotantes de OpenStack. Estas direcciones IP también se denominan "IP externas".

Varios clústeres de Kubernetes usan el mismo grupo de IP externas. Cada instancia de NCP usa un subgrupo de este grupo para el clúster de Kubernetes que administra. De forma predeterminada, se usará el mismo prefijo de subred para subredes de pods. Para usar un tamaño de subred diferente, actualice la opción external_subnet_prefix en la sección [nsx_v3] de ncp.ini.

Puede especificar grupos de direcciones IP para SNAT configurando la opción external_ip_pools en la sección [nsx_v3] de ncp.ini.

Puede utilizar otro grupo de direcciones IP cambiando el archivo de configuración y reiniciando NCP.

Restringir un grupo de direcciones IP de SNAT a espacios de nombres de Kubernetes u organizaciones de PCF específicos

Puede especificar el espacio de nombres de Kubernetes o la organización de PCF a los que es posible asignar direcciones IP del grupo de direcciones IP de SNAT agregando las siguientes etiquetas al grupo de direcciones IP.
  • Para un espacio de nombres de Kubernetes: scope: ncp/owner, tag: ns:<namespace_UUID>
  • Para una organización de PCF: scope: ncp/owner, tag: org:<org_UUID>
Puede obtener el UUID del espacio de nombres o de la organización mediante uno de los siguientes comandos:
kubectl get ns -o yaml
cf org <org_name> --guid
Tenga en cuenta lo siguiente:
  • Cada etiqueta debe especificar un UUID. Puede crear varias etiquetas para el mismo grupo.
  • Si se cambian las etiquetas después de que se asignen direcciones IP a algunos espacios de nombres u organizaciones en función de las etiquetas anteriores, no se recuperarán dichas direcciones IP hasta que se cambien los ajustes de SNAT de los servicios de Kubernetes o las aplicaciones de PCF, o bien se reinicie NCP.
  • Las etiquetas de propietario del espacio de nombres y de la organización de PCF son opcionales. Sin estas etiquetas, se pueden asignar direcciones IP del grupo de direcciones IP de SNAT a cualquier espacio de nombres u organización de PCF.

Configurar un grupo de direcciones IP de SNAT para un servicio

Puede configurar un grupo de direcciones IP de SNAT para un servicio agregando una anotación al servicio. Por ejemplo,
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-example
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
      selector:
        app: example
    ...

El grupo de direcciones IP especificado por ncp/snat_pool debe tener la etiqueta scope: ncp/owner, tag: cluster:<cluster_name>.

NCP configurará la regla SNAT para este servicio. La IP de origen de la regla es el conjunto de pods de back-end. La IP de destino es la IP SNAT asignada desde el grupo de IP externo especificado. Si se produce un error cuando NCP configura la regla SNAT, se agregará la nota ncp/error.snat: <error> al servicio. Los posibles errores son:
  • IP_POOL_NOT_FOUND: el grupo de IP de SNAT no se encuentra en NSX Manager.
  • IP_POOL_EXHAUSTED: el grupo de IP de SNAT se agotó.
  • IP_POOL_NOT_UNIQUE: el grupo que ncp/snat_pool especifica hace referencia a varios grupos en NSX Manager.
  • SNAT_POOL_ACCESS_DENY: la etiqueta de propietario del grupo no coincide con el espacio de nombres del servicio que envía la solicitud de asignación.
  • SNAT_RULE_OVERLAPPED: se crea una nueva regla SNAT, pero el pod del servicio SNAT también pertenece a otro servicio SNAT (es decir, hay varias reglas SNAT para el mismo pod).
  • POOL_ACCESS_DENIED: el grupo de direcciones IP que ncp/snat_pool especifica no tiene la etiqueta scope: ncp/owner, tag: cluster:<cluster_name> o la etiqueta de propietario del grupo no coincide con el espacio de nombres del servicio que envía la solicitud de asignación.
Tenga en cuenta lo siguiente:
  • El grupo especificado por ncp/snat_pool ya debe existir en NSX-T Data Center antes de configurar el servicio.
  • En NSX-T Data Center, la prioridad de la regla SNAT para el servicio es mayor que la del proyecto.
  • Si se configura un pod con varias reglas SNAT, solo funcionará una.
  • Puede utilizar otro grupo de direcciones IP cambiando la anotación y reiniciando NCP.

Configurar un grupo de direcciones IP de SNAT para un espacio de nombres

Puede configurar un grupo de direcciones IP de SNAT para un espacio de nombres agregando una anotación al espacio de nombres. Por ejemplo,
    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns-sample
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
    ...
NCP configurará la regla SNAT para este espacio de nombres. La IP de origen de la regla es el conjunto de pods de back-end. La IP de destino es la IP SNAT asignada desde el grupo de IP externo especificado. Si se produce un error cuando NCP configura la regla SNAT, se agregará la nota ncp/error.snat: <error> al espacio de nombres. Los posibles errores son:
  • IP_POOL_NOT_FOUND: el grupo de IP de SNAT no se encuentra en NSX Manager.
  • IP_POOL_EXHAUSTED: el grupo de IP de SNAT se agotó.
  • IP_POOL_NOT_UNIQUE: el grupo que ncp/snat_pool especifica hace referencia a varios grupos en NSX Manager.
  • POOL_ACCESS_DENIED: el grupo de direcciones IP que ncp/snat_pool especifica no tiene la etiqueta scope: ncp/owner, tag: cluster:<cluster_name> o la etiqueta de propietario del grupo no coincide con el espacio de nombres que envía la solicitud de asignación.
Tenga en cuenta lo siguiente:
  • Solo puede especificar un grupo de direcciones IP de SNAT en la anotación.
  • No es necesario que el grupo de direcciones IP de SNAT esté configurado en ncp.ini.
  • El grupo de direcciones IP especificado por ncp/snat_pool debe tener la etiqueta scope: ncp/owner, tag: cluster:<cluster_name>.
  • El grupo de direcciones IP que ncp/snat_pool especifica también puede tener una etiqueta de espacio de nombres scope: ncp/owner, tag: ns:<namespace_UUID>.
  • Si falta la anotación ncp/snat_pool, el espacio de nombres utilizará el grupo de direcciones IP de SNAT para el clúster.
  • Puede utilizar otro grupo de direcciones IP cambiando la anotación y reiniciando NCP.

Configurar un grupo de SNAT para una aplicación PAS

NCP configura la IP de SNAT de una organización de PAS (Pivotal Application Service) de forma predeterminada. Puede configurar una IP de SNAT para una aplicación mediante la creación de una aplicación con un archivo manifest.xml que contiene la información del grupo de direcciones IP de SNAT. Por ejemplo,
    applications:
      - name: frontend
        memory: 32M
        disk_quota: 32M
        buildpack: go_buildpack
        env:
          GOPACKAGENAME: example-apps/cats-and-dogs/frontend
          NCP_SNAT_POOL: <external IP pool ID or name>
    ...
NCP configurará la regla SNAT de esta aplicación. La IP de origen de la regla es el conjunto de direcciones IP de las instancias, mientras que la IP de destino es la IP de SNAT que se asigna a partir de un grupo de direcciones IP externo. Tenga en cuenta lo siguiente:
  • El grupo que especifica NCP_SNAT_POOL ya debe existir en NSX-T Data Center antes de insertar la aplicación.
  • La prioridad de la regla SNAT de una aplicación es mayor que la de una organización.
  • Una aplicación puede configurarse con solo una IP de SNAT.
  • Puede utilizar otro grupo de direcciones IP cambiando la configuración y reiniciando NCP.

Configurar SNAT para la versión 3 de PCF

Con la versión 3 de PCF, puede configurar SNAT de dos formas:

  • Configure NCP_SNAT_POOL en manifest.yml al crear la aplicación.
    Por ejemplo, la aplicación se denomina bread y el archivo manifest.yml tiene la siguiente información:
    applications:
    - name: bread
      stack: cflinuxfs2
      random-route: true
      env:
        NCP_SNAT_POOL: AppSnatExternalIppool
      processes:
      - type: web
        disk_quota: 1024M
        instances: 2
        memory: 512M
        health-check-type: port
      - type: worker
        disk_quota: 1024M
        health-check-type: process
        instances: 2
        memory: 256M
        timeout: 15
    Ejecute los siguientes comandos:
    cf v3-push bread
    cf v3-apply-manifest -f manifest.yml
    cf v3-apps
    cf v3-restart bread
  • Configure NCP_SNAT_POOL mediante el comando cf v3-set-env.
    Ejecute los siguientes comandos (se asume que la aplicación se denomina app3):
    cf v3-set-env app3 NCP_SNAT_POOL AppSnatExternalIppool
    (optional) cf v3-stage app3 -package-guid <package-guid> (You can get package-guid with "cf v3-packages app3".)
    cf v3-restart app3

(Opcional) (Solo para Kubernetes) Secciones de marcador de firewall

Para que el administrador pueda crear reglas de firewall que no interfieran con las secciones de firewall creadas por NCP en función de las directivas de red, inicie sesión en NSX Manager, desplácese hasta Seguridad > Firewall distribuido > General y cree dos secciones de firewall.

Especifique secciones de firewall del marcador configurando las opciones bottom_firewall_section_marker y top_firewall_section_marker en la sección [nsx_v3] de ncp.ini.

La sección del firewall inferior debe estar bajo la sección del firewall superior. Con estas secciones del firewall, todas las secciones del firewall creadas por NCP para el aislamiento se crearán sobre la sección del firewall inferior, y todas las secciones del firewall creadas por NCP para la directiva se crearán bajo la sección del firewall superior. Si no se crean estas secciones de marcador, todas las reglas de aislamiento se crearán en la parte inferior, y todas las secciones de la directiva se crearán en la parte superior. No puede haber varias secciones del firewall de marcador con el mismo valor en cada clúster, ya que se producirá un error.