@@ -20,6 +20,9 @@ service:
2020ports:
2121 web:
2222 nodePort: 32080
23+ redirectTo:
24+ port: websecure
25+ permanent: true
2326 websecure:
2427 nodePort: 32443
2528
@@ -41,3 +44,123 @@ tlsStore:
4144 certificates:
4245 # generated by cert manager and copied by reflector
4346 - secretName: {{ requiredEnv "MACHINE_FQDN" | replace "." "-" }}-tls
47+
48+ extraObjects:
49+
50+ - apiVersion: v1
51+ kind: Service
52+ metadata:
53+ name: traefik-api
54+ namespace: {{.Release.Namespace}}
55+ spec:
56+ type: ClusterIP
57+ selector:
58+ app.kubernetes.io/name: traefik
59+ app.kubernetes.io/instance: {{.Release.Namespace}}-traefik
60+ ports:
61+ - port: 8080
62+ name: traefik
63+ targetPort: 9000
64+ protocol: TCP
65+
66+ - apiVersion: v1
67+ kind: Secret
68+ metadata:
69+ name: traefik-authorized-users
70+ namespace: {{.Release.Namespace}}
71+ data:
72+ users: |2
73+ {{ requiredEnv "TRAEFIK_K8S_AUTHORIZED_USER" }}
74+
75+ - apiVersion: traefik.io/v1alpha1
76+ kind: Middleware
77+ metadata:
78+ name: traefik-basic-auth
79+ namespace: {{.Release.Namespace}}
80+ spec:
81+ basicAuth:
82+ secret: traefik-authorized-users # https://doc.traefik.io/traefik/middlewares/http/basicauth/#users
83+
84+ - apiVersion: traefik.io/v1alpha1
85+ kind: Middleware
86+ metadata:
87+ name: portainer-strip-prefix
88+ namespace: {{.Release.Namespace}}
89+ spec:
90+ stripPrefix:
91+ prefixes:
92+ - /portainer
93+
94+ - apiVersion: traefik.io/v1alpha1
95+ kind: Middleware
96+ metadata:
97+ name: longhorn-strip-prefix
98+ namespace: {{.Release.Namespace}}
99+ spec:
100+ stripPrefix:
101+ prefixes:
102+ - /longhorn
103+
104+ # a (href) links do not work properly without trailing slash
105+ - apiVersion: traefik.io/v1alpha1
106+ kind: Middleware
107+ metadata:
108+ name: logs-append-slash
109+ namespace: {{ .Release.Namespace }}
110+ spec:
111+ redirectRegex:
112+ regex: "^(https?://[^/]+/logs)$"
113+ replacement: "${1}/"
114+
115+ - apiVersion: traefik.io/v1alpha1
116+ kind: Middleware
117+ metadata:
118+ name: logs-strip-prefix
119+ namespace: {{.Release.Namespace}}
120+ spec:
121+ stripPrefix:
122+ prefixes:
123+ - /logs
124+
125+ - apiVersion: traefik.io/v1alpha1
126+ kind: Middleware
127+ metadata:
128+ name: internal-ipallowlist
129+ spec:
130+ ipAllowList:
131+ sourceRange:
132+ - 10.0.0.0/8
133+ - 172.16.0.0/12
134+ - 192.168.0.0/16
135+
136+ - apiVersion: networking.k8s.io/v1
137+ kind: Ingress
138+ metadata:
139+ name: traefik-dashboard
140+ namespace: {{.Release.Namespace}}
141+ annotations:
142+ traefik.ingress.kubernetes.io/router.entrypoints: websecure
143+ traefik.ingress.kubernetes.io/router.middlewares: {{.Release.Namespace}}-traefik-basic-auth@kubernetescrd # namespace + middleware name
144+ traefik.ingress.kubernetes.io/router.tls: "true"
145+ spec:
146+ rules:
147+ - host: {{ requiredEnv "K8S_MONITORING_FQDN" }}
148+ http:
149+ paths:
150+ - path: /dashboard
151+ pathType: Prefix
152+ backend:
153+ service:
154+ name: traefik-api
155+ port:
156+ name: traefik
157+ - host: {{ requiredEnv "K8S_MONITORING_FQDN" }}
158+ http:
159+ paths:
160+ - path: /api
161+ pathType: Prefix
162+ backend:
163+ service:
164+ name: traefik-api
165+ port:
166+ name: traefik
0 commit comments