我正在為以下案例而苦苦掙扎。我有一個用 .NET Core 撰寫的帶有某種網關的服務,因此以下兩個 GraphQL 端點位于:
https://my-local-cluster.svc/api/abc/graphql
https://my-local-cluster.svc/api/xyz/graphql
現在,我正在向擁有此服務的 Kubernetes 集群添加一個入口,我想要實作的是:
https://abc.ingresswebsite.com/graphql <- points to https://mywebsite.com/api/abc/graphql
https://xyz.ingresswebsite.com/graphql <- points to https://mywebsite.com/api/xyz/graphql
那可能嗎?我試圖做以下事情:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
appgw.ingress.kubernetes.io/backend-path-prefix: "/api/abc/"
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- abc.ingresswebsite.com
secretName: tls-secret
rules:
- host: abc.ingresswebsite.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-abc-service
port:
number: 80
如您所見,我使用了appgw.ingress.kubernetes.io/backend-path-prefix: "/api/abc/"注釋,但不幸的是沒有任何結果。也許你有一個建議如何實作,或者如果那甚至可能實作?
謝謝!
uj5u.com熱心網友回復:
您是否嘗試請求https://abc.ingresswebsite.com/graphql轉到/api/abc/graphql您的my-abc-service服務?
如果是這樣,那么 nginx-ingress 的rewrite功能 ( https://kubernetes.github.io/ingress-nginx/examples/rewrite/ ) 可能對您有用。
這是檔案中的示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
ingressClassName: nginx
rules:
- host: rewrite.bar.com
http:
paths:
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: http-svc
port:
number: 80
以下是檔案描述的重寫結果:
rewrite.bar.com/something重寫為rewrite.bar.com/
rewrite.bar.com/something/重寫為rewrite.bar.com/
rewrite.bar.com/something/new重寫為rewrite.bar.com/new
因此,調整該示例,您的示例可能如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /api/abc/$1
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- abc.ingresswebsite.com
secretName: tls-secret
rules:
- host: abc.ingresswebsite.com
http:
paths:
- path: /(.*)
pathType: Prefix
backend:
service:
name: my-abc-service
port:
number: 80
(警告:我沒有試過這個)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432967.html
上一篇:什么為prometheus提供了度量標準“container_cpu_usage_seconds_total”?
