Clase de servicio para servicios de tipo LoadBalancer
Cuando se implementan servicios de tipo LoadBalancer, todos estos servicios son procesados por el NetScaler Ingress Controller y configurados en los NetScalers. Sin embargo, puede haber situaciones en las que desee asociar solo servicios específicos a un NetScaler Ingress Controller si se implementan varios controladores Ingress.
Para los recursos Ingress, esta funcionalidad ya está disponible utilizando la característica clase Ingress. De forma similar a la funcionalidad de clase Ingress para los recursos Ingress, ahora se ha añadido la funcionalidad de clase de servicio para los servicios de tipo
LoadBalancer.
Puede asociar un NetScaler Ingress Controller con varias clases de servicio utilizando el argumento
--service-classes en la sección spec del archivo YAML. Si no se especifica una clase de servicio para el controlador Ingress, este acepta todos los servicios de tipo LoadBalancer independientemente de la presencia de la anotación service.citrix.com/class en el servicio.
Si la clase de servicio se especifica para el NetScaler Ingress Controller, entonces solo acepta aquellos servicios de tipo
LoadBalancer que coincidan con la anotación service.citrix.com/class. En este caso, el NetScaler Ingress Controller no procesa un servicio de tipo LoadBalancer si no está asociado con la anotación service.citrix.com/class.
Configuraciones YAML de ejemplo con clases de servicio
A continuación se muestra un fragmento de un archivo YAML de ejemplo para asociar
service-classes con el Ingress Controller. En este fragmento, las siguientes clases de servicio están asociadas con el Ingress Controller.
-
svc-class1 -
svc-class2
spec:
serviceAccountName: cic-k8s-role
containers:
- name: cic-k8s-ingress-controller
# specify the service classes to be supported by NetScaler Ingress Controller in args section.
# First line should be --service-classes, and every subsequent line should be
# the name of allowed service class. In the given example two classes named
# "svc-class1" and "svc-class2" are accepted. This will be case-insensitive.
args:
- --service-classes
svc-class1
svc-class2
A continuación se muestra un fragmento de un archivo YAML de definición de servicio de tipo LoadBalancer donde se representa la asociación de la clase de servicio. En este ejemplo, un servicio Apache está asociado con la clase de servicio
svc-class1. Si el NetScaler Ingress Controller está configurado para aceptar svc-class1, configura el servicio en el NetScaler.
apiVersion: v1
kind: Service
metadata:
name: apache
annotations:
service.citrix.com/class: 'svc-class1'
labels:
name: apache
spec:
type: LoadBalancer
selector:
name: apache
ports:
- name: http
port: 80
targetPort: http
selector:
app: apache