This repo contains configuration for:
- Bootstraping a GCP Org from zero to hero -
bootstrap
- GCP ORG level stuff (like policies, billing, IAM, etc)
- Configuration for Apps -
definitions
- Code to make the configuration happen 🚀 -
pipeline
An application is a logical construct that makes sense from a developer point of view. It packages things such as:
- what containers am I running?
- where is the source code for such container images?
- what environments do I need?
- what branch do I want to deploy to each environment?
- do I need to expose a port on HTTPS with a domain name and certificate?
- what GCP resources do I need?
application
├── app level config
└── components
├── component level config
└── containers
└─ container level config
Logical component | Google Cloud | Kubernetes | GitHub | ArgoCD | Traffic |
---|---|---|---|---|---|
App | Folder | Namespace | Organization | Project | domain name |
Environment | Project | Cluster | Branch | ? | |
Component | Project | Repository | Application | domain prefix | |
Container | Manifests | Subfolder | path |
- GCP Organization must be created (see
bootstrap
) - GitHub Organizations created for each App (cannot create GitHub Organizations programatically)
Create GCP Service Account with enough privileges to deploy stuff at the org levelConfigureGOOGLE_APPLICATION_CREDENTIALS
pointing at 👆🏼Pulumi installed and logged inGitHub CLI installed and logged in
WORK IN PROGRESS
There will be different scripts for creating the GitHub repos, ArgoCD apps and GCP stuff.