Integrating traefik
This commit is contained in:
158
opencloud/charts/traefik/README.md
Normal file
158
opencloud/charts/traefik/README.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# Traefik
|
||||
|
||||
[Traefik](https://traefik.io/) is a modern HTTP reverse proxy and load balancer made to deploy
|
||||
microservices with ease.
|
||||
|
||||
## Introduction
|
||||
|
||||
Starting with v28.x, this chart now bootstraps Traefik Proxy version 3 as a Kubernetes ingress controller,
|
||||
using Custom Resources `IngressRoute`: <https://doc.traefik.io/traefik/v3.0/routing/providers/kubernetes-crd/>.
|
||||
|
||||
It's possible to use this chart with Traefik Proxy v2 using v27.x
|
||||
This chart support policy is aligned with [upstream support policy](https://doc.traefik.io/traefik/deprecation/releases/) of Traefik Proxy.
|
||||
|
||||
See [Migration guide from v2 to v3](https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/) and upgrading section of this chart on CRDs.
|
||||
|
||||
### 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`)
|
||||
|
||||
[Examples](https://github.com/traefik/traefik-helm-chart/blob/master/EXAMPLES.md) of common usage are provided.
|
||||
|
||||
If needed, one may use [extraObjects](./traefik/tests/values/extra.yaml) or extend this HelmChart [as a Subchart](https://helm.sh/docs/chart_template_guide/subcharts_and_globals/).
|
||||
|
||||
## Installing
|
||||
|
||||
### Prerequisites
|
||||
|
||||
1. [x] Helm **v3 > 3.9.0** [installed](https://helm.sh/docs/using_helm/#installing-helm): `helm version`
|
||||
2. [x] Traefik's chart repository: `helm repo add traefik https://traefik.github.io/charts`
|
||||
|
||||
### 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 v10.0.0 and above | | [x] | [x] |
|
||||
| Chart v22.0.0 and above | | | [x] |
|
||||
|
||||
### CRDs Support of Traefik Proxy
|
||||
|
||||
Due to changes in API Group of Traefik CRDs from `containo.us` to `traefik.io`, this Chart install CRDs needed by default Traefik Proxy version, following this table:
|
||||
|
||||
| | `containo.us` | `traefik.io` |
|
||||
|-------------------------|-----------------------------|------------------------|
|
||||
| Chart v22.0.0 and below | [x] | |
|
||||
| Chart v23.0.0 and above | [x] | [x] |
|
||||
| Chart v28.0.0 and above | | [x] |
|
||||
|
||||
### Deploying Traefik
|
||||
|
||||
```bash
|
||||
helm install traefik traefik/traefik
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```bash
|
||||
helm install traefik oci://ghcr.io/traefik/helm/traefik
|
||||
```
|
||||
|
||||
You can customize the install with a `values` file. There are some [EXAMPLES](./EXAMPLES.md) provided.
|
||||
Complete documentation on all available parameters is in the [default file](./traefik/values.yaml).
|
||||
|
||||
```bash
|
||||
helm install -f myvalues.yaml traefik traefik/traefik
|
||||
```
|
||||
|
||||
🛂 **Warning**: Helm v2 support was removed in the chart version 10.0.0.
|
||||
|
||||
## Upgrading
|
||||
|
||||
One can check what has changed in the [Changelog](./traefik/Changelog.md).
|
||||
|
||||
:information_source: With Helm v3, CRDs created by this chart can not be updated, cf. the [Helm Documentation on CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions).
|
||||
|
||||
:warning: Please read carefully release notes of this chart before upgrading CRDs.
|
||||
|
||||
```bash
|
||||
# Update repository
|
||||
helm repo update
|
||||
# See current Chart & Traefik version
|
||||
helm search repo traefik/traefik
|
||||
# Update CRDs (Traefik Proxy v3 CRDs)
|
||||
kubectl apply --server-side --force-conflicts -k https://github.com/traefik/traefik-helm-chart/traefik/crds/
|
||||
# Upgrade Traefik
|
||||
helm upgrade traefik traefik/traefik
|
||||
```
|
||||
|
||||
New major version indicates that there is an incompatible breaking change.
|
||||
|
||||
#### Upgrade up to 27.X
|
||||
|
||||
When upgrading on Traefik Proxy v2 version, one need to stay at Traefik Helm Chart v27.x. The command to upgrade to the latest Traefik Proxy v2 CRD is:
|
||||
|
||||
```bash
|
||||
kubectl apply --server-side --force-conflicts -k https://github.com/traefik/traefik-helm-chart/traefik/crds/?ref=v27
|
||||
```
|
||||
|
||||
### Upgrading after 18.X+
|
||||
|
||||
It's detailed in [release notes](https://github.com/traefik/traefik-helm-chart/releases).
|
||||
|
||||
### Upgrading from 17.x to 18.x
|
||||
|
||||
Since v18.x, this chart by default merges TCP and UDP ports into a single (LoadBalancer) `Service`.
|
||||
Load balancers with mixed protocols are available since v1.20 and in
|
||||
[beta as of Kubernetes v1.24](https://kubernetes.io/docs/concepts/services-networking/service/#load-balancers-with-mixed-protocol-types).
|
||||
Availability may depend on your Kubernetes provider.
|
||||
|
||||
To retain the old default behavior, set `service.single` to `false` in your values.
|
||||
|
||||
When using TCP and UDP with a single service, you may encounter
|
||||
[this issue](https://github.com/kubernetes/kubernetes/issues/47249#issuecomment-587960741)
|
||||
from Kubernetes.
|
||||
|
||||
On HTTP/3, if you want to avoid this issue, you can set
|
||||
`ports.websecure.http3.advertisedPort` to an other value than `443`
|
||||
|
||||
If you were previously using HTTP/3, you should update your values as follows:
|
||||
- Replace the old value (`true`) of `ports.websecure.http3` with a key `enabled: true`
|
||||
- Remove `experimental.http3.enabled=true` entry
|
||||
|
||||
### Upgrading from 16.x to 17.x
|
||||
|
||||
Since v17.x, this chart provides unified labels following
|
||||
[Kubernetes recommendation](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/).
|
||||
|
||||
This version needs to change an immutable field, which is not supported by
|
||||
Kubernetes and Helm, see [this issue](https://github.com/helm/helm/issues/7350)
|
||||
for more details.
|
||||
So you will have to delete your `Service`, `Deployment` or `DaemonSet` in
|
||||
order to be able to upgrade.
|
||||
|
||||
You may also upgrade by deploying another Traefik to a different namespace and
|
||||
removing after your first Traefik.
|
||||
|
||||
Alternatively, since version 20.3.0 of this chart, you may set `instanceLabelOverride` to the previous value of that label.
|
||||
This will override the new `Release.Name-Release.Namespace` pattern to avoid any (longer) downtime.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you want to contribute to this chart, please read the [Contributing Guide](./CONTRIBUTING.md).
|
||||
|
||||
Thanks to all the people who have already contributed!
|
||||
|
||||
<a href="https://github.com/traefik/traefik-helm-chart/graphs/contributors">
|
||||
<img src="https://contributors-img.web.app/image?repo=traefik/traefik-helm-chart" />
|
||||
</a>
|
||||
Reference in New Issue
Block a user