Skip to content

Add wg-easy applicaiton example with helmfile and taskfile flow #39

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 37 commits into from
Apr 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
474e441
Add wg-easy application example with helmfile and taskfile flow
chris-sanders Mar 18, 2025
af84286
Update port configuration and expose utility tasks
chris-sanders Mar 18, 2025
bcecd93
Parameterize application name with default value of wg-easy
chris-sanders Mar 19, 2025
fa167e3
Update kubeconfig file naming convention
chris-sanders Mar 19, 2025
6370519
Try splitting sdk into it's own chart and deploying
chris-sanders Mar 19, 2025
dea4caf
Roll back sdk in helmfile will need a seperate path through replicate…
chris-sanders Mar 19, 2025
d4a148c
Using environments to enable local vs SaaS release testing, but I don…
chris-sanders Mar 19, 2025
1014701
First pass at docs
chris-sanders Mar 21, 2025
c226706
docs(wg-easy): Add prerequisites section to development workflow
chris-sanders Mar 26, 2025
6f7d25e
Refactor Taskfile to improve k3s traefik removal workflow
chris-sanders Mar 26, 2025
c8640e3
Update documentation to reference setup-kubeconfig instead of get-kub…
chris-sanders Mar 26, 2025
e0e1578
refactor: Enhance GCP VM creation and SSH connection with robust retr…
chris-sanders Mar 26, 2025
7385254
add verify kubeconfig
DexterYan Apr 6, 2025
cd3c281
add list cluster and use dotenv to update chart release version
DexterYan Apr 7, 2025
80cd890
update taskfile to fix promote fail and add release lint inspect
DexterYan Apr 8, 2025
6b3a4eb
add example env
DexterYan Apr 8, 2025
dc74ba1
add development md
DexterYan Apr 8, 2025
dc97b50
remove delelopment md
DexterYan Apr 9, 2025
a6dc20c
Use REPLICATED_APP for app name
hedge-sparrow Apr 11, 2025
ef8b566
Consistent naming for release tasks
hedge-sparrow Apr 11, 2025
63cbc82
task dep
hedge-sparrow Apr 11, 2025
bbe5982
update docs
hedge-sparrow Apr 11, 2025
855b901
add design md to use AI for choosing right tools and start to create …
DexterYan Apr 14, 2025
cd5ffcb
Remove unrelated change and update doc
DexterYan Apr 14, 2025
56f7bb0
rollback unrelated change
DexterYan Apr 14, 2025
9752255
remove unrelated change
DexterYan Apr 14, 2025
9defd37
update doc
DexterYan Apr 14, 2025
359d678
more <noun>-<verb> naming
hedge-sparrow Apr 14, 2025
cef5d82
Merge pull request #46 from replicatedhq/ash/wg-easy
chris-sanders Apr 14, 2025
50d9e5d
Merge branch 'wg-easy' into dx/wg-easy
DexterYan Apr 14, 2025
ee7b6d8
scrape namespaces from helmChart resources
hedge-sparrow Apr 15, 2025
4014ccf
remove additionalNamespaces from global appliation manifest
hedge-sparrow Apr 15, 2025
6c99c00
Merge pull request #47 from replicatedhq/ash/wg-easy-namespaces
hedge-sparrow Apr 15, 2025
f9fdf56
Add script to automatically set helmChart versions from Chart.yaml
hedge-sparrow Apr 16, 2025
43f1709
Inline version script
hedge-sparrow Apr 16, 2025
82eac92
Merge pull request #49 from replicatedhq/ash/wg-easy-versions
chris-sanders Apr 16, 2025
fd85b13
Merge pull request #42 from replicatedhq/dx/wg-easy
DexterYan Apr 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,10 @@ Thumbs.db
*.pyo
*.pyd
__pycache__/

# wg-easy specific
*.kubeconfig
applications/wg-easy/release/
applications/wg-easy/*/charts/
applications/wg-easy/*/Chart.lock
.aider*
91 changes: 91 additions & 0 deletions applications/wg-easy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# WG-Easy Helm Chart Development Pattern

This repository demonstrates a structured approach to developing and deploying Helm charts with Replicated integration. It focuses on a progressive development workflow that builds complexity incrementally, allowing developers to get fast feedback at each stage.

## Core Principles

The WG-Easy Helm Chart pattern is built on five fundamental principles:

### 1. Progressive Complexity

Start simple with individual chart validation and progressively move to more complex environments. This allows issues to be caught early when they are easier to fix.

- Begin with local chart validation
- Move to single chart deployments
- Progress to multi-chart integration
- Finally test in production-like environments

### 2. Fast Feedback Loops

Get immediate feedback at each development stage by automating testing and validation. This shortens the overall development cycle.

- Automated chart validation
- Quick cluster creation and deployment
- Standardized testing at each stage
- Fast iteration between changes

### 3. Reproducible Steps

Ensure consistent environments and processes across all stages of development, eliminating "works on my machine" issues.

- Consistent chart configurations
- Automated environment setup
- Deterministic dependency management
- Standardized deployment procedures

### 4. Modular Configuration

Allow different components to own their configuration independently, which can be merged at release time.

- Per-chart configuration files
- Automatic configuration merging
- Clear ownership boundaries
- Simplified collaborative development

### 5. Automation First

Use tools to automate repetitive tasks, reducing human error and increasing development velocity.

- Task-based workflow automation
- Helmfile for orchestration
- Automated validation and testing
- Streamlined release process

## Repository Structure

```
applications/wg-easy/
├── charts/templates/ # Common templates shared across charts
├── cert-manager/ # Wrapped cert-manager chart
├── cert-manager-issuers/ # Chart for cert-manager issuers
├── replicated/ # Root Replicated configuration
├── replicated-sdk/ # Replicated SDK chart
├── taskfiles/ # Task utility functions
├── traefik/ # Wrapped Traefik chart
├── wg-easy/ # Main application chart
├── helmfile.yaml # Defines chart installation order
└── Taskfile.yaml # Main task definitions
```

## Architecture Overview

![Architecture Diagram](docs/architecture.png)

Key components:
- **Taskfile**: Orchestrates the workflow with automated tasks
- **Helmfile**: Manages chart dependencies and installation order
- **Wrapped Charts**: Encapsulate upstream charts for consistency
- **Shared Templates**: Provide reusable components across charts
- **Replicated Integration**: Enables enterprise distribution

## Learn More

- [Chart Structure Guide](docs/chart-structure.md)
- [Development Workflow](docs/development-workflow.md)
- [Task Reference](docs/task-reference.md)
- [Replicated Integration](docs/replicated-integration.md)
- [Example Patterns](docs/examples.md)

---

This pattern is designed to be adaptable to different applications and requirements. Feel free to modify it to suit your specific needs.
Loading