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

Details

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

    Description

      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"}
      ...
      

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: