Restringir un grupo de direcciones IP de SNAT a espacios de nombres de Kubernetes u organizaciones de TAS específicos
- Para un espacio de nombres de Kubernetes:
scope: ncp/owner, tag: ns:<namespace_UUID>
- Para una organización de TAS:
scope: ncp/owner, tag: org:<org_UUID>
kubectl get ns -o yaml cf org <org_name> --guid
- 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 TAS, o bien se reinicie NCP.
- Las etiquetas de propietario del espacio de nombres y de la organización de TAS 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 TAS.
Configurar un grupo de direcciones IP de SNAT para un servicio
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>
.
- 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_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 especifica ncp/snat_pool 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. Después de solucionar el error, debe reiniciar NCP, o bien eliminar la anotación ncp/snat_pool y volver a agregarla.
- El grupo especificado por ncp/snat_pool ya debe existir en NSX antes de configurar el servicio.
- En NSX, 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
apiVersion: v1 kind: Namespace metadata: name: ns-sample annotations: ncp/snat_pool: <external IP pool ID or name> ...
- 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. Después de solucionar el error, debe reiniciar NCP, o bien eliminar la anotación ncp/snat_pool y volver a agregarla.
- 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 una dirección IP de SNAT para un servicio
apiVersion: v1 kind: Service metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: la dirección IP ya está asignada.
- IP_NOT_IN_POOL: la dirección IP no se encuentra en el grupo de direcciones IP de SNAT.
- IP_POOL_EXHAUSTED: el grupo de IP de SNAT se agotó.
- SNAT_PROCESS_FAILED: se produjo un error desconocido.
Configurar una dirección IP de SNAT para un espacio de nombres
apiVersion: v1 kind: Namespace metadata: name: svc-example annotations: ncp/static_snat_ip: "1.2.3.4" ...
- IP_ALLOCATED_SUCCESSFULLY
- IP_ALREADY_ALLOCATED: la dirección IP ya está asignada.
- IP_NOT_IN_POOL: la dirección IP no se encuentra en el grupo de direcciones IP de SNAT.
- IP_NOT_REALIZED: se produjo un error en NSX.
- IP_POOL_EXHAUSTED: el grupo de IP de SNAT se agotó.
- SNAT_PROCESS_FAILED: se produjo un error desconocido.
Configurar un grupo SNAT para una aplicación de TAS
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> ...
- El grupo que especifica NCP_SNAT_POOL ya debe existir en NSX 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 e iniciando la aplicación de nuevo.
Configurar SNAT para TAS versión 3
Con la versión 3 de TAS, 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
Configuración de una dirección IP o un grupo de direcciones IP de SNAT para una organización de TAS
- ncp_snat_pool: el grupo debe existir y tener la etiqueta
scope: ncp/owner, tag: cluster:<cluster_name>
. - ncp_snat_ip: una dirección específica de un grupo de direcciones IP.
- Si se especifican ncp_snat_pool y ncp_snat_ip, la dirección IP de SNAT debe estar en el grupo de direcciones IP de SNAT especificado.
- Si solo se especifica ncp_snat_ip, la dirección IP de SNAT debe estar en el grupo de direcciones IP externas especificado en ncp.ini.
- Si solo se especifica ncp_snat_pool, la dirección IP de SNAT se asignará desde el grupo especificado.
cf curl v3/organizations/<org-guid> -X PATCH -d '{"metadata": {"annotations": {"ncp_snat_pool": "ann-ip-pool", "ncp_snat_ip": "1.2.3.4"}}}'
cf org <org-name> --guid
cf curl v3/organizations/<org-guid> -X PATCH -d '{"metadata": {"annotations": {"ncp_snat_ip": null}}}'
Puede ir a la interfaz de usuario de NSX Manager para comprobar si la regla SNAT se creó correctamente. Para comprobar si hay errores, consulte los registros de NCP.
Si se muestra el error POOL_ACCESS_DENIED en el registro de NCP, significa que el grupo de direcciones IP que especifica ncp_snat_pool no tiene la etiqueta scope: ncp/owner, tag: cluster:<cluster_name>
, o la etiqueta de propietario del grupo no coincide con la organización que envía la solicitud de asignación. Después de solucionar el error, debe reiniciar NCP, o bien eliminar la anotación ncp_snat_pool y volver a agregarla.