Thank you for your interest in contributing to this Kubernetes workshop! This document provides guidelines and information for contributors.
If you find errors, typos, or have suggestions:
- Check existing issues to avoid duplicates
- Create a new issue with:
- Clear description
- Steps to reproduce (if applicable)
- Expected vs actual behavior
- Environment details (OS, Kubernetes version, etc.)
We welcome suggestions for:
- New workshop sections
- Additional examples
- Improved explanations
- Better lab exercises
- Tool updates
-
Structure
- Each section should have: README.md (theory), examples/, lab/instructions.md, lab/solutions/
- Follow existing format and style
- Keep explanations clear and concise
-
Code Examples
- Use public container images (no proprietary images)
- Test all examples before submitting
- Include comments explaining key concepts
- Follow Kubernetes best practices
-
Lab Exercises
- Include clear objectives
- Provide step-by-step instructions
- Add verification steps
- Include solutions with explanations
-
Style Guide
- No emojis in documentation (accessibility)
- Use markdown for formatting
- Code blocks with proper syntax highlighting
- Consistent terminology
-
Fork the repository
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the style guide
- Test all examples and exercises
- Update relevant documentation
-
Commit with clear messages
git commit -m "Add: Section on StatefulSets advanced patterns" -
Push to your fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Describe what you changed and why
- Reference related issues
- Include screenshots if relevant
Before submitting:
- All YAML files are valid
- Examples work on a fresh cluster
- Lab solutions are accurate
- No broken links in documentation
- Spelling and grammar checked
Use clear, descriptive commit messages:
Type: Brief description
Detailed explanation of changes (if needed)
Fixes #123
Types:
Add:New content or featuresFix:Bug fixes or correctionsUpdate:Changes to existing contentRemove:Deletion of contentDocs:Documentation only changesStyle:Formatting changes
Help improve documentation by:
- Fixing typos and grammar
- Clarifying confusing sections
- Adding diagrams or visual aids
- Improving examples
- Updating outdated information
We welcome translations to other languages:
- Create a new directory:
part-1-[language-code]/ - Translate all content
- Maintain the same structure
- Test all examples work with your translations
We provide multiple ways to set up your development environment:
The easiest way to contribute! All tools are pre-installed and configured.
Prerequisites:
- Visual Studio Code with Remote-Containers extension
- Docker Desktop or Podman Desktop
Steps:
- Clone the repository
- Open in VS Code
- Click "Reopen in Container" when prompted
- Wait for the container to build (5-10 minutes first time)
- Start contributing!
What's included:
- kubectl, helm, kind, k9s, flux
- Marp CLI for editing slides
- Markdown linting and validation tools
- YAML validation
- All VS Code extensions pre-configured
See .devcontainer/README.md for more details.
Work directly in your browser:
- Click "Code" → "Codespaces" → "Create codespace on main"
- Everything is set up automatically
- Start contributing immediately
Prerequisites:
- Podman or Docker
- Git
- Text editor (VS Code recommended)
- Node.js (for Marp CLI)
Installation:
# Clone repository
git clone https://github.com/rfaes/compose-to-kubernetes.git
cd compose-to-kubernetes
# Install Marp CLI
npm install -g @marp-team/marp-cli
# Install markdown tools
npm install -g markdownlint-cli markdown-link-check
# Start workshop environment
cd setup
./start-workshop.sh # Linux
# or
.\start-workshop.ps1 # WindowsUsing Make (recommended):
make validate # Validate all YAML
make test # Run full test suite
make lint # Lint markdown filesManual testing:
# Create kind cluster
kind create cluster --config setup/kind/simple.yaml
# Test examples
kubectl apply -f part-1/03-deployments/examples/
# Verify
kubectl get all
# Validate YAML
kubectl apply --dry-run=client -f your-file.yamlPreview slides:
# Live preview with hot reload
marp part-1/slides.md --watch --server
# Export to PDF
marp part-1/slides.md --pdfPlease note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms.
Contributors will be recognized in the project:
- Added to AUTHORS file
- Mentioned in release notes
- Acknowledged in documentation
- Open an issue for questions about contributing
- Join discussions in issues and pull requests
- Check existing issues and PRs for answers
By contributing, you agree that your contributions will be licensed under the MIT License.
Your contributions make this workshop better for everyone learning Kubernetes. We appreciate your time and effort!