Provision Infrastructure

Cx Cloud modules and deployments is developed for Kubernetes, hence, CX Cloud can run on any existing Kubernetes cluster.

The CX Cloud demo setup will install the infra with Kubernetes, running on AWS. When the setup is up and running it can be used for the CX Cloud Demo app or any other CX Cloud related project.

Getting stated with CX Cloud Demo

Windows is not supported. You can only provision the infrastructure using a Unix based OS. Eg. macOS or Linux.

Make sure you have installed all the requirements on your computer.

Installation steps

There are few steps that has to be done in order to install the infrastructure. Follow the instructions from the following steps:

  1. Install OpenVPN in order to access services in the private subnets on AWS.

If you have enabled Multi-Factor Authentication on your AWS account or you are assuming another role which does, you might be asked to enter your MFA token (using your Authenticator app) in this step.

AWS credentials has to be configured in order to provision the infra for CX Cloud demo. It is possible to provision with preset API keys as environment variables. This is useful for example when running AWS Vault for storing the secrets in your operating system's secure keystore.

Configuring a domain for your online service

After you have generated the Kubernetes infrastructure, you would want to assign a domain to your future online service (or services)

The assumed starting state is that you have access to manage "example.com" DNS. CX Cloud is to be configured to utilize this domain to explore its possibilities. As there might already be a site running in www.example.com, the target state with CX Cloud would look like this:

  • newsite.example.com (customer front-end)

  • newsite.example.com/api/service-commerce/v1/ (commerce service API)

  • newsite.example.com/api/service-content/v1/ (content service API)

  • newsite.example.com/api/service-search/v1/ (search service API)

  • newsite.example.com/api/service-auth/v1/ (auth service API)

  • *.dev.newsite.example.com (Pull Request environments)

We have used this assumption in our documentation and configuration examples. Most of these configurations are done with a routing manifest later and at this stage we only need to point the domain to Kubernetes load balancer like this:

  • First figure out your Load Balancer(s) URL. The URL(s) are displayed after generating the infrastructure. But you can also find them using:

kubectl get ingress --all-namespaces
  • Then you have to point your own domain name to this load balancer URL. To do this:

    • If you manage your domain using AWS' route53 service, update the settings in terraform.tfvars and re-run the terraform apply command in order to update the domain name aliases. Follow the instructions from Install Kubernetes.

    • If you manage your domain using a provider that's not AWS, navigate to your domain's management panel and create an CNAME record for newsite.example.com pointing to the load balancer URL.