A comprehensive solution for managing AWS cloud resources including S3 buckets and RDS instances through Kubernetes using Crossplane.
This project demonstrates how to provision and manage cloud resources like S3 buckets and RDS databases using Kubernetes with Crossplane. It's packaged as a Replicated application, allowing easy distribution to customers through the Replicated platform with options for:
- Embedded Cluster deployment (Kubernetes-in-a-box)
- Existing Kubernetes cluster installation
- Air-gapped environments support
The solution uses Helm charts to deploy and configure Crossplane providers and resources, with a straightforward UI for configuring AWS credentials and resource parameters.
- Kubernetes cluster 1.26+ (or none if using Embedded Cluster)
- Replicated license (see "Getting a License" below)
- AWS account with appropriate permissions
curl -sSL https://k8s.kurl.sh/cloud-resources | sudo bashcurl -sSL https://kots.io/install | bash
kubectl kots install cloud-resourcesYou can give this a try in one of two ways:
- Distribute your own version: Clone this repo and use the Replicated platform to distribute it yourself
- Request a demo license: File a GitHub issue on this repository to request a trial license
During installation, you'll be prompted to provide:
- AWS credentials (access key ID and secret access key)
- AWS region
- S3 bucket and RDS configuration options
The solution consists of two main Helm charts:
-
cloud-providers: Installs and configures Crossplane AWS providers
- AWS S3 Provider
- AWS RDS Provider
-
cloud-resources: Creates and manages the actual cloud resources
- S3 buckets with configurable versioning and encryption
- RDS instances with configurable parameters
- Crossplane: Core infrastructure for managing cloud resources from Kubernetes
- Troubleshoot: Built-in diagnostics for easier support
- KOTS Admin Console: Web UI for application management when installed on existing clusters
- Embedded Cluster: Self-contained Kubernetes distribution for standalone deployments
/charts # Helm charts for the application
/cloud-providers # Crossplane providers chart
/cloud-resources # Resources management chart
/replicated # Replicated platform configuration
*.yaml # Application definition, config, etc.
To contribute or modify this project:
- Clone the repository
git clone https://github.com/harperreed/cloud-resources-demo.git
cd cloud-resources-demo- Install development dependencies
brew bundle install # Installs required tools via Homebrew-
Make changes to the charts or configuration
-
Build and test
make lint # Lint the configuration
make charts # Package the Helm charts
make release # Create a release (requires Replicated API token)If you encounter any issues or have questions, please:
- Check the support bundle by running
kubectl support-bundle --load-cluster-specs - File an issue on the GitHub repository