Skip to content

Latest commit

 

History

History
159 lines (131 loc) · 5.47 KB

File metadata and controls

159 lines (131 loc) · 5.47 KB

Contributing Guide

This Helm Chart accepts contributions from GitHub pull requests. You can find help in this document to get your contribution accepted.

Helm Chart Guidelines

Please read the Helm Chart Guidelines before editing this chart.

Testing

Please read the testing guidelines to learn how testing is done with this chart.

Guidelines

According to the Traefik HelmChart philosophy, the guidelines for future evolutions are:

  • Fix bugs
  • improve security
  • improve HelmChart support
  • improve Kubernetes features support
  • improve Traefik default configuration

While encouraging contributions, the philosophy leads to avoid introducing:

  • Specific use cases
  • Third party CRD
  • Dashboard exposition tuning
  • Helm chart variables that shortcuts/expose static or dynamic Traefik configuration

Commit messages

Commits messages should follow conventional commits specification and should specify a scope.

All commits will appear in traefik helm chart changelog with two exceptions:

  • CRDs: CRDs are shared between Traefik and CRDs charts, thus, commits with this scope will appear in both charts changelog (e.g. feat(CRDs): update Traefik Proxy CRDs to v3.x)
  • CRDs-.*: commits with CRDs- prefixed scope will appear only on CRDs chart changelog (e.g. docs(CRDs-values): update values documentation)

About CRDs

Some Traefik Helm chart users asked for help in managing CRDs installed by this chart (cf. #1141, #1209).

Helm doesn't support CRDs upgrades (cf. HIP-0011 for details).

Our objectives are the following:

  1. Support the nominal installation case following official Helm GuideLines
  2. Stay conservative about CRDs to protect resource removal
  3. Allow users to install multiple instances of Traefik chart along with helm managed CRDs

Several implementations have been experimented. Here are pros and cons of each:

solution pros cons
templatized CRDs within Traefik helm chart
  • simple
  • users can specify only install a subset of CRDs
  • users don't have to bother with CRDs upgrades
  • --skip-crds will be inefficient and can lost users
  • the first installation fails are CRDs are not rendered first by helm
  • when installing multiple instances, CRDs are attached to one instance
seperated CRDs chart as main chart dependency
  • users can specify only install a subset of CRDs
  • users don't have to bother with CRDs upgrades
  • CRDs are versioned aside from main chart
  • users can install CRDs along with multiple instances of main chart
  • --skip-crds will be inefficient and can lost users
  • the first installation fails are CRDs are not rendered first by helm (helm doesn't respect dependency order)
  • when installing multiple instances, CRDs are attached to one instance
seperated CRDs chart
  • users can specify only install a subset of CRDs
  • users don't have to bother with CRDs upgrades
  • CRDs are versioned aside from main chart
  • users can install CRDs along with multiple instances of main chart
  • --skip-crds will be inefficient and can lost users
  • the first installation fails are CRDs are not rendered first by helm

Consequently, we chose the last option, until the situation evolve on Helm side.

Release process

VERSION=
# Checkout new branch
git checkout -b rel/$VERSION
# Update version in Chart.yaml
sed -i -e "s/^version: .*\$/version: $VERSION/g" traefik/Chart.yaml
# Commit the updated Chart.yaml
git commit -m "chore(release): publish $VERSION" traefik/Chart.yaml
# Generate first version of Changelog
make changelog
make docs
# Copy the Changelog for current version, and put it on a clean version
git checkout traefik/Chart.yaml
# Amend the commit and open the PR
git commit --amend traefik/Changelog.md traefik/Chart.yaml traefik/VALUES.md
git push -u origin HEAD
gh pr create -l kind/release

Statistics

Once a year, monocle is used to gather statistics on this project.

They are gathered with this config file:

---
workspaces:
  - name: monocle
    crawlers:
      - name: github-traefik
        provider:
          github_organization: traefik
          github_repositories:
            - traefik-helm-chart
        update_since: '2024-01-01'