我们曾经选择docker swarm
作为我们系统的容器编排。今年我们切换到kubenetes
。我们有一个后端服务,由http://web_api:10001
访问。这里是我们用来在kubenetes
中创建Service
的web_api.yml
。
apiVersion: v1
kind: Service
metadata:
name: web_api
namespace: my-system
spec:
selector:
app: web_api
ports:
- protocol: TCP
port: 10001
targetPort: 10001
字符串
但是,Service
中不允许使用名称web_api
。我的问题是我如何在这里仍然使用web_api
?如果我们修改访问http://web_api:10001
的其他服务,那将是一个很大的工作量,因为我们有太多的服务依赖于http://web_api:10001
。
谁能给我给予一个忠告?
1条答案
按热度按时间2eafrhcq1#
在Kubernetes中,服务名称必须遵守DNS标签标准,这意味着它们必须:
从我的Angular 来看,你有2个选择,在你的DNS提供商或使用入口控制器创建一个CNAME,让我解释最后一个。
其想法是使用Kubernetes Ingress将流量从特定URL路由到重命名的服务(web-api)。这种方法允许您在遵循Kubernetes命名约定的同时维护依赖服务中的现有服务URL(http://web_api:10001)。
1.验证您的服务
首先,重命名您的服务以符合DNS命名约定。例如,在服务定义中将web_API更改为web-API:
字符串
2.设置Ingress Controller
型
3.创建Ingress资源
型
在这个例子中,任何到web_api.my-domain.com的流量都被路由到web-api服务。你需要调整主机以匹配你的DNS设置,或者使用基于路径的路由(如果更合适的话)。