Configuring Routing Manifest

Routing manifest is needed to make multiple services available in the same domain.

For example, let's assume you have created a front-end and 3 microservices and you want them all to be available on the same domain:

  • newsite.example.com/ should load frontend service

  • newsite.example.com/api/service-commerce/ should load package-commerce service

  • newsite.example.com/api/service-content should load package-content service

  • newsite.example.com/api/service-search should load package-search service

You have to create a routing manifest to achieve this. (In addition to pointing the domain in question to your Kubernetes cluster during infra generation)

Create manifest

Add .cxcloud.yaml to the root folder of your monorepo.

my-monorepo/.cxcloud.yaml
namespace: $GIT_BRANCH
routing:
  domain: $GIT_BRANCH.dev.newsite.example.com
  ingressClass: $INGRESS_CLASS
  lbCert: $LB_CERT
  scheme: $SCHEME
  ssl: false
  rules:
    - path: /api/service-commerce
      serviceName: package-commerce
      servicePort: 4003
    - path: /api/service-content
      serviceName: package-content
      servicePort: 4003
    - path: /api/service-search
      serviceName: package-search
      servicePort: 4003
    - path: /
      serviceName: package-frontend
      servicePort: 80

Please note that path should match the API prefix you defined when generating the service with CLI. By default, during service generation, CX Cloud CLI suggests service name as the API prefix.

After committing changes to Git repository, CI/CD pipeline will deploy changes automatically.

Test

To test for example commerce service, newsite.example.com/api/service-commerce/ should return {"health":"OK"} and newsite.example.com/api/service-commerce/v1/api-docs should present to you Swagger documentation.

Last updated