Traefik va être utiliser en tant qu'ingress principale. L'ingress permet de rediriger le traffic des services vers l'exterieur du cluster. Ensuite Traefik va être le service qui va agir en tant que reverse proxy via son role d'ingress. Et ensuite Traefik sera aussi l'entité qui va gérer nos certificats, TLS en le renouvellement avec lets encrypt automatiquement.
Installation de Traefik
Pour l'installation de Traefik, nous allons utiliser Helm. Pour installer Traefik, nous allons avoir besoins d'installer le Repository ou se situe la Charts de Traefik.
Ensuite, il a fallu rajouter la Release Helm et les values rattacher avec pour configurer Traefik.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: traefik
namespace: traefik
spec:
interval: 10m
chart:
spec:
chart: traefik
version: '34.3.0'
sourceRef:
kind: HelmRepository
name: traefik
namespace: traefik
interval: 2h
values:
deployment:
# Workaround pour traefik en ACME
initContainers:
- name: volume-permissions
image: busybox:latest
command: ["sh", "-c", "touch /data/acme.json; chmod -v 600 /data/acme.json"]
volumeMounts:
- mountPath: /data
name: ssl-certs
podSecurityContext:
fsGroup: 65532
fsGroupChangePolicy: "OnRootMismatch"
# Définir Traefik comme ingress par défaut
ingressClass:
enabled: true
isDefaultClass: true
# Ingress route pour avoir acces au dashboard de traefik
ingressRoute:
dashboard:
enable: true
matchRule: PathPrefix(`/dashboard`) || PathPrefix(`/api`)
service:
enabled: true
type: LoadBalancer # Change de NodePort à LoadBalancer
ports:
web:
port: 80 # Expose Traefik directement sur le port 80
websecure:
port: 443
tls:
enable: true # Optionnel pour HTTPS
certResolver: "myresolver"
logs:
# Activer le mode verbose de traefik
general:
level: DEBUG
# Arguement pour configurer l'ACME
additionalArguments:
- "--certificatesresolvers.myresolver.acme.storage=/data/acme.json"
- "--certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare"
- "--certificatesresolvers.myresolver.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53"
- "--certificatesresolvers.myresolver.acme.email=ridergogo00@gmail.com"
# Token lié au secret cloudflare
env:
- name: CLOUDFLARE_DNS_API_TOKEN
valueFrom:
secretKeyRef:
name: cloudflare-api-secret
key: CLOUDFLARE_DNS_API_TOKEN
# Stocker les secrets créer par Traefik
persistence:
enabled: true
name: ssl-certs
size: 1Gi
path: /data
storageClass: longhorn
Tester le fonctionnement de Traefik
Pour tester le fonctionnement de Traefik nous pouvons observé si la helm release est correctement déployé
helm list -n traefik
On peut voir le status deployed cela veut dire que notre configuration à correctement été appliqué
Ensuite, il est possible de tester via le réseau. Pour tester via le réseau, il est possible de faire un curl sur le port http sur load-balancer et voir si nous avons une réponse.