我尝试部署 2 个应用程序(在 2 个单独的 Deployments 对象后面)。我每个部署有 1 个服务,类型为NodePort
.
application1_service.yaml
apiVersion: v1
kind: Service
metadata:
name: application1-service
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: application1
type: NodePort
application2_service.yaml完全相同(除了name
and run
)
我使用 Ingress 使 2 个服务可用,
入口.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: "my-static-ip"
networking.gke.io/managed-certificates: "my-certificate"
kubernetes.io/ingress.class: "gce"
spec:
rules:
- host: "my.host.com"
http:
paths:
- path: /*
backend:
serviceName: application1-service
servicePort: 80
- path: /application2/*
backend:
serviceName: application2-service
servicePort: 80
我还创建了一个ManagedCertificate
对象,以便能够处理 HTTPS 请求。
managed_certificate.yaml
apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
name: my-certificate
spec:
domains:
- my.host.com
这里奇怪的是它curl https://my.host.com/
工作正常,我可以访问我的服务,但是当我尝试时curl https://my.host.com/application2/
,我不断得到404 Not Found
.
为什么根工作而不是另一个?
附加信息: ManagedCertificate 有效并且可以正常使用/
。application1 和 application2 是完全相同的应用程序,如果我在入口处交换它们,输出是相同的。
谢谢你的帮助 !
编辑:
这是我尝试访问 application2 时得到的 404
不知道它是否有帮助,但这也是显示 404 的 Ingress 访问日志的一部分