Las reglas de entrada de AKS se restablecen periódicamente

Las reglas de entrada de AKS se restablecen periódicamente

En AKS tengo un servicio de tipo LoadBalancer con 2 puertos definidos, uno para acceso general (y autenticación bidireccional) y otro para acceso exclusivo desde un cluster de Service Fabric también en Azure. Para lograr el acceso exclusivo, cambié la regla de entrada en las máquinas virtuales para permitir que solo el SF Cluster acceda. El problema es que veo a menudo que la regla se restablece a los valores predeterminados, presumiblemente debido a una implementación que modifica el servicio AKS desde Azure DevOps (aunque el objeto LoadBalancer nunca cambia).

La configuración de LoadBalancer se ve así:

apiVersion: v1
kind: Service
metadata:
  name: myservice-loadbalancer
spec:
  ports:
  - name: public-port
    port: 1234
    targetPort: public-port
  - name: service-fabric-port
    port: 4321
    targetPort: service-fabric-port
  selector:
    app: myservice
  type: LoadBalancer

Una posible solución es agregar la IP permitida al objeto LoadBalancer, como se recomienda aquí:https://github.com/Azure/AKS/issues/570#issuecomment-413299212, pero en mi caso eso también limitará el "puerto público".

No se me ocurre otra salida que crear dos objetos LoadBalancer, uno por puerto. Pero no es una solución limpia ya que: el servicio es el mismo sólo a través de dos puertos diferentes, y de esta manera tendría dos IP para el mismo servicio. Además, y como se menciona en el enlace anterior, los cambios en las reglas de entrada deben ser persistentes.

¿Existe alguna otra solución? Muchas gracias de antemano por cualquier idea.

Respuesta1

Hice la misma pregunta en StackOverflow y respondí allí también:https://stackoverflow.com/a/61696167/6860266

Como mencionó la otra respuesta, la solución fue agregar nuevas reglas en el Grupo de seguridad de red con una prioridad más alta que la existente.

Por ejemplo, el servicio LoadBalancer anterior creará una regla para el puerto TCP 4321, permitiendo que cualquier fuente de Internet acceda a ese puerto en la IP pública proporcionada al servicio. Digamos que la prioridad dada a esa regla es 500. Puedo cambiar esa regla, perose restablecerá más tarde.

Tengo que agregar dos reglas más con prioridades más altas, digamos 400 y 401. Ambas reglas tienen como destino la IP pública del servicio y el puerto 4321. La regla 400 permitirá el acceso a la etiqueta de servicio ServiceFabric, mientras que la regla 401 negará el acceso a la etiqueta de servicio de Internet.

Las reglas se evaluarán en el orden 500, 401 y 400, por lo que finalmente solo Service Fabric podrá acceder a ese puerto. Azure no crea las reglas 400 y 401, por lo que no cambiarán.

información relacionada