A solution framework to generate a project with built-in structure and modules
Project description
Google Cloud Solutions Template
A solution framework to generate a new project with built-in structure and modules to accelerate your project setup.
TL;DR
Solutions Template is a boilerplate template for building repeatable solutions with the best practices in architecture on Google Cloud, including GKE clusters, Cloud Run, Test Automation, CI/CD, as well as development process.
This template provides built-in and ready-to-ship modules including:
- Easy-to-deploy Terraform boilerplate modules
- Container-based microservices, can be deployed to a Kubernetes cluster or Cloud Run.
- Unified deployment using Skaffold.
- Automatically generated API documentation with Swagger UI.
- CI/CD deployment (with Github Actions).
- Cloud Run templates.
Roadmap
Please see Feature Requests in the Github issue list.
Prerequisite
Tool | Required Version | Installation |
---|---|---|
Python | >= 3.9 | |
gcloud CLI | Latest | https://cloud.google.com/sdk/docs/install |
Terraform | >= v1.3.7 | https://developer.hashicorp.com/terraform/downloads |
Skaffold | >= v2.4.0 | https://skaffold.dev/docs/install/ |
[Optional] If you plan to deploy services on a GKE cluster, please install the following:
Tool | Required Version | Installation |
---|---|---|
Kustomize | >= v5.0.0 | https://kubectl.docs.kubernetes.io/installation/kustomize/ |
Installing Solutions Template CLI
With pip
:
pip install solutions-template
With pipx
:
pip install --user pipx
pipx install solutions-template
Getting Started
Set up GCP project
# Optional: create a new GCP project. You can also use an existing GCP project.
gcloud projects create my-solution-gcp-id
# Set gcloud CLI to the GCP project.
gcloud config set project my-solutions-gcp-id
Generate a new solution folder.
st new my-solution .
This will prompt options and variables:
🎤 What is your project name? (Spaces are allowed.)
my-solution
🎤 What is your Google Cloud project ID?
my-solution-gcp-id
🎤 What is your Google Cloud project number?
12345678
🎤 Which Google Cloud region?
us-central1
🎤 Use GCS Bucket for Terraform backend?
Yes
Go to the newly created project folder and initialize the solution.
cd my-solution
st infra init
Add a RESTful API service with Todo data model to this solution.
st components add restful_service
Fill details in the prompt:
- Component name: todo_service
- Resource name: todo-service
- Relative path: todo-service
- GCP region: us-central1
- Data model name: todo
- Add Cloud Run to deployment methods: yes
- Create network endpoint group (NEG) for serverless ingress: yes
- Default deploy method? (cloudrun or gke): Cloud Run
Add a HTTP Load Balancer for Cloud Run service(s)
st add component terraform_httplb_cloudrun
st infra apply 3-httplb-cloudrun
Build and deploy
st deploy
- See other deployment options in solutions_template/modules.
Additional Documentations
You can find more documentations in docs folder. In a nutshell, it covers the following:
- INSTALLATION.md - The overall installation guide.
- DEVELOPMENT.md - Development guide and code submission process.
- TROUBLESHOOTING.md - Development guide and code submission process.
In the docs/components folder, it contains a few more guidance based on each component/feature available in this template.
- gke.md covers the overall developmeng guidance on Google Kubernetes Engine.
- cloudrun.md covers the guidance if you want to deploy microservice to Cloud Run.
FAQ
-
Who are the target audience/users for this Solutions template?
- A: Any engineering team to start a new solution development project.
-
Can I choose to deploy microservice just to Cloud Run?
- A: Yes, please refer to Setting up Google Cloud Project in this README.md to choose where to deploy microservices. Or you can refer to INSTALLATION.md for more details.
-
Can I use this template for non-Google or multi-Cloud environments?
- A: We design this Solutions Template to work 100% out of the box with Google Cloud products. However you could customize the solution to meet your needs on multi-Cloud environment. See Why Google Cloud for details.
Troubleshoot
See TROUBLESHOOTING.md for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file solutions_template-1.14.0.tar.gz
.
File metadata
- Download URL: solutions_template-1.14.0.tar.gz
- Upload date:
- Size: 359.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7078d1483a5b3b7c27f2d1380eb7c2482e7cb89dbc830bf5b6826eff57c1e48f |
|
MD5 | 515f075dc0742f1734a737a3d5c0e048 |
|
BLAKE2b-256 | 2d4dc540e1a6eb35cf8621d21aa6a265766dfd2917f02993b40ac51b044085cb |
File details
Details for the file solutions_template-1.14.0-py3-none-any.whl
.
File metadata
- Download URL: solutions_template-1.14.0-py3-none-any.whl
- Upload date:
- Size: 450.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.3 Darwin/22.6.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16eb95aafcc495fe34f2f3ef929693c7b3e22c4eb94c5f64ab2abcfa286d2de6 |
|
MD5 | 2088e6f3aa8ed388f66c6805849e841e |
|
BLAKE2b-256 | 443720ad1392c94ca11ceb8d78eb4984e17e749047252fc8ec5b0fd8dc285f55 |