Migrating to Topology Operator

This example shows migration from a MATRIXX version XXXX deployment managed by Engine Operator to a deployment managed by Topology Operator. The same approach applies when migrating from Engine Controller.

Consider a multi-cluster deployment of two engines on version XXXX managed by the Engine Operator method:

  • Engine s1e1 in cluster 1 namespace matrixx-engine-s1.
  • Engine s1e2 in cluster 2 namespace matrixx-engine-s1.

The engines were initially installed using:

helm --kube-context context1 install mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base-XXXX.yaml -f topology-XXXX-s1e1.yaml --version XXXX
helm --kube-context context2 install mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base-XXXX.yaml -f topology-XXXX-s1e2.yaml --version XXXX

The topology-XXXX-s1e1.yaml file has the following contents:

engine:
  enabled: true
 
global:
  configurationSources:
    pricing-config:
      docker:
        image: example-pricing-sideloader:XXXX
  topology:
    domains:
    - subdomains:
      - pricing:
          configurationSource:
            refName: pricing-config
          fileName: mtx_pricing_matrixxOne.xml
        engines:
        - external: false
          processing:
            externalAddress: proc-cls-s1e1 external address
          publishing:
            externalAddress: publ-cls-s1e1 external address
        - external: true
          processing:
            externalAddress: proc-cls-s1e2 external address
          publishing:
            externalAddress: publ-cls-s1e2 external address
 
pricing-controller:
  enabled: true

The topology-XXXX-s1e2.yaml file has the following contents:

engine:
  enabled: true
 
global:
  configurationSources:
    pricing-config:
      docker:
        image: example-pricing-sideloader:XXXX
  topology:
    domains:
    - subdomains:
      - pricing:
          configurationSource:
            refName: pricing-config
          fileName: mtx_pricing_matrixxOne.xml
        engines:
        - external: true
          processing:
            externalAddress: proc-cls-s1e1 external address
          publishing:
            externalAddress: publ-cls-s1e1 external address
        - external: false
          processing:
            externalAddress: proc-cls-s1e2 external address
          publishing:
            externalAddress: publ-cls-s1e2 external address
 
pricing-controller:
  enabled: true

The engines will be upgraded to version YYYY and managed by the Topology Operator method:

  • The masters and agents in cluster 1 namespace matrixx-operators.
  • Agents in cluster 2 namespace matrixx-operators.
  • Engine s1e1 in cluster 1 namespace matrixx-engine-s1.
  • Engine s1e2 in cluster 2 namespace matrixx-engine-s1.

The upgraded engines are deployed using the following topology-YYYY.yaml Helm values file:

engine:
  enabled: true
 
global:
  configurationSources:
    pricing-config:
      docker:
        image: example-pricing-sideloader:YYYY
  topology:
    operators:
      master:
        context: context1
        namespace: matrixx-operators
      agents:
      - context: context1
        namespace: matrixx-operators
        externalAddress: topology-agent-1 external address
      - context: context2
        namespace: matrixx-operators
        externalAddress: topology-agent-2 external address
    domains:
    - subdomains:
      - pricing:
          configurationSource:
            refName: pricing-config
          fileName: mtx_pricing_matrixxOne.xml
        engines:
        - context: context1
          namespace: matrixx-engine-s1
          processing:
            externalAddress: proc-cls-s1e1 external address
          publishing:
            externalAddress: publ-cls-s1e1 external address 
        - context: context2
          namespace: matrixx-engine-s1
          processing:
            externalAddress: proc-cls-s1e2 external address
          publishing:
            externalAddress: publ-cls-s1e2 external address 
 
pricing-controller:
  enabled: true