Multiple Sub-Domain Installation
This example shows an installation of Topology Operator masters, agents, and six MATRIXX Engines. Two engines are installed in each of three sub-domains.
The following is the distribution of Topology Operator components across eight namespaces in two clusters:
- 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
. - Engine s2e1 in cluster 1 namespace
matrixx-engine-s2
. - Engine s2e2 in cluster 2 namespace
matrixx-engine-s2
. - Engine s3e1 in cluster 1 namespace
matrixx-engine-s3
. - Engine s3e2 in cluster 2 namespace
matrixx-engine-s3
.
Create the namespaces and install with the following commands:
kubectl --context context1 create ns matrixx-operators
kubectl --context context2 create ns matrixx-operators
kubectl --context context1 create ns matrixx-engine-s1
kubectl --context context2 create ns matrixx-engine-s1
kubectl --context context1 create ns matrixx-engine-s2
kubectl --context context2 create ns matrixx-engine-s2
kubectl --context context1 create ns matrixx-engine-s3
kubectl --context context2 create ns matrixx-engine-s3
helm --kube-context context1 install mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base.yaml -f topology-matrixx_version.yaml -f cluster1.yaml --version matrixx_version
helm --kube-context context2 install mtx-engine-s1 matrixx/matrixx -n matrixx-engine-s1 -f base.yaml -f topology-matrixx_version.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context1 install mtx-engine-s2 matrixx/matrixx -n matrixx-engine-s2 -f base.yaml -f topology-matrixx_version.yaml -f cluster1.yaml --version matrixx_version
helm --kube-context context2 install mtx-engine-s2 matrixx/matrixx -n matrixx-engine-s2 -f base.yaml -f topology-matrixx_version.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context1 install mtx-engine-s3 matrixx/matrixx -n matrixx-engine-s3 -f base.yaml -f topology-matrixx_version.yaml -f cluster1.yaml --version matrixx_version
helm --kube-context context2 install mtx-engine-s3 matrixx/matrixx -n matrixx-engine-s3 -f base.yaml -f topology-matrixx_version.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context2 install mtx-operators matrixx/matrixx -n matrixx-operators -f base.yaml -f topology-matrixx_version.yaml -f cluster2.yaml --version matrixx_version
helm --kube-context context1 install mtx-operators matrixx/matrixx -n matrixx-operators -f base.yaml -f topology-matrixx_version.yaml -f cluster1.yaml --version matrixx_version
Where matrixx_version is the version of MATRIXX, such as 5280.
The topology-matrixx_version.yaml Helm values file has the following contents:
engine:
enabled: true
global:
configurationSources:
pricing-config-s1:
docker:
image: example-pricing-sideloader-s1:matrixx_version
pricing-config-s2:
docker:
image: example-pricing-sideloader-s2:matrixx_version
pricing-config-s3:
docker:
image: example-pricing-sideloader-s3: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
domains:
- subdomains:
- pricing:
configurationSource:
refName: pricing-config-s1
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:
configurationSource:
refName: pricing-config-s2
engines:
- context: context1
namespace: matrixx-engine-s2
processing:
externalAddress: proc-cls-s2e1 external address
publishing:
externalAddress: publ-cls-s2e1 external address
- context: context2
namespace: matrixx-engine-s2
processing:
externalAddress: proc-cls-s2e2 external address
publishing:
externalAddress: publ-cls-s2e2 external address
- pricing:
configurationSource:
refName: pricing-config-s3
engines:
- context: context1
namespace: matrixx-engine-s3
processing:
externalAddress: proc-cls-s3e1 external address
publishing:
externalAddress: publ-cls-s3e1 external address
- context: context2
namespace: matrixx-engine-s3
processing:
externalAddress: proc-cls-s3e2 external address
publishing:
externalAddress: publ-cls-s3e2 external address
pricing-controller:
enabled: true