1. 22 Apr, 2021 1 commit
  2. 21 Apr, 2021 2 commits
  3. 20 Apr, 2021 3 commits
  4. 19 Apr, 2021 1 commit
  5. 17 Apr, 2021 2 commits
  6. 16 Apr, 2021 4 commits
  7. 15 Apr, 2021 1 commit
  8. 14 Apr, 2021 1 commit
  9. 13 Apr, 2021 1 commit
  10. 12 Apr, 2021 1 commit
    • Stephen Greene's avatar
      test/e2e: Make `TestRouteAdmissionPolicy` deterministic. · cdaf25e9
      Stephen Greene authored
      This commit adds a few small e2e test improvements in support of Bug
      1948626.
      
      test/e2e/operator_test.go:
      
      Helper functions:
      Increase the polling timeouts in `waitForRouterIngressConditions` and
      `waitForClusterOperatorConditions` from 10 seconds to 1 minute.
      1 minute is not much longer than 10 seconds, and presumably a longer
      timeout for these polling functions could result in less test flakes.
      It's worth taking the additional 50 seconds if it saves us from any
      future `/retest` comments.
      
      `TestRouteAdmissionPolicy`:
      Use specific names for `route1` and `route2`, as to avoid the common
      `route` name, which makes debugging this e2e test much easier.
      Sleep for 2 (two) seconds after creating route1. This is to ensure that
      route1 and route2 _do not_ wind up having the same creation timestamp.
      If route1 and route2 have a common timestamp, we cannot determine
      whether route1 or route2 will be rejected.
      cdaf25e9
  11. 10 Apr, 2021 3 commits
  12. 09 Apr, 2021 4 commits
  13. 07 Apr, 2021 4 commits
  14. 06 Apr, 2021 9 commits
    • Ryan Fredette's avatar
      Add ROUTER_THREADS check to desired deployment unit test · 037b4375
      Ryan Fredette authored
      Also make default HAProxy-threads-per-router a constant
      037b4375
    • Miciah Masters's avatar
      ingressclass: Don't set default annotation · ec5e7a80
      Miciah Masters authored
      Comment out the logic that sets marks the default ingresscontroller's
      ingressclass as the default ingressclass because it breaks the
      "[sig-network] IngressClass [Feature:Ingress] should not set default value
      if no default IngressClass" test.
      
      * pkg/operator/controller/ingressclass/ingressclass.go
      (desiredIngressClass): Don't set default annotation.
      * test/e2e/operator_test.go (TestDefaultIngressClass): Don't check for
      default annotation.
      ec5e7a80
    • Ryan Fredette's avatar
      Read spec.tuningOptions.threadCount from IngressController when determining... · 1e867ee0
      Ryan Fredette authored
      Read spec.tuningOptions.threadCount from IngressController when determining Router deployment thread count
      1e867ee0
    • OpenShift Merge Robot's avatar
      Merge pull request #574 from Miciah/ingressclass-new-controller · 74ae4c75
      OpenShift Merge Robot authored
      ingressclass: New controller.
      74ae4c75
    • Andrew McDermott's avatar
      vendor: add summerwind/h2spec · fe1d03b6
      Andrew McDermott authored
      $ go mod edit -require github.com/summerwind/h2spec@v0.0.0-20200804131034-70ac22940108
      $ go mod vendor
      $ go mod tidy
      fe1d03b6
    • Andrew McDermott's avatar
      add test/h2spec · 1932328e
      Andrew McDermott authored
      1932328e
    • Miciah Masters's avatar
      ingressclass: New controller. · 44c2306b
      Miciah Masters authored
      Add a controller that creates and manages an ingressclass for each
      ingresscontroller.
      
      * manifests/00-cluster-role.yaml: Give the operator access to
      ingressclasses.
      * pkg/manifests/bindata.go: Regenerate.
      * pkg/operator/controller/ingressclass/controller.go: New file.  Define a
      controller that manages ingressclasses for ingresscontrollers.
      (controllerName): New const for the new controller's name.
      (New): New function.  Create and return a controller that watches
      ingresscontrollers and ingressclasses and reconciles them, using the new
      ingressClassHasIngressController function and
      ingressClassToIngressController method to map events for ingressclasses to
      reconcile requests for ingresscontrollers.
      (ingressClassHasIngressController): New function.  Given an ingressclass,
      return a Boolean value indicating whether it references an
      ingresscontroller.
      (ingressClassToIngressController): New method.  Given a client object,
      check if the object is an ingressclass with an associated
      ingresscontroller, and return a slice of reconciliation requests with a
      request for any ingresscontroller that is associated with the ingressclass.
      (Config): New type.  Store the configuration needed to create an
      ingressclass controller.
      (reconciler): New type.  Store the state of an ingressclass controller.
      (Reconcile): New method.  Handle a reconciliation request for an
      ingresscontroller by ensuring that it has the expected ingressclass.
      * pkg/operator/controller/ingressclass/ingressclass.go: New file.
      (ensureIngressClass): New method.  Ensure the expected ingressclass exists
      for the given ingresscontroller, using the new desiredIngressClass function
      and currentIngressClass and updateIngressClass methods.
      (desiredIngressClass): New function.  Given an ingresscontroller's name,
      return a desired ingressclass.
      (currentIngressClass): New method.  Given an ingresscontroller's name,
      return its current ingressclass if it exists.
      (updateIngressClass): New method.  Given current and desired
      ingressclasses, update the current ingress class if needed, using the new
      ingressclassChanged function.
      (ingressclassChanged): New function.  Compare current and expected
      ingressclasses to determine if they match, and return an updated
      ingressclass if they do not.
      * pkg/operator/controller/names.go (IngressClassName): New function.  Given
      an ingresscontroller's name, return the name of the corresponding
      ingressclass.
      * pkg/operator/operator.go (New): Initialize the new controller.
      * test/e2e/operator_test.go (TestDefaultIngressClass): New test.  Verify
      that the ingressclass controller has created an ingressclass for the
      default ingresscontroller.
      44c2306b
    • Miciah Masters's avatar
      Bump openshift/api for ingress-to-route name · f97d9434
      Miciah Masters authored
      Bump to github.com/openshift/api@47be53705a1362bfe78926a87dc5d12e0480accf
      to get the named constant for the "openshift.io/ingress-to-route"
      controller name.
      
      * go.mod: Bump.
      * go.sum:
      * manifests/00-custom-resource-definition.yaml:
      * pkg/manifests/bindata.go:
      * vendor/*: Regenerate.
      f97d9434
    • OpenShift Merge Robot's avatar
      Merge pull request #589 from Miciah/NE-551-configure-router-to-use-power-of-two-random-choices · dc59f965
      OpenShift Merge Robot authored
      NE-551: Configure router to use Power of Two Random Choices with Override
      dc59f965
  15. 05 Apr, 2021 2 commits
    • Miciah Masters's avatar
      Configure router to use Power of Two Random Choices · e83b057c
      Miciah Masters authored
      Configure router deployments to use HAProxy's "random" load balancing
      algorithm, which with its default parameters implements the "Power of Two
      Random Choices" balancing algorithm.  Allow the user to revert to the
      previous "Least Connections" balancing algorithm using an unsupported
      config override.
      
      See https://www.haproxy.com/blog/power-of-two-load-balancing/ for a
      description and analysis of Power of Two Random Choices.
      
      This commit resolves NE-551.
      
      https://issues.redhat.com/browse/NE-551
      
      * pkg/operator/controller/ingress/deployment.go
      (RouterLoadBalancingAlgorithmEnvName): New const.
      (desiredRouterDeployment): Check spec.unsupportedConfigOverrides, and set
      ROUTER_LOAD_BALANCE_ALGORITHM to "leastconn" if the
      {"loadBalancingAlgorithm":"leastconn"} override is set.
      * pkg/operator/controller/ingress/deployment_test.go
      (TestDesiredRouterDeployment): Verify that desiredRouterDeployment sets the
      ROUTER_LOAD_BALANCE_ALGORITHM environment variable as expected and
      correctly handles spec.unsupportedConfigOverrides.
      * test/e2e/operator_test.go
      (availableConditionsForPrivateIngressController): New variable.  Define the
      expected status conditions for an ingresscontroller that specifies the
      "Private" endpoint publishing strategy type and is available.
      (TestTLSSecurityProfile, TestRouteAdmissionPolicy, TestSyslogLogging)
      (TestContainerLogging, TestUniqueIdHeader): Use
      availableConditionsForPrivateIngressController.
      (TestLoadBalancingAlgorithmUnsupportedConfigOverride): New test.  Verify
      that the operator configures the router with the "random"
      load-balancing algorithm by default and allows the algorithm to be changed
      to "leastconn" algorithm using an unsupported config override.
      e83b057c
    • Miciah Masters's avatar
      Bump openshift/api for unsupportedConfigOverrides · 4090f437
      Miciah Masters authored
      Bump to github.com/openshift/api@054ceb5f6699b0162e59b0caa95cd8cbc109a4156
      to get the spec.unsupportedConfigOverrides field for the IngressController
      API.
      
      Bumping openshift/api requires bumping k8s.io packages to v0.21.0-rc.0.
      Bumping k8s.io/client-go to v0.21.0-rc.0 introduces a change that breaks
      controller-runtime v0.8.3, which necessitates bumping controller-runtime to
      v0.9.0-alpha.1.  Bumping controller-runtime to v0.9.0-alpha.1 introduces a
      breaking change, which necessitates minor changes in the operator manager
      setup.
      
      * go.mod: Bump.
      * go.sum:
      * manifests/00-custom-resource-definition.yaml:
      * pkg/manifests/bindata.go:
      * vendor/*: Regenerate.
      * pkg/operator/controller/ingress/controller.go
      (validateHTTPHeaderBufferValues):
      * pkg/operator/controller/ingress/controller_test.go
      (TestValidateHTTPHeaderBufferValues):
      * pkg/operator/controller/ingress/deployment.go (desiredRouterDeployment):
      * pkg/operator/controller/ingress/deployment_test.go
      (TestDesiredRouterDeployment):
      * pkg/operator/operator.go (newClientBuilder): Delete type.
      (Build, WithUncached): Delete methods of newClientBuilder.
      (New): Replace ClientBuilder with a NewClientFunc in the manager options.
      * test/e2e/http_header_buffer_test.go (TestHTTPHeaderBufferSize): Update to
      use spec.tuningOptions.
      4090f437
  16. 03 Apr, 2021 1 commit
    • Stephen Greene's avatar
      Support controller runtime v0.8.3 · f5e205f8
      Stephen Greene authored
      cmd/ingress-operator/start.go:
      Drop stop channel in exchange for a context whose parent
      comes from the controller-runtime's `signals.SetupSignalHandler()`
      function. Use the new context's `Done()` function in place of
      the previously used stop channel.
      
      pkg/log/log.go:
      Fix controller-runtime log package import.
      
      pkg/operator/controller/canary/metrics.go:
      Use a context in the metrics listener in place of a stop channel.
      
      pkg/operator/controller/<canary,certificate*,configurable-route,dns,ingress,status>:
      Adjust controller runtime function parameters to match new >=v0.7.0
      signatures. Change `client.MatchingField`(deprecated) to `client.MatchingFields`.
      
      pkg/operator/operator.go:
      Add custom manager.ClientBuilder type definition with custom methods to
      specifically side-step the default client cache. Use a context in
      `o.Start`, and replace the existing stop channel with `ctx.Done()`.
      
      test/e2e/configurable_route_test.go:
      Fix list types in `pollForNumberOfEntriesInList(...)`.
      f5e205f8