Deploy containerized applications to Kubernetes across multiple clouds with a single workflow.
Yuruna automates the complexity of provisioning infrastructure, building containers, and deploying to Kubernetes. Write your configuration once, then deploy to localhost, Azure, AWS, or Google Cloud by changing a single parameter.
Yuruna uses a three-phase deployment model:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Resources │ ──▶ │ Components │ ──▶ │ Workloads │
│ (Terraform) │ │ (Docker) │ │ (Helm) │
└─────────────┘ └─────────────┘ └─────────────┘
- Resources - Provision cloud infrastructure (Kubernetes clusters, container registries, databases) using Terraform
- Components - Build Docker images and push them to your container registry
- Workloads - Deploy applications to Kubernetes using Helm charts
Each phase reads from YAML configuration files and passes outputs to the next phase.
Deploy a sample .NET website to Docker Desktop Kubernetes in minutes. No cloud account required.
Install the following tools:
- PowerShell 7+ - Run
Install-Module -Name powershell-yamlafter installing - Git
- Docker Desktop with Kubernetes enabled
- Helm
- Terraform
- mkcert - Run
mkcert -installafter installing
See full requirements for detailed setup instructions.
# Clone the repository
git clone https://github.com/alissonsol/yuruna.git
cd yuruna
# Add automation folder to your path (or run from automation folder)
$env:PATH += ";$PWD/automation"
# Phase 1: Create local resources (registry, Kubernetes context)
yuruna.ps1 resources website localhost
# Phase 2: Build and push the Docker image
yuruna.ps1 components website localhost
# Phase 3: Deploy to Kubernetes
yuruna.ps1 workloads website localhostOnce complete, visit the URL shown in the output to see your deployed website.
To deploy to a cloud provider instead of localhost, authenticate with your cloud CLI, then replace localhost with your target cloud.
# Authenticate (once per session)
az login --use-device-code
az account set --subscription <your-subscription-id> # if you have multiple subscriptions
# Deploy to Azure
yuruna.ps1 resources website azure
yuruna.ps1 components website azure
yuruna.ps1 workloads website azure# Authenticate (configure once)
aws configure # Enter your Access Key ID, Secret Access Key, region, and output format
# Deploy to AWS
yuruna.ps1 resources website aws
yuruna.ps1 components website aws
yuruna.ps1 workloads website aws# Authenticate (once per session)
gcloud auth application-default login
# Deploy to GCP
yuruna.ps1 resources website gcp
yuruna.ps1 components website gcp
yuruna.ps1 workloads website gcpSee authentication docs for detailed setup instructions including service accounts and API enablement.
Each project has three YAML configuration files in the config/<cloud>/ folder:
| File | Purpose |
|---|---|
resources.yml |
Infrastructure to create (clusters, registries, IPs) |
components.yml |
Docker images to build and push |
workloads.yml |
Applications to deploy via Helm |
See the website example for a complete reference and the syntax documentation for configuration details.
yuruna/
├── automation/ # Core PowerShell scripts (yuruna.ps1)
├── global/resources/ # Terraform templates for each cloud provider
├── examples/ # Example projects (website, template)
└── docs/ # Documentation
- Requirements - Full tool installation guide
- Authentication - Cloud provider setup
- Syntax - Configuration file reference
- FAQ - Troubleshooting common issues
- Cleanup - Removing deployed resources
- Examples - Sample projects
- Cost warning: Cloud resources incur charges. Always clean up resources you're not using.
- Windows users: Set
git config --global core.autocrlf inputbefore cloning to avoid line-ending issues with Linux containers. - Scripts and examples are provided "as is" without guarantees. See license.
Check the contributing guidelines and the list of open tasks.
Thanks to all contributors!
- Yuruna YouTube channel - Video tutorials
- Latest version
- References - Additional reading
Copyright (c) 2020-2025 by Alisson Sol et al.