Редиректы в Kubernetes + Traefik + Ingress
Пример конфига с настройкой редиректов www->без www и http->https в Kubernetes + Traefik. С помощью Ingress + Middleware.
Разбирался давеча как настроить редиректы в Traefik'е
. Делал какими то устаревшими и/или нерабочими методами.
Нужно было реализовать 2 вида редиректов:
- http -> https
- www.rame0.ru -> rame0.ru
В итоге разобрался и пришел вот к конфигу Ingress
+ Middleware
ниже.
Суть в следующем. Первый middleware (www-redirect
) вешается на хост www.rame0.ru
и перенаправляет весе запросы на хост rame0.ru
(и http
и https
) с помощью регулярного выражения.
Второй middleware висит на хосте rame0.ru
и перенаправляет запросы http
на https
.
# Redirect with domain replacement
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: www-redirect
spec:
redirectRegex:
regex: http[s]*://www\.rame0\.ru/(.*)
replacement: https://rame0.ru/${1}
---
# Redirect to https
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: https-redirect
spec:
redirectScheme:
scheme: https
permanent: true
port: "443"
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ghost-ingres
annotations:
kubernetes.io/ingress.class: "traefik"
acme.cert-manager.io/http01-edit-in-place: "true"
cert-manager.io/cluster-issuer: letsencrypt-production
traefik.ingress.kubernetes.io/frontend-entry-points: web, websecure
traefik.ingress.kubernetes.io/redirect-entry-point: websecure
traefik.ingress.kubernetes.io/router.middlewares: https-redirect@kubernetescrd
spec:
rules:
- host: rame0.ru
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: ghost-blog
port:
number: 80
tls:
- hosts:
- "rame0.ru"
secretName: <.....>-tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ghost-ingres-www
annotations:
kubernetes.io/ingress.class: "traefik"
acme.cert-manager.io/http01-edit-in-place: "true"
cert-manager.io/cluster-issuer: letsencrypt-production
traefik.ingress.kubernetes.io/frontend-entry-points: web, websecure
traefik.ingress.kubernetes.io/redirect-entry-point: websecure
traefik.ingress.kubernetes.io/router.middlewares: www-redirect@kubernetescrd
spec:
rules:
- host: www.rame0.ru
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: ghost-blog
port:
number: 80
tls:
- hosts:
- "www.rame0.ru"
secretName: <.....>-tls
Теги: Kubernetes, Traefik, Ingress