Multi Region Cluster Deployment
Name implies, Services are deployed in two different regions controlled by a Load Balancer or Traffic Manager.
In GDA, We have 2 Clusters. (North Europe and West Europe). This sections deals with how to implement it in the SMDS API’s.
Perpetual team suggest wither Akamai GTM or Azure TM for traffic Routing. In SMDS we implement Azure TM.
For all Multiregion deployments, An additional ingress is required to configure the Traffic Managers.
Configure Two Ingresses on Each Cluster, one for GTM/ATM to call and one to handle the CNAME
In Simple :
- To Implement the Azure TM, Create one more ingress to handle the ATM DNS Config.
- The additional ingress will act as DNS for CNAME to the Azure TM and route the traffic to backend service.
- The additional Ingress configuration should be same in both Clusters.Bel
Below are the 2 Ingress which handles the CNAME and backend Service Route .
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: external-dns.alpha.kubernetes.io/target: smds-opsmdm-facility-search-cdt-tm.trafficmanager.net nginx.ingress.kubernetes.io/cors-allow-credentials: "true" nginx.ingress.kubernetes.io/cors-allow-headers: Consumer-Key, Authorization, ApiAuthorization, Ocp-Apim-Subscription-Key, Content-Type, Content-Disposition nginx.ingress.kubernetes.io/cors-allow-methods: PUT, GET, POST, DELETE, OPTIONS, PATCH nginx.ingress.kubernetes.io/cors-allow-origin: '*' nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/global-rate-limit: "10000" nginx.ingress.kubernetes.io/global-rate-limit-window: 1m nginx.ingress.kubernetes.io/proxy-body-size: 10m nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/service-upstream: "true" nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0 labels: app: smds-opsmdm-facility-search-cdt env: cdt region: ne01 name: smds-opsmdm-facility-search-ingress-atm-cdt namespace: opsmdm-cdt spec: ingressClassName: nginx-sm rules:
- host: smds-opsmdm-facility-search-cdt-app.maersk-digital.net
http:
paths:
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: / pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /swagger-ui/ pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /v3/api-docs/ pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /actuator/health pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /actuator/prometheus pathType: Prefix tls:
- hosts:
- smds-opsmdm-facility-search-cdt-app.maersk-digital.net secretName: tls-wildcard-maersk-digital-net
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/cors-allow-credentials: "true" nginx.ingress.kubernetes.io/cors-allow-headers: Consumer-Key, Authorization, ApiAuthorization, Ocp-Apim-Subscription-Key, Content-Type, Content-Disposition nginx.ingress.kubernetes.io/cors-allow-methods: PUT, GET, POST, DELETE, OPTIONS, PATCH nginx.ingress.kubernetes.io/cors-allow-origin: '*' nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/global-rate-limit: "10000" nginx.ingress.kubernetes.io/global-rate-limit-window: 1m nginx.ingress.kubernetes.io/proxy-body-size: 10m nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/service-upstream: "true" nginx.ingress.kubernetes.io/whitelist-source-range: 0.0.0.0/0 labels: app: smds-opsmdm-facility-search-cdt env: cdt region: ne01 name: smds-opsmdm-facility-search-ingress-cdt namespace: opsmdm-cdt spec: ingressClassName: nginx-sm rules:
- host: smds-opsmdm-facility-search-cdt-ne01.maersk-digital.net
http:
paths:
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: / pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /swagger-ui/ pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /v3/api-docs/ pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /actuator/health pathType: Prefix
- backend: service: name: smds-opsmdm-facility-search-service-cdt port: number: 8080 path: /actuator/prometheus pathType: Prefix tls:
- hosts:
- smds-opsmdm-facility-search-cdt-ne01.maersk-digital.net secretName: tls-wildcard-maersk-digital-net