Challenge Overview

Challenge Overview

 

Welcome to the AWS Setup challenge for Poseidon LPC Project. In this challenge, we aim to set up an environment on AWS to demo all the code developed done so far.  This challenge would involve writing a few Terraform scripts for setting up and deployment onto what we are calling our MVP environment.

Project Overview

The project objective is to build an SDK for the Loyalty Payment Card(LPC) for our client. This

SDK will be used by LPC’s clients to build the LPC mobile app.

So the SDK will provide all required functionalities from authentication to payment processing,

reward management, etc.

 

Technology Stack

  • Terraform

  • Kubernetes

  • AWS

 

Assets

The existing code is available on Gitlab. See the challenge forums for access to the repository.

 

Individual requirements

We’re developing a lot of individual services in this project and we’re starting a series of DevOps challenges that will focus on creating the application environment, deploy the services and support the application operations during development but also in production.

 

This is the first challenge in that series and we want to focus on four areas:

  • Create terraform scripts that will create our Kubernetes cluster

  • Configure the cluster by installing the required services 

    • Helm - we will use helm charts for deploying all the apps

    • Flux - create a GitOps flow - monitor GitLab repositories and trigger builds/deployments

  • Create AWS services that will be used by our apps

  • Deploy our backend and authentication POC apps to the cluster

 
  1. Terraform
    Create terraform scripts that will create and initialize the AWS EKS cluster. This requirement is quite basic and we do plan to expand it in the future with multiple availability zones, SSM installed on nodes, multiple VPCs, account permission rules, cluster monitoring, etc.
    We also need two VPCs created: VPC1 will have all the AWS services (see item 3) and VPC2 will be the EKS cluster. VPC1 and 2 should be connected using VPC peering.

  2. Cluster configuration

Install Helm (v3) and Flux in the cluster. Preferably use terraform to do this after the cluster is created.

  1. AWS services

Our apps will use a number of AWS services that we want to create with terraform scripts:

  • Cognito

  • Aurora(Postgres)

  • DynamoDB

  • SNS

  • SQS

We are using only DynamoDB in the POC app, so just creating the services and adding their access credentials to the secret manager will be enough for now

  1. Deploy the backend service app
    Backend app is available in the forums. Create a helm chart and update documentation for application deployment. It uses AWS cognito service that was created in the previous step - make sure to use secret manager to configure the service parameters as secrets.

  2. Deploy the POC authentication app
    The sample app that we developed is available in the forums. Task here is to update the app to create a helm chart to deploy the app and remove all the deployment steps that will no longer be necessary (remove both the scripts and update the documentation). Note that the app will be built & deployed by Flux. To reduce the scope for this app, we can skip creating the ssl certificate for now - this will be handled in the followup challenge.

What to submit

Submit two deliverables:

  • Terraform scripts and documentation (Readme) 

  • Updated POC app code



Final Submission Guidelines

See above

ELIGIBLE EVENTS:

2020 Topcoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30116150