This workshop guides you through setting up an Internal Developer Platform (IDP) using CNOE's idpBuilder. The idpBuilder is a tool that helps create a Kubernetes-based developer platform with essential services like ArgoCD and Gitea pre-configured.
Before starting the workshop, make sure you have the following:
- Docker or any other container runtimes
- At least 4GB of RAM available for the container runtime
- kubectl installed
- Basic understanding of Kubernetes concepts
- Terminal access
- Optional: GitHub account
- Optional: AWS Account
- Installation
- Basic Setup
- Exploring the Platform
- Cleaning up the base installation
- Adding Custom Packages
- Advanced stuff: infrastructure provisioning
- Deploying it in CodeSpaces
First, let's install the idpBuilder:
# Download the latest version of idpBuilder
curl -fsSL https://raw.githubusercontent.com/cnoe-io/idpbuilder/main/hack/install.sh | bash
idpbuilder versionSee other installation options in the idpbuilder documentation.
Let's create a basic IDP with the core packages:
# Create a basic cluster with default settings
idpbuilder createThis command:
- Creates a Kind (Kubernetes in Docker) cluster
- Installs core packages (ArgoCD, Gitea)
- Sets up ingress for accessing services
Once the command completes, you can access the following UIs:
To get the login credentials:
idpbuilder get secretsLet's explore what was created:
# List the running pods
kubectl get pods -A
# List ArgoCD applications
kubectl get Applications -n argocd
# Check ingress configuration
kubectl get ingress -Aidpbuilder delete You can extend your IDP with custom packages. To demonstrate this feature, let's deploy the reference architecture. You can find a detailed guide here.
# Clone the stacks repository for examples
idpbuilder create --use-path-routing \
--package https://github.com/cnoe-io/stacks//ref-implementationKeep in mind that after idpbuilder finishes, you will still need to wait around 5 minutes for all components to be up and running.
For this step, you will need access to an AWS account. If you don't have access to one, no worries, you can emulate this part of the workshop using localstack.
First, clone the repo with the stacks.
git clone https://github.com/cnoe-io/stacks/
Then modify the ./crossplane-integrations/crossplane-providers/provider-secret.yaml file by adding your AWS access and secret keys. Ensure the key user has permissions to create S3 buckets.
Now deploy the crossplane integration:
idpbuilder create \
--use-path-routing \
--package https://github.com/cnoe-io/stacks//ref-implementation \
--package ./crossplane-integrations
Now, if you create an AWS app from the templates (Go App with AWS resources), it will generate a bucket in S3!
If you do not have access to an AWS account, you can deploy localstack to emulate the AWS API:
idpbuilder create \
--use-path-routing \
--package https://github.com/cnoe-io/stacks//ref-implementation \
--package https://github.com/cnoe-io/stacks//localstack-integration
You can see more details about this implementation here.
Follow this documentation.