# Traefik [Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. ## Introduction This chart bootstraps Traefik version 2 as a Kubernetes ingress controller, using Custom Resources `IngressRoute`: . ### Philosophy The Traefik HelmChart is focused on Traefik deployment configuration. To keep this HelmChart as generic as possible we tend to avoid integrating any third party solutions nor any specific use cases. Accordingly, the encouraged approach to fulfill your needs: 1. override the default Traefik configuration values ([yaml file or cli](https://helm.sh/docs/chart_template_guide/values_files/)) 2. append your own configurations (`kubectl apply -f myconf.yaml`) 3. extend this HelmChart ([as a Subchart](https://helm.sh/docs/chart_template_guide/subcharts_and_globals/)) ## Installing ### Prerequisites With the command `helm version`, make sure that you have: - Helm v3 [installed](https://helm.sh/docs/using_helm/#installing-helm) Add Traefik's chart repository to Helm: ```bash helm repo add traefik https://helm.traefik.io/traefik ``` You can update the chart repository by running: ```bash helm repo update ``` ### Kubernetes Version Support Due to changes in CRD version support, the following versions of the chart are usable and supported on the following kubernetes versions: | | Kubernetes v1.15 and below | Kubernetes v1.16-v1.21 | Kubernetes v1.22 and above | |-------------------------|-----------------------------|------------------------|----------------------------| | Chart v9.20.2 and below | [x] | [x] | | | Chart 10.0.0 and above | | [x] | [x] | ### Deploying Traefik ```bash helm install traefik traefik/traefik ``` #### Warning Helm v2 support was removed in the chart version 10.0.0. ### Exposing the Traefik dashboard This HelmChart does not expose the Traefik dashboard by default, for security concerns. Thus, there are multiple ways to expose the dashboard. For instance, the dashboard access could be achieved through a port-forward : ``` kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000 ``` Another way would be to apply your own configuration, for instance, by defining and applying an IngressRoute CRD (`kubectl apply -f dashboard.yaml`): ```yaml # dashboard.yaml apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: dashboard spec: entryPoints: - web routes: - match: Host(`traefik.localhost`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`)) kind: Rule services: - name: api@internal kind: TraefikService ``` ## Contributing If you want to contribute to this chart, please read the [Contributing Guide](../CONTRIBUTING.md).