• Geoff Simmons's avatar
    Varnish/Ingress may implement and merge Ingresses across namespaces. · c5ff26da
    Geoff Simmons authored
    An Ingress definition with ingress.class for Varnish can identify
    the Varnish Service that implements its rules:
    
    * If it has the ingress.varnish-cache.org/varnish-svc annotation,
      then the values names the Varnish Service, which may be named
      using namespace/name notation. If the namespace is left out,
      then the same namespace as the Ingress is assumed.
    
    * If the Ingress does not have the annotation, then:
    
      * If there is only one Varnish-as-Ingress Service in the cluster
        (with label app:varnish-ingress), then that Service implements
        the rules.
    
      * Otherwise if there is only one Varnish Service in the same
        namespace as the Ingress, then that Service implements the
        rules.
    
      * Otherwise error
    
    A Varnish Service can define Services from different namespaces as
    its backends, if it implements Ingresses from those namespaces which
    define those Services as Ingress backends. (Ingresses only define
    backends from the same namespace.)
    
    Ingresses can be merged under these conditions:
    
    * No host is specified in more than one Ingress.
    
    * There is no more than one default backends in all of the Ingresses
      to be merged.
    
    If either of these rules are violated, then error.
    
    This resolves the question of merging Ingresses (to be documented in
    upcoming commits).
    
    Ref #26
    Ref #13
    c5ff26da
varnish_test.go 7.26 KB