1. 11 May, 2021 3 commits
    • Miciah Masters's avatar
      status: Set Available/Degraded from default ingress · 3c1bcf7b
      Miciah Masters authored
      Use only the default ingresscontroller for computing the clusteroperator's
      "Available" and "Degraded" status conditions.  The status of other ingress-
      controllers can be monitored using alerts; the clusteroperator should only
      report status as required for basic cluster functionality, and core
      components should depend only on the default ingresscontroller.
      
      This commit is related to bug 1955854.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1955854
      
      * pkg/operator/controller/status/controller.go (Reconcile): Pass
      state.IngressControllers to computeOperatorStatusVersions.
      (computeOperatorDegradedCondition, computeOperatorAvailableCondition): Use
      only the default ingresscontroller to compute status conditions.
      3c1bcf7b
    • Miciah Masters's avatar
      alerts: Add ingresscontroller degraded/unavailable · 434b24eb
      Miciah Masters authored
      Add an ingress_controller_conditions Prometheus metric that reports the
      status conditions of ingresscontrollers, and add Prometheus rules to raise
      alerts if an ingresscontroller is unavailable or degraded.
      
      This commit is related to bug 1955854.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1955854
      
      * cmd/ingress-operator/start.go (start): Call StartMetricsListener from the
      operator package, and call RegisterMetrics from the ingress and canary
      controller packages.
      * manifests/0000_90_ingress-operator_03_prometheusrules.yaml: Add alerts
      using the new ingress_controller_conditions metric to warn if an
      ingresscontroller is degraded or unavailable.
      * pkg/manifests/bindata.go: Regenerate.
      * pkg/operator/controller/canary/metrics.go (registerCanaryMetrics): Rename
      from this...
      (RegisterMetrics): ...to this.
      (StartMetricsListener): Move from here...
      * pkg/operator/metrics.go: ...to here.  New file.
      * pkg/operator/controller/ingress/metrics.go (ingressControllerConditions):
      New variable.  Define a "ingress_controller_conditions" Prometheus gauge.
      (metricsList): New variable.  Define the list of metrics for this
      controller.  Currently this list comprises ingressControllerConditions.
      (reportedConditions): New variable.  Define the ingresscontroller status
      conditions that are published in the ingress_controller_conditions metric.
      (SetIngressControllerConditionsMetric): New function.  Update the new
      "ingress_controller_conditions" gauge with the status conditions of the
      given ingresscontroller.
      (RegisterMetrics): New function.  Register metricsList with Prometheus.
      * pkg/operator/controller/ingress/status.go (syncIngressControllerStatus):
      Call SetIngressControllerConditionsMetric after updating status conditions.
      434b24eb
    • Miciah Masters's avatar
      canary: Delete extra "on" in log message · 313ea5fd
      Miciah Masters authored
      * pkg/operator/controller/canary/metrics.go (StartMetricsListener): Delete
      trailing "on" in the "starting metrics listener on " log message.
      313ea5fd
  2. 01 May, 2021 1 commit
  3. 29 Apr, 2021 1 commit
  4. 28 Apr, 2021 1 commit
  5. 26 Apr, 2021 2 commits
    • Stephen Greene's avatar
      Bindata: Update generated CRD · c63c7695
      Stephen Greene authored
      manifests/00-custom-resource-definition.yaml:
      
      Run `make update` to update the Ingress Controller CRD.
      
      pkg/manifests/bindata.go:
      
      Commit bindata changes from `make update`.
      
      This commit resolves Bug 1950270, in which
      `oc explain ingresscontroller.spec.nodePlacement --api-version=operator.openshift.io/v1`
      displays an outdated default node selector for Ingress Controller deployments.
      c63c7695
    • Stephen Greene's avatar
      go.mod: Update openshift/api & go version · 03af9b83
      Stephen Greene authored
      go.*:
      
      Update openshift/api to commit
      `c22782737ea0a882ed8d4e2c9bd3b974ee3bfca0` to pull in
      https://github.com/openshift/api/pull/886.
      Update go.mod go version to go 1.16 and run `go mod tidy`.
      Move from kube deps `v0.21.0-rc.0` to `v0.21.0` since kubernetes
      1.21 has been officially released.
      
      vendor:
      
      Run `go mod vendor`.
      03af9b83
  6. 24 Apr, 2021 1 commit
  7. 23 Apr, 2021 4 commits
    • Miciah Masters's avatar
      TestDefaultIngressClass: Omit namespace in logs · 1ef19654
      Miciah Masters authored
      * test/e2e/operator_test.go (TestDefaultIngressClass): Omit the
      ingressclass's namespace in log messages.  The namespace is always empty
      because ingressclass is cluster-scoped.
      1ef19654
    • Miciah Masters's avatar
      ingressclass: Add unit tests · 17f36541
      Miciah Masters authored
      * pkg/operator/controller/ingressclass/ingressclass_test.go: New file.
      (TestDesiredIngressClass): New test.  Verify that desiredIngressClass
      behaves as expected.
      (TestIngressClassChanged): New test.  Verify that ingressClassChanged
      behaves as expected.
      17f36541
    • Miciah Masters's avatar
      ingressclass: Capitalize names consistently · a539e5fa
      Miciah Masters authored
      * pkg/operator/controller/ingressclass/ingressclass.go
      (ensureIngressClass, desiredIngressClass, currentIngressClass)
      (updateIngressClass): Capitalize "ingressclasses" as "ingressClasses" and
      "ingresscontrollerName" as "ingressControllerName".
      (ingressclassChanged): Rename...
      (ingressClassChanged): ...to this.
      a539e5fa
    • Miciah Masters's avatar
      ingressclass: Handle ingresscontroller deletion · b625c7ca
      Miciah Masters authored
      If the ingresscontroller corresponding to an ingressclass does not
      exist (for example, because the ingresscontroller was deleted), delete the
      ingressclass.
      
      This commit fixes bug 1950978.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1950978
      
      * manifests/00-cluster-role.yaml: Allow the operator to delete
      ingressclasses.
      * pkg/manifests/bindata.go: Regenerate.
      * pkg/operator/controller/ingressclass/controller.go (Reconcile): Pass the
      ingresscontroller's namespaced name to ensureIngressClass.
      * pkg/operator/controller/ingressclass/ingressclass.go
      (ensureIngressClass): Change ingresscontroller name parameter type from
      string to namespaced-name.  Check if the ingresscontroller exists and is
      not marked for deletion, and pass a corresponding Boolean value to
      desiredIngressClass.
      (desiredIngressClass): Return false, nil if the ingresscontroller does not
      exist.
      * test/e2e/operator_test.go (TestCustomIngressClass): New test.  Verify
      that the ingressclass controller creates an ingressclass for a custom
      ingresscontroller and deletes the ingressclass when the ingresscontroller
      is deleted.
      b625c7ca
  8. 22 Apr, 2021 1 commit
  9. 21 Apr, 2021 2 commits
  10. 20 Apr, 2021 4 commits
  11. 19 Apr, 2021 1 commit
  12. 17 Apr, 2021 2 commits
  13. 16 Apr, 2021 4 commits
  14. 15 Apr, 2021 1 commit
  15. 14 Apr, 2021 1 commit
  16. 13 Apr, 2021 1 commit
  17. 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
  18. 10 Apr, 2021 3 commits
  19. 09 Apr, 2021 4 commits
  20. 07 Apr, 2021 2 commits