1. 10 Apr, 2021 2 commits
  2. 09 Apr, 2021 4 commits
  3. 07 Apr, 2021 4 commits
  4. 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
  5. 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
  6. 03 Apr, 2021 4 commits
    • 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
    • Stephen Greene's avatar
      vendor: Bump controller runtime to v0.8.3 · 69be5146
      Stephen Greene authored
      69be5146
    • Stephen Greene's avatar
      go.mod: Bump controller runtime to v0.8.3 · 2706c45f
      Stephen Greene authored
      2706c45f
    • OpenShift Merge Robot's avatar
      Merge pull request #583 from Miciah/BZ1943845-add-startup-probe-to-the-router-deployment · d5432bc4
      OpenShift Merge Robot authored
      Bug 1943845: Add startup probe to the router deployment
      d5432bc4
  7. 02 Apr, 2021 2 commits
  8. 01 Apr, 2021 4 commits
    • Andrew McDermott's avatar
      Move http healthcheck to test/http · 48953582
      Andrew McDermott authored
      This is now consistent with the new http/2 and gRPC test servers.
      48953582
    • Andrew McDermott's avatar
      vendor: add grpc · b317254b
      Andrew McDermott authored
      b317254b
    • Andrew McDermott's avatar
      Add test gRPC and HTTP/2 test commands · 112d105f
      Andrew McDermott authored
      Add test servers that can be referenced in origin e2e tests.
      112d105f
    • Miciah Masters's avatar
      Add startup probe to the router deployment · 7b731576
      Miciah Masters authored
      Add a startup probe to allow the router up to 2 minutes start up before
      sending liveness and readiness probes in case initial synchronization takes
      a substantial amount of time.  Using a startup probe instead of specifying
      initialDelaySeconds on the liveness and readiness probes allows the kubelet
      to start performing liveness and readiness probes quickly if the initial
      synchronization is quick.
      
      This commit fixes bug 1943845.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1943845
      
      * assets/router/deployment.yaml: Add startup probe.  Delete
      initialDelaySeconds for the liveness and readiness probes.
      * pkg/manifests/bindata.go: Regenerate.
      * pkg/operator/controller/ingress/deployment.go (desiredRouterDeployment):
      Configure the startup probe.
      (hashableDeployment): Hash the startup probe.
      (deploymentConfigChanged): Update the startup probe.
      * pkg/operator/controller/ingress/deployment_test.go
      (TestDesiredRouterDeployment): Verify that the startup probe is configured
      as expected.  Fix an incorrect error message for a readiness probe check.
      (TestDeploymentConfigChanged): Split the liveness and readiness test cases
      to verify that an update either one alone is detected as a change.  Add a
      test case for the startup probe.
      7b731576
  9. 31 Mar, 2021 1 commit
  10. 30 Mar, 2021 6 commits
    • OpenShift Merge Robot's avatar
      Merge pull request #552 from awgreene/introduce-ingress-controller · 76995a5e
      OpenShift Merge Robot authored
      Introduce ingress controller
      76995a5e
    • awgreene's avatar
      Introduce Configurable Routes Controller · baf2d3e1
      awgreene authored
      baf2d3e1
    • OpenShift Merge Robot's avatar
      Merge pull request #581 from Miciah/NE-553-implement-PROXY-protocol-API · f79cb56f
      OpenShift Merge Robot authored
      NE-553: Implement the PROXY protocol API
      f79cb56f
    • Miciah Masters's avatar
      Implement the PROXY protocol API · ab74b44f
      Miciah Masters authored
      This commit resolves NE-553.
      
      https://issues.redhat.com/browse/NE-553.
      
      * pkg/operator/controller/ingress/controller.go
      (setDefaultPublishingStrategy): Set protocol for the HostNetwork and
      NodePortService endpoint publishing strategy types.
      (IsProxyProtocolNeeded): Check
      status.endpointPublishingStrategy.hostNetwork.protocol or
      status.endpointPublishingStrategy.hostNetwork.protocol as appropriate and
      return true if the value is "PROXY".
      * pkg/operator/controller/ingress/controller_test.go
      (TestIsProxyProtocolNeeded): New test.  Verify that IsProxyProtocolNeeded
      behaves as expected for various platforms and endpoint publishing strategy
      parameters.
      * test/e2e/operator_test.go
      (availableConditionsForIngressControllerWithNodePort): New variable.
      (TestClusterProxyProtocol): Rename...
      (TestProxyProtocolOnAWS): ...to this.
      (TestProxyProtocolAPI): New test.  Verify that the operator properly
      configures PROXY protocol when it is specified with the NodePortService
      endpoint publishing strategy.
      (waitForDeploymentEnvVar): Treat unset environment variable and environment
      variable with empty value as equivalent.
      ab74b44f
    • Miciah Masters's avatar
      test/e2e: Rename nondefaultAvailableConditions · 90169834
      Miciah Masters authored
      * test/e2e/operator_test.go (nondefaultAvailableConditions): Rename to
      availableConditionsForIngressControllerWithLoadBalancer.
      90169834
    • Miciah Masters's avatar
      Bump openshift/api for the PROXY protocol API · 4db469c1
      Miciah Masters authored
      Bump to github.com/openshift/api@e37aaed4c2784348bd19a794dcfe7f63e26000d2
      to get the PROXY protocol API.
      
      * go.mod: Bump.
      * go.sum:
      * manifests/00-custom-resource-definition.yaml:
      * pkg/manifests/bindata.go:
      * vendor/github.com/openshift/api/*:
      * vendor/modules.txt: Regenerate.
      4db469c1
  11. 29 Mar, 2021 1 commit
  12. 27 Mar, 2021 1 commit