我目前正在设置一个环境,以使用 kubernetes 在 google 云平台上部署应用程序。
NodePort
我尝试使用以下 yaml 配置设置 Ingress 来连接到我的服务:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
ingress.gcp.kubernetes.io/pre-shared-cert: "my-certificate"
spec:
rules:
- host: example.com
http:
paths:
- path: /*
backend:
serviceName: website
servicePort: 80
- path: /api/*
backend:
serviceName: api
servicePort: 80
因此example.com
,所有路线都转到我的website
服务,所有请求都example.com/api/
转到我的 API 应用程序。
唯一的问题是我希望所有对我的应用程序的请求都重写为 而/<endpoint>
不是/api/<endpoint>
。就在几天前,gcp 添加了为负载均衡器指定其他重定向和重写规则的功能,但还不能在 YAML 中进行配置(如下所示:https://github.com/kubernetes/ingress-gce/issues/109)。
现在我去通过云控制台手动配置主机重写。保存后,设置似乎在大约 10 分钟内恢复,我不知道为什么。
我也想设置一个 http 到 https 重定向规则,但我无法创建这些规则,因为它们似乎也被恢复了。
有人能解释一下这是为什么吗?
我不确定这是否重要,但我曾经kubectl apply -f my-ingress.yaml
创建过入口
答案1
@Alex Moore 所说的 - 因为 GCP LB 是一个 K8s 对象,所以它控制其配置。
如果您想使用无法在 K8s 内部配置的功能,您应该在 K8s 之外创建 LB,创建 nodePort 服务并将 GCP LB 指向节点。