From 62961f7e06dfe880d68fa42f5cfe4c682a602293 Mon Sep 17 00:00:00 2001 From: Adrien Reslinger Date: Mon, 9 Sep 2024 00:07:23 +0200 Subject: [PATCH] Switch plugin traefik-on-demand by sablier --- templates/traefik-cm.yml.j2 | 10 ++- templates/traefik-files.yml.j2 | 13 ++++ templates/traefik-helm-value.yaml.j2 | 5 ++ templates/traefik-ondemand-plugin.yml.j2 | 87 +++++++++++++++--------- 4 files changed, 79 insertions(+), 36 deletions(-) diff --git a/templates/traefik-cm.yml.j2 b/templates/traefik-cm.yml.j2 index 746b1ab..f68996c 100644 --- a/templates/traefik-cm.yml.j2 +++ b/templates/traefik-cm.yml.j2 @@ -70,13 +70,17 @@ data: kubernetesCRD: # ingressClass: "traefik" throttleDuration: 2s +{% if traefik_ondemand is defined %} allowEmptyServices: true +{% endif%} kubernetesIngress: ingressClass: "traefik" {% if traefik_hub_token is defined %} allowExternalNameServices: true {% endif%} +{% if traefik_ondemand is defined %} allowEmptyServices: true +{% endif%} file: directory: /etc/traefik/file/ watch: true @@ -113,8 +117,8 @@ data: {% endif %} {% if traefik_ondemand is defined %} plugins: - traefik-ondemand-plugin: - moduleName: github.com/acouvreur/traefik-ondemand-plugin - version: v1.2.0 + sablier: + moduleName: github.com/acouvreur/sablier + version: v1.7.0 {% endif %} {% endif %} diff --git a/templates/traefik-files.yml.j2 b/templates/traefik-files.yml.j2 index 5fabe92..4c1f158 100644 --- a/templates/traefik-files.yml.j2 +++ b/templates/traefik-files.yml.j2 @@ -58,6 +58,19 @@ data: - {{ acl_whitelist }} {% endfor %} {% endif %} +{% if traefik_ondemand is defined %} + ondemand: + plugin: + sablier: + #group: default + dynamic: + displayName: Application is starting + refreshFrequency: 5s + showDetails: "true" + theme: hacker-terminal + sablierUrl: http://sablier:10000 + sessionDuration: 1m +{% endif %} {% if basic_auth|bool %} basic-auth: basicAuth: diff --git a/templates/traefik-helm-value.yaml.j2 b/templates/traefik-helm-value.yaml.j2 index b03a8c1..ee066b4 100644 --- a/templates/traefik-helm-value.yaml.j2 +++ b/templates/traefik-helm-value.yaml.j2 @@ -144,6 +144,11 @@ metrics: experimental: plugins: enabled: true +{% if traefik_ondemand is defined %} + sablier: + moduleName: "github.com/acouvreur/sablier" + version: "v1.7.0" +{% endif %} kubernetesGateway: enabled: false {% if traefik_hub_token is defined %} diff --git a/templates/traefik-ondemand-plugin.yml.j2 b/templates/traefik-ondemand-plugin.yml.j2 index d983519..9c988b3 100644 --- a/templates/traefik-ondemand-plugin.yml.j2 +++ b/templates/traefik-ondemand-plugin.yml.j2 @@ -1,35 +1,35 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: traefik-ondemand-service + name: sablier labels: - app: traefik-ondemand-service + app: sablier spec: replicas: 1 selector: matchLabels: - app: traefik-ondemand-service + app: sablier template: metadata: labels: - app: traefik-ondemand-service + app: sablier spec: - serviceAccountName: traefik-ondemand-service - serviceAccount: traefik-ondemand-service + serviceAccountName: sablier + serviceAccount: sablier containers: - - name: traefik-ondemand-service - image: ghcr.io/acouvreur/traefik-ondemand-service:1 - args: ["--swarmMode=false", "--kubernetesMode=true"] + - name: sablier + image: acouvreur/sablier:1.7.0 + args: ["start", "--provider.name=kubernetes"] ports: - containerPort: 10000 --- apiVersion: v1 kind: Service metadata: - name: traefik-ondemand-service + name: sablier spec: selector: - app: traefik-ondemand-service + app: sablier ports: - protocol: TCP port: 10000 @@ -38,44 +38,65 @@ spec: apiVersion: v1 kind: ServiceAccount metadata: - name: traefik-ondemand-service + name: sablier + namespace: {{ traefik_namespace }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: traefik-ondemand-service - namespace: {{ traefik_namespace }} + name: sablier +# namespace: {{ traefik_namespace }} rules: - apiGroups: - apps + - "" resources: - deployments - - deployments/scale +# - deployments/scale + - statefulsets +# - statefulsets/scale verbs: - - patch - - get - - update ---- + - patch # Scale up and down + - get # Retrieve info about specific dep + - update # Scale up and down + - list # Events + - watch # Events + - apiGroups: + - apps + - "" + resources: + - deployments/scale + - statefulsets/scale + verbs: + - patch # Scale up and down + - update # Scale up and down + - get # Retrieve info about specific dep + - list # Events + - watch # Events--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: traefik-ondemand-service + name: sablier roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: traefik-ondemand-service + name: sablier subjects: - kind: ServiceAccount - name: traefik-ondemand-service + name: sablier namespace: {{ traefik_namespace }} ---- -apiVersion: traefik.containo.us/v1alpha1 -kind: Middleware -metadata: - name: ondemand -spec: - plugin: - traefik-ondemand-plugin: - name: traefik_ondemand_plugin - serviceUrl: 'http://traefik-ondemand-service.{{ traefik_namespace }}:10000' - timeout: 1m \ No newline at end of file +#--- +#apiVersion: traefik.containo.us/v1alpha1 +#kind: Middleware +#metadata: +# name: ondemand +#spec: +# plugin: +# group: default +# dynamic: +# displayName: My Title +# refreshFrequency: 5s +# showDetails: "true" +# theme: hacker-terminal +# sablierUrl: http://sablier.{{ traefik_namespace }}:10000 +# sessionDuration: 1m