This project is an AWS-adapted version of the Google Cloud Bank of Anthos demo application. It demonstrates a cloud-native banking application running on Amazon EKS (Elastic Kubernetes Service).
.
├── src/ # Source code for microservices
│ ├── accounts/ # Accounts-related services
│ ├── frontend/ # Frontend service
│ └── ledger/ # Ledger-related services
├── terraform/
│ ├── infrastructure/ # Terraform configs for AWS infrastructure
│ └── application/ # Terraform configs for application resources
├── kubernetes-manifests-new/ # Kubernetes manifest files
└── .github/workflows/ # GitHub Actions workflow files
- AWS CLI configured with appropriate permissions
- Terraform (version 1.6.6 or later)
- kubectl
- An AWS account with permissions to create EKS clusters
To deploy the AWS infrastructure run the Terraform Infrastructure Deploy pipeline or manually:
cd terraform/infrastructure
terraform init
terraform apply
After the infrastructure is set up run the Terraform Application Deploy pipeline or manually:
cd ../application
terraform init
terraform apply
Kubernetes manifests are applied automatically via GitHub Actions via the Apply Kubernetes Manifests pipeline. To manually apply the manifests:
cd kubernetes-manifests-new
kubectl apply -f .
This project uses GitHub Actions for continuous integration and deployment. The following workflows are implemented:
-
Terraform Infrastructure Deploy (
terraform-infrastructure.yaml
)- Applies changes to the AWS infrastructure when updates are made to Terraform files in the
terraform/infrastructure/
directory.
- Applies changes to the AWS infrastructure when updates are made to Terraform files in the
-
Terraform Application Deploy (
terraform-application.yaml
)- Applies changes to application-specific resources when updates are made to Terraform files in the
terraform/application/
directory.
- Applies changes to application-specific resources when updates are made to Terraform files in the
-
Balance Reader Image Build (
balancereader-image-build.yaml
)- Builds and pushes the Docker image for the Balance Reader service.
-
Contacts Service Image Build (
contacts-image-build.yaml
)- Builds and pushes the Docker image for the Contacts service.
-
Frontend Image Build (
frontend-image-build.yaml
)- Builds and pushes the Docker image for the Frontend service.
-
Ledger Writer Image Build (
ledgerwriter-image-build.yaml
)- Builds and pushes the Docker image for the Ledger Writer service.
-
Transaction History Image Build (
transactionhistory-image-build.yaml
)- Builds and pushes the Docker image for the Transaction History service.
-
User Service Image Build (
uservice-image-build.yaml
)- Builds and pushes the Docker image for the User service.
- Apply Kubernetes Manifests (
kubernetes-manifests-apply.yaml
)- Automatically applies Kubernetes manifests when changes are pushed to the
kubernetes-manifests-new/
directory. - Can be manually triggered to deploy to a specific cluster.
- Automatically applies Kubernetes manifests when changes are pushed to the
To manually trigger any of these workflows:
- Go to the Actions tab in the GitHub repository
- Select the desired workflow
- Click "Run workflow"
- Provide any required inputs (e.g., cluster name for Kubernetes manifest application)
These pipelines ensure that changes to any part of the application - from infrastructure to individual microservices - are automatically built, tested, and deployed.