Agente de escucha
El CRD de Agente de escucha representa la información del punto final del servidor virtual de equilibrio de carga de conmutación de contenido. Este tema contiene un objeto CRD de Agente de escucha de ejemplo y también explica los diversos atributos del CRD de Agente de escucha. Para ver la definición completa del CRD, consulte Listener.yaml.
Nota:
Un recurso de entrada y los CRD de enrutamiento de contenido (CRD de Agente de escucha y CRD de HTTPRoute) no pueden coexistir para el mismo punto final (dirección IP y puerto). No se admite el uso de CRD de enrutamiento de contenido con Ingress.
Ejemplo de objeto CRD de Agente de escucha
A continuación, se muestra un ejemplo de un objeto CRD de Agente de escucha.
apiVersion: citrix.com/v1
kind: Listener
metadata:
name: my-listener
namespace: default
spec:
certificates:
- secret:
name: my-secret
# Secret named 'my-secret' in current namespace bound as default certificate
default: true
- secret:
# Secret 'other-secret' in demo namespace bound as SNI certificate
name: other-secret
namespace: demo
- preconfigured: second-secret
# preconfigured certkey name in ADC
vip: '192.168.0.1' # Virtual IP address to be used, not required when CPX is used as ingress device
port: 443
protocol: https
redirectPort: 80
secondaryVips:
- "10.0.0.1"
- "1.1.1.1"
policies:
httpprofile:
config:
websocket: "ENABLED"
tcpprofile:
config:
sack: "ENABLED"
sslprofile:
config:
ssl3: "ENABLED"
sslciphers:
- SECURE
- MEDIUM
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
csvserverConfig:
rhistate: 'ACTIVE'
routes:
# Attach the policies from the below Routes
- name: domain1-route
namespace: default
- name: domain2-route
namespace: default
- labelSelector:
# Attach all HTTPRoutes with label route=my-route
route: my-route
# Default action when traffic matches none of the policies in the HTTPRoute
defaultAction:
backend:
kube:
namespace: default
port: 80
service: default-service
backendConfig:
lbConfig:
# Use round robin LB method for default service
lbmethod: ROUNDROBIN
servicegroupConfig:
# Client timeout of 20 seconds
clttimeout: "20"
Para más ejemplos, consulte Ejemplos de Agente de escucha.
Listener.spec
El atributo
Listener.spec define la especificación del recurso personalizado del Agente de escucha. La siguiente tabla explica los distintos campos del atributo Listener.spec.
| Campo | Descripción | Tipo ; | Obligatorio |
|---|---|---|---|
protocol |
Especifica el protocolo del servidor virtual de conmutación de contenido de equilibrio de carga. Los valores permitidos son: tcp, udp, http y https. |
cadena | sí |
port |
Especifica el número de puerto del servidor virtual de conmutación de contenido de equilibrio de carga. El número de puerto predeterminado para el protocolo HTTP es 80 y para el protocolo HTTPS es 443. | entero | No |
routes |
Especifica la lista de recursos HTTPRoute que se adjuntarán al recurso Listener. El orden de evaluación es según el orden de la lista. Es decir, si hay varias entradas, la primera ruta especificada en la lista tiene la prioridad más alta y así sucesivamente. | [ ] routes | No |
ingressclass |
Especifica la clase de entrada para que solo el controlador de entrada asociado con la clase de entrada especificada procese el recurso. De lo contrario, todos los controladores del clúster procesarán este recurso. | cadena | No |
certificates |
Especifica la lista de certificados para el servidor virtual SSL si el protocolo es HTTPS. Este campo es obligatorio si el protocolo es HTTPS. | [ ] certificates | No |
vip |
Especifica la dirección IP del punto final para el servidor virtual de conmutación de contenido de equilibrio de carga. Esta dirección es obligatoria para los dispositivos NetScaler VPX y MPX, pero no para los NetScaler CPX presentes en el clúster de Kubernetes. Para NetScaler CPX, vip es la misma que la dirección IP principal del NetScaler CPX asignada por el CNI. |
cadena | No |
defaultAction |
Especifica la acción predeterminada a realizar si ninguno de los recursos HTTPRoute especificados en routes coincide con el tráfico. |
acción | No |
policies |
Especifica la opción que le permite personalizar las políticas HTTP, TCP y SSL asociadas con el servidor virtual de front-end. | [ ] Listener.policies | No |
redirectPort |
Especifica que el tráfico HTTP en este puerto se redirige al puerto HTTPS. | Entero | No |
secondaryVips |
Especifica un conjunto de direcciones IP que se utilizan como VIP con la VIP principal. Se crea un IPset y estas VIP se añaden al IPset. | [ ] cadena | No |
multicluster |
Especifica si la dirección IP del servidor virtual de conmutación de contenido es compartida por multiclústeres y NetScaler Ingress Controllers. | booleano | NO |
passthrough |
Habilita el SSL Passthrough para el tráfico SSL. El tráfico se reenvía sin descifrar al backend. Solo disponible cuando el listener se referencia en la anotación de entrada; no se puede usar con rutas. | booleano | No |
Listener.certificates
El atributo
Listener.certificates define la información relacionada con el certificado TLS para el servidor virtual SSL.
A continuación se muestra un ejemplo del atributo
Listener.certificates.
certificates:
- secret:
name: my-secret
namespace: demo
default: true
- preconfigured: configured-secret
La siguiente tabla explica los distintos campos del atributo
Listener.certificates.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
secret |
Especifica los certificados TLS definidos a través del recurso secreto de Kubernetes. El secreto debe contener las claves tls.crt y tls.key. Estas claves contienen el certificado y la clave privada. Se requiere el secreto o el campo preconfigurado. Todos los certificados se vinculan al servidor virtual SSL como certificados SNI. |
certificates.secret | No |
preconfigured |
Especifica el nombre del certkey TLS preconfigurado en NetScaler, y este campo es aplicable solo para dispositivos VPX y MPX de Nivel 1. El certkey debe estar presente antes de la implementación real del recurso Listener; de lo contrario, la implementación del recurso fallará con un error. El NetScaler Ingress Controller no gestiona el ciclo de vida de certkey. Por lo tanto, debe gestionar manualmente cualquier adición o eliminación de certkey. Se requiere el secreto o el campo preconfigurado. |
cadena | No |
default |
Especifica el certificado predeterminado. Solo uno de los certificados puede marcarse como predeterminado. El certificado predeterminado se presenta si el servidor virtual recibe el tráfico sin un campo SNI. Este certificado se puede utilizar para acceder a la aplicación HTTPS mediante la dirección IP. Los valores aplicables son true y false |
booleano | No |
Listener.certificates.Secret
Este atributo representa el recurso secreto de Kubernetes para los certificados TLS que deben vincularse al servidor virtual SSL.
La siguiente tabla explica los distintos campos del atributo
Listener.certificate.Secret.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
name |
Especifica el nombre del recurso secreto de Kubernetes. El secreto debe contener claves denominadas tls.crt y tls.key. Estas claves contienen el certificado y la clave privada. Si hay más de un campo tls.crt presente en el objeto secreto, el primer certificado se considera un certificado de servidor y los certificados restantes se consideran certificados de CA intermedios. Además, los certificados se vinculan recursivamente entre sí a partir del certificado del servidor. |
cadena | sí |
namespace |
Especifica el espacio de nombres del recurso secreto de Kubernetes. Si no se especifica este valor, el espacio de nombres se considera el mismo que el del recurso Listener. | cadena | No |
Listener.routes
Este atributo representa la lista de objetos HTTPRoute que están asociados al recurso Listener. La siguiente tabla explica los distintos campos del atributo
Listener.routes.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
name |
Especifica el nombre del recurso HTTPRoute evaluado para la decisión de enrutamiento al servidor de back-end. Se requiere name o labelSelector. |
cadena | No |
namespace |
Especifica el espacio de nombres del recurso HTTPRoute. El valor predeterminado es el espacio de nombres del recurso Listener. | cadena | No |
labelSelector |
Especifica el selector de etiquetas del recurso HTTPRoute. Este campo proporciona otra forma de adjuntar recursos HTTPRoute. Los objetos HTTPRoute con claves y valores de etiqueta que coincidan con este selector se adjuntan automáticamente al recurso de escucha. Si las rutas se adjuntan a través del labelSelector, las rutas se adjuntan sin ningún orden específico. La excepción a esta regla es una ruta con una ruta predeterminada ('/') que siempre se adjunta al final. Como se muestra en el ejemplo, cualquier objeto HTTPRoute con etiquetas y se adjunta al objeto de escucha. Para obtener más información sobre etiquetas y selectores, consulte la Documentación de Kubernetes. | objeto | No |
Listener.action
Este atributo representa la acción predeterminada si una solicitud al servidor virtual de equilibrio de carga no coincide con ninguno de los objetos de ruta presentados en el campo Listener.routes.
La siguiente tabla explica los distintos campos del atributo
Listener.action.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
backend |
La acción predeterminada para este campo es enviar el tráfico a un servicio de backend. Se requiere el backend o la redirección. | action.backend | No |
redirect |
La acción predeterminada es redirigir el tráfico. Se requiere el backend o la redirección. | action.redirect | No |
Listener.action.backend
Este atributo especifica el servicio de backend para la acción predeterminada. La siguiente tabla explica los distintos campos del atributo
Listener.action.backend.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
kube |
Especifica la información del servicio de Kubernetes para el servicio de back-end. | action.backend.kube |
Listener.action.backend.kube
Este atributo representa el servicio de back-end de Kubernetes para el back-end predeterminado. Si el servicio es de tipo
NodePort o Loadbalancer, la dirección IP del nodo y el NodePort se utilizan para enviar el tráfico al back-end.
A continuación se muestra un ejemplo del atributo
Listener.action.backend.kube.
kube:
service: default-service
namespace: default
port: 80
backendConfig:
lbConfig:
lbmethod: ROUNDROBIN
servicegroupConfig:
clttimeout: '20'
La siguiente tabla explica los distintos campos del atributo
Listener.action.backend.kube.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
service |
Especifica el nombre del servicio de Kubernetes para el back-end predeterminado. | cadena | sí |
namespace |
Especifica el espacio de nombres del servicio de Kubernetes para el backend predeterminado. | cadena | sí |
port |
Especifica el número de puerto del servicio de Kubernetes para el backend predeterminado. | entero | sí |
backendConfig |
Especifica las configuraciones de backend para el backend predeterminado. | BackendConfig | no |
BackendConfig
Este atributo representa las configuraciones de backend de NetScaler. A continuación se muestra un ejemplo para el atributo
BackendConfig.
backendConfig:
sercureBackend: true
lbConfig:
lbmethod: ROUNDROBIN
servicegroupConfig:
clttimeout: '20'
La siguiente tabla explica los distintos campos del atributo
BackendConfig.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
secureBackend |
Especifica si la comunicación es segura o no. Si el valor del campo secureBackend es true, se utiliza comunicación segura para comunicarse con el back-end. El valor predeterminado es false, lo que significa que se utiliza HTTP para la comunicación con el back-end. |
||
lbConfig |
Especifica las configuraciones del servidor virtual de equilibrio de carga de NetScaler para el back-end dado. Se pueden especificar pares clave-valor como se muestra en el ejemplo, que establece las configuraciones del servidor virtual de equilibrio de carga para el back-end. Para todas las configuraciones válidas, consulte configuraciones del servidor virtual de equilibrio de carga. | objeto | No |
servicegroupConfig |
Especifica las configuraciones del grupo de servicios de NetScaler para el back-end dado. Se pueden especificar pares clave-valor como se muestra en el ejemplo, que establece las configuraciones del grupo de servicios para el back-end. Para todas las configuraciones válidas, consulte configuraciones del grupo de servicios. | objeto | No |
Listener.action.redirect
defaultAction:
redirect:
httpsRedirect: true
responseCode: 302
La siguiente tabla explica los distintos campos del atributo
Listener.action.redirect.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
httpsRedirect |
Redirige el tráfico HTTP a HTTPS si este campo se establece en yes. Solo se cambia el esquema a HTTPS sin modificar la otra parte de la URL. Se requiere httpsRedirect, hostRedirect o targetExpression. |
booleano | No |
hostRedirect |
Reescribe la parte del nombre de host de la URL al valor establecido aquí y redirige el tráfico. La otra parte de la URL no se modifica durante la redirección. | cadena | No |
targetExpression |
Especifica la expresión de NetScaler para la redirección. Por ejemplo, para redirigir el tráfico de HTTP a HTTPS, se puede usar la siguiente expresión: ""https://"+HTTP.REQ.HOSTNAME + HTTP.REQ.URL.HTTP_URL_SAFE". | cadena | No |
responseCode |
Especifica el código de respuesta. El código de respuesta predeterminado es 302, que se puede personalizar utilizando este atributo. | Entero | No |
Listener.policies
Este atributo representa las políticas predeterminadas que se utilizan para el Listener cuando no se especifican políticas. Al usar
Listener.policies, puede personalizar el comportamiento de TCP, HTTP y SSL.
A continuación se muestra un ejemplo para el atributo
Listener.policies.
policies:
httpprofile:
config:
websocket: "ENABLED"
tcpprofile:
config:
sack: "ENABLED"
sslprofile:
config:
ssl3: "ENABLED"
sslciphers:
- HIGH
- MEDIUM
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
csvserverConfig:
rhistate: 'ACTIVE'
stateupdate: ‘ENABLED’
La siguiente tabla explica los distintos campos del atributo
Listener.policies.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
httpprofile |
Especifica la configuración HTTP para el servidor virtual de front-end. | Listener.policies.httpprofile | No |
tcpprofile |
Especifica la configuración TCP para el servidor virtual de front-end. | Listener.policies.tcpprofile | No |
sslprofile |
Especifica la configuración SSL para el servidor virtual de front-end. | Listener.policies.sslprofile | No |
sslciphers |
Especifica la lista de cifrados que se vincularán al perfil SSL. El orden es el especificado en la lista, donde la prioridad más alta se asigna al primero de la lista y así sucesivamente. Puede utilizar cualquier cifrado SSL disponible en NetScaler o grupos de cifrado creados por el usuario en este campo. Para obtener información sobre la lista de cifrados disponibles en NetScaler, consulte Cifrados en NetScaler. | [ ] cadena | No |
analyticsprofile |
Especifica la configuración del perfil de análisis para el servidor virtual de front-end | Listener.policies.analyticsprofile | No |
csvserverConfig |
Especifica la configuración del servidor virtual CS de front-end para el Listener. Puede especificar el par clave-valor como se muestra en el ejemplo que establece la configuración del servidor virtual CS para el front-end. | Objeto | No |
Listener.policies.tcpprofile
Este atributo representa la configuración del perfil TCP para el servidor virtual CS de front-end.
A continuación se muestra un ejemplo para el atributo
Listener.policies.tcpprofile.
policies:
tcpprofile:
config:
sack: "ENABLED"
nagle: “ENABLED”
---
policies:
tcpprofile:
preconfigured: test-tcp-profile
La siguiente tabla explica los distintos campos del atributo
Listener.policies.tcpprofile.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
preconfigured |
Especifica el nombre del perfil TCP preconfigurado que se utilizará para el servidor virtual CS de front-end. Este perfil debe estar presente en NetScaler antes de aplicar la política. De lo contrario, el recurso Listener no se aplicará. Se requiere preconfigured o config. |
cadena | No |
config |
Especifica la configuración del perfil TCP para el servidor virtual de front-end. Puede especificar el par clave-valor como se muestra en el ejemplo para ajustar las características TCP del servidor virtual. | Objeto | No |
Listener.policies.httpprofile
Este atributo representa la configuración HTTP para el servidor virtual CS de front-end.
A continuación, se muestra un ejemplo del atributo
Listener.policies.httpprofile.
policies:
httpprofile:
config:
websocket: "ENABLED"
---
policies:
httpprofile:
preconfigured: test-http-profile
La siguiente tabla explica los distintos campos del atributo
Listener.policies.httpprofile.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
preconfigured |
Especifica el nombre del perfil HTTP preconfigurado que se utilizará para el servidor virtual CS de front-end. Este perfil debe estar presente en NetScaler antes de aplicar la política. De lo contrario, el recurso Listener no se aplicará. Se requiere preconfigured o config. |
cadena | No |
config |
Especifica la configuración del perfil HTTP para el servidor virtual de front-end. Puede especificar el par clave-valor como se muestra en el ejemplo para ajustar las características del protocolo HTTP del servidor virtual. | Objeto | No |
Listener.policies.sslprofile
Este atributo representa el perfil SSL para el servidor virtual CS de front-end.
A continuación se muestra un ejemplo del atributo
Listener.policies.sslprofile.
policies:
sslprofile:
config:
ssl3: "ENABLED"
---
policies:
sslprofile:
preconfigured: test-ssl-profile
La siguiente tabla explica los distintos campos del atributo
Listener.policies.sslprofile.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
preconfigured |
Especifica el nombre del perfil SSL preconfigurado que se utilizará para el servidor virtual SSL de front-end. Este perfil debe estar presente en NetScaler antes de aplicar la política. De lo contrario, el recurso Listener no se aplicará. Se requiere preconfigured o config. |
cadena | No |
config |
Especifica la configuración del perfil SSL para el servidor virtual de front-end. Puede especificar el par clave-valor como se muestra en el ejemplo para ajustar las características SSL del servidor virtual. | Objeto | No |
Nota: Debe habilitar los perfiles predeterminados utilizando el comando set ssl parameter -defaultProfile ENABLED en NetScaler para usar las funciones SSL avanzadas. |
Listener.policies.analyticsprofile
Este atributo representa el perfil de análisis que se utiliza para exportar contadores y métricas a NetScaler Observability Exporter. Al configurar este atributo, puede elegir qué se exportará creando y vinculando el perfil de análisis.
A continuación, se muestra un ejemplo del atributo
Listener.policies.analyticsprofile.
policies:
analyticsprofile:
config:
- type: webinsight
parameters:
allhttpheaders: "ENABLED"
---
policies:
analyticsprofile:
preconfigured:
- test-analytics-profile
- test2-analytics-profile
La siguiente tabla explica los distintos campos del atributo
Listener.policies.analyticsprofile.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
preconfigured |
Especifica la lista de perfiles de análisis preconfigurados que deben vincularse al servidor virtual de front-end. Estos perfiles deben estar presentes en NetScaler antes de aplicar la política. De lo contrario, el recurso Listener no se aplicará. Se requiere preconfigured o config. |
[ ] cadena | No |
config |
Especifica la lista de perfiles de análisis que se vincularán al servidor virtual de front-end. Esto determina los campos que se exportarán a NetScaler Observability Exporter. | [ ] Listener.policies.analyticsprofile.config | No |
Listener.policies.analyticsprofile.config
Este atributo representa la configuración del perfil de análisis para los diferentes tipos de información y parámetros de encabezado HTTP que deben exportarse.
La siguiente tabla explica los distintos campos del atributo
Listener.policies.analyticsprofile.config.
| Campo | Descripción | Tipo | Obligatorio |
|---|---|---|---|
type |
Especifica el tipo que determina el tipo de perfil de análisis que se va a habilitar. Puede habilitar uno o varios de los siguientes tipos: webinsight, tcpinsight, securityinsight, videoinsight, hdxinsight, gatewayinsight, timeseries, lsninsight y botinsight |
cadena | Sí |
parameters |
Especifica los parámetros adicionales que se habilitarán como parte del perfil de análisis. Puede especificar el par clave-valor como se muestra en el ejemplo. Por ejemplo, utilizando este campo, puede seleccionar los parámetros HTTP que se exportarán como parte de webinsight |
Objeto | No |