gpt4 book ai didi

azure - AKS Ingress - 多个ExternalName 服务

转载 作者:行者123 更新时间:2023-12-03 03:38:57 25 4
gpt4 key购买 nike

我们正在将应用程序迁移到 AKS。最初它部署在我们的服务器上,并且在设置了代理的同一台计算机上有一个包含图像的目录。因此,我们有用于应用程序的 www.example.com 和指向此目录的 www.example.com/images

我们已成功将应用程序部署到 AKS,并针对不同环境使用 nginx 入口,并且为每个环境创建了带有目录的 blob 存储,两者都运行良好。现在我们需要为应用程序及其图像创建相同的 URL。

我发现可以使用ExternalName服务( https://www.elvinefendi.com/2018/08/08/ingress-nginx-proxypass-to-external-upstream.html )来实现,但是URL中的目标路径不能在ExternalName服务中设置,而是在入口元数据注释中设置,我们需要每个环境有不同的路径

我发现了不同ExternalName 服务的示例,但所有服务都在基本URL 上提供,或者一个ExternalName 服务对于所有环境都相同。所以我的问题是 - 有什么方法可以设置环境,以便我们为所有环境提供一个入口和一个 Blob 存储?还是为每个环境设置一个入口更好?

Blob 存储结构:

.
|--example-dev
| |-- dev-image.png
|--example-test
| |-- test-image.png
|--example-prod
| |--prod-image.png

外部名称服务:

kind: Service
apiVersion: v1
metadata:
name: file-service
spec:
type: ExternalName
externalName: example.blob.core.windows.net
ports:
- port: 443

入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
ingressClassName: nginx
tls:
- hosts:
- example.northeurope.cloudapp.azure.com
secretName: tls-secret
rules:
- host: example.northeurope.cloudapp.azure.com
http:
paths:

#### Here we need to specify the path inside blob container somehow, I guess ####
- path: /dev/images(/|$)(.*)
pathType: Prefix
backend:
service:
name: file-service
port:
number: 443
- path: /dev(/|$)(.*)
pathType: Prefix
backend:
service:
name: dev-example-app
port:
name: http
- path: /test(/|$)(.*)
pathType: Prefix
backend:
service:
name: test-example-app
port:
name: http

最佳答案

我们最终通过为每个环境创建单独的入口来解决这个问题:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/rewrite-target: "/example-test/$2"
nginx.ingress.kubernetes.io/upstream-vhost: "example.blob.core.windows.net"
name: test-storage-ingress
spec:
ingressClassName: nginx
tls:
- hosts:
- example.myserver.com
secretName: tls-secret
rules:
- host: example.myserver.com
http:
paths:
- path: /test/images(/|$)(.*)
pathType: Prefix
backend:
service:
name: storage-service
port:
number: 80

因此,我们为所有网络应用程序提供一个入口,为每个环境提供一个图像入口,这样就不会造成混淆。

关于azure - AKS Ingress - 多个ExternalName 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72170559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com