dyw*_*666 8 kubernetes traefik k3s
我正在尝试在 k3s 上部署 AWX,一切正常,但我想强制执行 SSL - 因此,将 HTTP 重定向到 HTTPS。
我一直在尝试测试 SSL 强制部分,但它无法正常工作。这是我的 traefik 配置:
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: traefik-crd
namespace: kube-system
spec:
chart: https://%{KUBERNETES_API}%/static/charts/traefik-crd-9.18.2.tgz
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: traefik
namespace: kube-system
spec:
chart: https://%{KUBERNETES_API}%/static/charts/traefik-9.18.2.tgz
set:
global.systemDefaultRegistry: ""
valuesContent: |-
ssl:
enforced: true
rbac:
enabled: true
ports:
websecure:
tls:
enabled: true
podAnnotations:
prometheus.io/port: "8082"
prometheus.io/scrape: "true"
providers:
kubernetesIngress:
publishedService:
enabled: true
priorityClassName: "system-cluster-critical"
image:
name: "rancher/library-traefik"
tolerations:
- key: "CriticalAddonsOnly"
operator: "Exists"
- key: "node-role.kubernetes.io/control-plane"
operator: "Exists"
effect: "NoSchedule"
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
Run Code Online (Sandbox Code Playgroud)
根据此处的 Helm 图表https://github.com/helm/charts/tree/master/stable/traefik#configuration, ssl.enforced 参数应该可以解决问题,但是当我使用 http 访问我的主机时,它仍然没有重定向我到https。我可以看到Rancher也在为traefik部署LB服务,我需要以某种方式修改它吗?
Ora*_*bîg 12
我努力使重定向工作,终于找到了一个工作配置。
您应该在 kubernetes 中定义一个 Middleware 对象,并且您的 Ingress 对象必须引用它。请注意,因为 traefik 中的文档在这里非常具有误导性,因为在许多页面上找到的中间件清单都忘记了“命名空间”注释,因此他们确保这是“默认”(顺便说一句,这是愚蠢的,没有认真的人在默认命名空间上工作)。
因此,这是一个工作配置:
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: redirect
namespace: some_namespace
spec:
redirectScheme:
scheme: https
permanent: true
Run Code Online (Sandbox Code Playgroud)
和
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wordpress
namespace: your_app_namespace
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.middlewares: some_namespace-redirect@kubernetescrd
spec:
tls:
- secretName: your_certificate
hosts:
- www.your_website.com
rules:
- host: www.your_website.com
http:
paths:
- path: /
backend:
service:
name: your_service
port:
number: 80
pathType: ImplementationSpecific
Run Code Online (Sandbox Code Playgroud)
所以诀窍是:
traefik.ingress.kubernetes.io/router.middlewares
使用语法引用它<NAMESPACE>-<NAME>@kubernetescrd
(其中 NAMESPACE 和 NAME 是 Middleware 对象的那些)小智 6
GAmeScripting答案的补充。K3S 不建议更改源配置文件。您可以像这样应用 HelmChartConfig:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
ports:
websecure:
tls:
enabled: true
web:
redirectTo:
port: websecure
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5519 次 |
最近记录: |