我的入口目前看起来像这样:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- example.org
- app.example.org
secretName: prod-tls
rules:
- host: example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
- host: app.example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
但现在我想重定向app.example.org到example.org。我怎样才能做到这一点?
我发现这个示例使用ingress.kubernetes.io/configuration-snippet但我不知道它将适用于哪些域?
我正在使用头盔nginx-ingress-1.37.0;应用程序版本 0.32.0。
gsf*_*gsf 14
对于 Kubernetes 1.19 及更高版本,此入口会将所有流量从 app.example.org 重定向到 example.org:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
return 301 $scheme://example.org$request_uri;
name: ingress-redirect
spec:
ingressClassName: nginx
tls:
- hosts:
- app.example.org
secretName: prod-tls
rules:
- host: app.example.org
Run Code Online (Sandbox Code Playgroud)
小智 6
Ingress 控制器版本 0.22.0 或更高版本使用nginx.ingress.kubernetes.io/rewrite-target而不是ingress.kubernetes.io/configuration-snippet. 所以这将是 @mdaniel 答案的新内容:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- example.org
secretName: prod-tls
rules:
- host: example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-redirect
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: "https://example.org/$1"
spec:
tls:
- hosts:
- app.example.org
secretName: prod-tls
rules:
- host: app.example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
我发现这个示例使用
ingress.kubernetes.io/configuration-snippet:但我不知道它将适用于哪些域?
当您有两个 Ingress 时,更容易理解该配置,一个仅用于“托管”,另一个configuration-snippet:用于执行实际工作:
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- example.org
secretName: prod-tls
rules:
- host: example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-redirect
annotations:
kubernetes.io/ingress.class: nginx
# this should be covered by the annotation on the other ingress
# since it will renew the same certificate
# cert-manager.io/cluster-issuer: letsencrypt-prod
ingress.kubernetes.io/configuration-snippet: |
rewrite ^/(.*)$ https://example.org/$1 permanent;
spec:
tls:
- hosts:
- app.example.org
secretName: prod-tls
rules:
- host: app.example.org
http:
paths:
- path: /
backend:
serviceName: app-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41671 次 |
| 最近记录: |