我有很多服务运行在GoogleCloudK8上的集群中的Pods上。
服务1是一个入侵- basic-ingress
服务2是NodeJS API网关w/ 2 Pods - security-gateway-svc
服务3是NodeJS API w/ 2 Pods - some-random-api-svc
4/5/6等.
我的入侵允许我通过子域访问公开的服务,但是我想将我的外部API移到网关后面,这样我就可以在网关中处理auth等了。
我想做的是允许security-gateway-svc连接到some-random-api-svc,而不必通过dns或集群之外。
我想我可以更新我的入口,所以所有的子域都使用相同的服务条目,并允许网关确定流量应该去哪里。
我可以在本地很好地配置它,因为所有东西都运行在localhost上,并且我指定了一个port,所以它是非常直接的。
但是,是否有可能通过服务名称而不是实际的域/ dns查找将荚暴露给集群中的其他荚?
发布于 2019-10-05 20:21:23
您的服务应该可以通过服务名称在集群中访问。
将每个api的网关条目指向服务名称。
类似于http://some-random-api-svc的东西应该能工作。
发布于 2019-10-05 23:16:42
在kubernetes clulster中使用服务链接到服务文档是一种更简单的方法,可以让豆荚在您的库伯内特斯集群中访问。为此,您需要创建一个yaml块,该块将创建一个内部主机名,由端点绑定到您的吊舱。此外,选择器将允许您将一个或多个豆荚绑定到该内部主机名。下面是一个示例:
---
apiVersion: v1
kind: Service
metadata:
name: $YOUR_SERVICE_NAME
namespace: $YOUR_NAMESPACE
labels:
app: $YOUR_SERVICE_NAME
spec:
ports:
- name: "8000"
port: 8000
targetPort: 8000
selector:
app: $YOUR_SERVICE_NAME
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: $YOUR_SERVICE_NAME
namespace: $YOUR_NAMESPACE
labels:
app: $YOUR_SERVICE_NAME
spec:
replicas: 1
selector:
matchLabels:
app: $YOUR_SERVICE_NAME
template:
metadata:
labels:
app: k2m
spec:
containers:
- name: $YOUR_SERVICE_NAME
image: alpine:latest
restartPolicy: Always最后,使用入口控制器路由中的服务名称将流量重定向到api-网关。
发布于 2019-10-06 03:43:38
Kubernetes使用CoreDNS执行集群内DNS解析.默认情况下,所有Service都以<service-name>.<namespace>.svc.cluster.local的(FQDN)形式分配DNS名称。因此,您的security-gateway-svc将能够通过some-random-api-svc.<namespace>将请求转发到some-random-api-svc,而无需路由Kubernetes以外的通信量。请记住,您不应该直接与豆荚交互,因为豆荚是短暂的;始终要通过Service。
https://stackoverflow.com/questions/58251866
复制相似问题