Get Started
This solutions demonstrates how to configure Upbound control planes to power a streamlined, self-service platform for your engineering teams. Clone and tailor it to your needs to roll out an Internal Developer Platform (IDP). An IDP enables developers to spin up resources that are production-ready, policy-compliant, and governed by Upbound's control mechanisms and proven patterns.
This guide helps you deploy this solution.
Before you begin
This quickstart assumes a basic understanding of Crossplane, Backstage, and ArgoCD concepts. For more information, see their respective documentation pages:
- Crossplane: https://docs.crossplane.io/latest/concepts/
- Backstage: https://backstage.io/docs/features/techdocs/
- ArgoCD: https://argo-cd.readthedocs.io/en/stable/
Prerequisites
Before you start to deploy this solution, you need to have the following:
- An Upbound Account and Organization created
- AWS credentials stored at
/Users/$USER/.aws/aws.json
- A Unix-like system (macOS/Linux/WSL)
- Docker Desktop
- kubectl
- Upbound CLI up
This solution involves deploying backing Kubernetes infrastructure for components of the platform. Only AWS EKS is currently implemented, but the same concepts demonstrated in the solution may be applied to Azure and GCP.
Clone this repository
Building out your Internal Developer Platform (IDP) with Upbound couldn't be easier with the starter kit. To get started, first fork the starter kit implementation found at https://github.com/upbound/solution-idp and clone it.
# Update the repository to your fork
git clone https://github.com/upbound/solution-idp.git
cd solution-idp
Install Task CLI
This project leverages Task for automating setup steps. Install it if you don't have it on your machine.
brew install go-task/tap/go-task
Login to Upbound
The first step in deployment is to authenticate your up
CLI. Login with the following command:
up login
Select an Upbound Space for deployment
Select the Upbound Space to the control planes responsible for bootstrapping and managing the IDP. You can either choose a Cloud Space or self-hosted Upbound Space.
- Cloud Space
- Self-Hosted Space
This command uses Upbound's AWS US East Cloud Space, but you can choose any other Cloud Space if you like:
up ctx $UPBOUND_ORGANIZATION/upbound-aws-us-east-1/default
Update this command to refer to a self-hosted Space you've already deployed and connected to the Upbound Console:
up ctx $UPBOUND_ORGANIZATION/$SELF_HOSTED_SPACE_NAME/default
Bootstrap your environment
Configure launch variables
Configure the variables defined in /state/solution-idp-non-prod/Taskfile.yaml
:
vars:
AWS_CREDENTIALS_PATH:
UPBOUND_ORG:
UPBOUND_ORG_TEAM:
SPACE:
ROOT_GROUP_NAME: "solution-idp-non-prod"
ROOT_CTP_NAME: "bootstrap"
GIT_REPO:
GIT_REVISION: "main"
Here's an explanation for each variable above:
AWS_CREDENTIALS_PATH
: Path to your AWS credentials used by the bootstrap control plane in a ProviderConfigUPBOUND_ORG
: Your Upbound Organization. You can find this by runningup org list
.UPBOUND_ORG_TEAM
: The Upbound organization team to house the robot accounts Backstage uses for authentication.SPACE
: Upbound Space that hosts the bootstrap and frontend control planesROOT_GROUP_NAME
: Root Upbound group name to house bootstrap control plane. Default:solution-idp-non-prod
ROOT_CTP_NAME
: Root control plane responsible for bootstrapping this solution. Default:boostrap
GIT_REPO
: The Git repository URL of the forked starter kitGIT_REVISION
: target branch of GIT_REPO. Default: main
Execute the bootstrap
After you populate the variables, bootstrap your environment:
cd state/solution-idp-non-prod
task bootstrap-all
The bootstrap process takes 3 to 5 minutes. After the command finishes, go to your space and observe the two newly created control plane groups:
Next go to the bootstrap control plane in solution-idp-non-prod
group and validate that the frontend
composite resource (XR) shows synced and ready:
Once the frontend
XR is ready, go to the frontend
control plane group:
Then validate that all the XRs become synced and ready:
Visit the development portal
Once everything gets fully provisioned, visit the development portal for your platform:
Clean up
To clean up the platform, delete the root Application
from the bootstrap control plane, then delete all the XEnvironments
from the bootstrap control plane.