Adding an Engine

Add a third MATRIXX Engine (in the same sub-domain) to the initial deployment in its own namespace:

  • The masters and agents in cluster 1 namespace matrixx-operators.
  • Agents in cluster 2 namespace matrixx-operators.
  • Agents in cluster 3 namespace matrixx-operators.
  • Engine s1e1 in cluster 1 namespace matrixx-engine-s1.
  • Engine s1e2 in cluster 2 namespace matrixx-engine-s1.
  • Engine s1e3 in cluster 3 namespace matrixx-engine-s1.
  • Traffic Routing Agent in cluster 1 namespace matrixx-tra.

Create the cluster 3 namespaces and install the engine with the following commands:

kubectl --context context3 create ns matrixx-operators
kubectl --context context3 create ns matrixx-engine-s1
helm --kube-context context1 upgrade mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base.yaml -f topology-additional-engine.yaml -f cluster1.yaml --version matrixx_version
helm --kube-context context2 upgrade mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base.yaml -f topology-additional-engine.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context3 install mtx-enigne-s1 matrixx/matrixx -n matrixx-engine-s1 -f base.yaml -f topology-additional-engine.yaml -f cluster3.yaml --version matrixx_version
helm --kube-context context2 upgrade mtx-operators matrixx/matrixx -n matrixx-operators -f base.yaml -f topology-additional-engine.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context3 install mtx-operators matrixx/matrixx -n matrixx-operators -f base.yaml -f topology-additional-engine.yaml -f cluster3.yaml --version matrixx_version
helm --kube-context context1 upgrade mtx-operators matrixx/matrixx -n matrixx-operators -f base.yaml -f topology-additional-engine.yaml -f cluster1.yaml --version matrixx_version

The following topology-additional-engine.yaml adds the third engine:

global:
  configurationSources:
    pricing-config-s1:
      docker:
        image: example-pricing-sideloader-s1:matrixx_version
  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
      - context: context3
        namespace: matrixx-operators
        externalAddress: topology-agent-3 external address
    domains:
    - subdomains:
      - pricing:
          configurationSource:
            refName: pricing-config-s1
          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
        - context: context3
          namespace: matrixx-engine-s1
          processing:
            externalAddress: proc-cls-s1e3 external address
          publishing:
            externalAddress: publ-cls-s1e3 external address

The cluster3.yaml Helm values file establishes the context3 context.

global:
  topology:
    operators:
      currentContext: context3

The upgrade in the matrixx-operators namespace first upgrades s1e1 and s1e2 (standby first), and then create s1e3.

Note: If upgrading from a single-engine (s1e1) to a dual-engine (s1e1 and s1e2) deployment, there is down time while s1e1 is upgrading.

Finally, upgrade the TRA with the following command:

helm --kube-context context1 upgrade mtx-tra matrixx/matrixx -n matrixx-tra -f base.yaml -f topology-additional-engine.yaml -f cluster1.yaml -f tra.yaml --version matrixx_version