Uploaded image for project: 'OpenShift Service Mesh'
  1. OpenShift Service Mesh
  2. OSSM-1718

Istio Operator pauses reconciliation when gateway deployed to non-control plane namespace

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • OSSM 2.2.2, OSSM 2.3.0
    • OSSM 2.2.0
    • Maistra
    • None
    • Sprint 53, Sprint 54, Sprint 55

      Currently, gateways in member namespaces can only be reconciled after the SMCP has been fully reconciled (because that'll add the namespaces to the mesh) - so a possible workaround is to add the gateway only after a first complete reconciliation of the mesh. An implementation would likely have to parallelize namespace and SMCP reconciliation.

      Deploying the following example should work (it's currently rejected by the operator):

      apiVersion: maistra.io/v2
      kind: ServiceMeshControlPlane
      metadata:
        name: ossm-1718
      spec:
        version: v2.2
        gateways:
          additionalIngress:
            istio-ingress-external:
              enabled: true
              namespace: bookinfo
      ---
      apiVersion: maistra.io/v1
      kind: ServiceMeshMemberRoll
      metadata:
       name: default
      spec:
       members:
       - bookinfo
      

      Acceptance Criteria:

      • operator should reconcile namespaces even if an SMCP isn't fully reconciled yet
      • creating SMMR and SMCP (with gateway in non-control plane namespace) at the same time is possible

      Original description:

      Istio operator pauses all reconciliation when a gateway is deployed to namespace other than the control plane namespace.
      This means that other operations, like adding a new namespace to the mesh cannot process.

      Example SMCP: https://github.com/trevorbox/service-mesh-patterns/blob/ossm-2.0/ossm-2.0/helm/mongodb-trusted-ca/helm/control-plane/templates/servicemeshcontrolplane-basic-install.yaml

      Errors observed in SMCP:

      ...
      status:
        observedGeneration: 6
        annotations:
          alwaysReadyComponents: 'mesh-config,telemetry-common,tracing'
          readyComponentCount: 7/9
        readiness:
          components:
            pending:
              - istio-egress
              - kiali
            ready:
              - grafana
              - istio-discovery
              - istio-ingress
              - mesh-config
              - prometheus
              - telemetry-common
              - tracing
            unready: []
        operatorVersito update if on: 2.0.0-13.el8
      ...
        conditions:
          - lastTransitionTime: '2020-11-11T20:33:32Z'
            message: Successfully installed all mesh components
            reason: InstallSuccessful
            status: 'True'
            type: Installed
          - lastTransto update if itionTime: '2020-11-11T20:51:28Z'
            message: 'Paused until the following components become ready: [istio-egress]'
            reason: PausingUpdate
            status: 'False'
            type: Reconciled
          - lastTransitionTime: '2020-11-11T20:45:22Z'
            message: 'Paused until the following components become ready: [istio-egress]'
            reason: PausingUpdate
            status: 'False'
            type: Ready
      ...
      

      Errors observed in istio-operator log:

      ...
      {"level":"info","ts":1605127526.494948,"logger":"servicemeshmemberroll-controller","msg":"skipping reconciliation because mesh is not in a known good state","ServiceMeshMemberRoll":"istio-system/default"}
      ...
      

            dgrimm@redhat.com Daniel Grimm
            rhn-gps-tbox Trevor Box
            Votes:
            2 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated:
              Resolved: