我正在试图找出如何创建共享IP的多个入口资源 . 或者,如果这是不可能的,我想知道是否有某种转发规则我可以与 Cloud DNS条目一起使用,以确保IP的所有流量(我可以使其静态)转到一个kubernetes簇 .
本质上,我想为每个包含一个或多个子域的服务设置一个入口,并将所有这些入口指向同一个集群 . 现在,每个入口都会得到一个不同的短暂IP . 我是否可以创建一些转发规则,将指向静态IP的所有流量指向群集,然后创建一个将所有子域指向静态IP的通配符DNS条目?
这是一个类似于我正在使用的示例配置:
apiVersion: v1
kind: Service
metadata:
name: api-service
labels:
name: api-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 3000
protocol: TCP
selector:
name: api-deployment
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: api-deployment
labels:
name: api-deployment
spec:
template:
metadata:
labels:
name: api
spec:
containers:
- image: us.gcr.io/[project]/hello-world:1.0.0
name: api
ports:
- containerPort: 3000
env:
- name: NAME
value: api
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-ingress
spec:
backend:
serviceName: api-service
servicePort: 80
rules:
- host: api.example.com
http:
paths:
- backend:
serviceName: api-service
servicePort: 80
我在kube集群上创建这些资源,如下所示:
$ kubectl create -f api.yml
然后看到像这样创建的入口:
$ kubectl get ing
NAME RULE BACKEND ADDRESS AGE
api-ingress - api-service:80 130.211.32.223 1h
api.example.com
api-service:80
现在,想象一下你复制上面的yaml并将服务,部署和入口名称更改为api-2并创建它们 . 你最终得到这样的东西:
$ kubectl get ing
NAME RULE BACKEND ADDRESS AGE
api-ingress - api-service:80 130.211.32.223 1h
api.example.com
api-service:80
api-2-ingress - api-2-service:80 130.211.22.214 1h
api-2.example.com
api-2-service:80
哪个好......但我需要确保* .example.com的所有流量都进入集群,以便进入者可以发挥他们的魔力并将请求路由到正确的服务 .
我知道我可以创建一个入口资源并修补一个,而不是创建一个新的但是我试图避免这种情况,并且如果我可以为每个服务创建一个,则更愿意 .
这有可能吗?
1 回答
每个入口资源都有一个单独的IP . 如果您需要在域之间共享单个IP,则需要在同一入口资源中配置这两个域 . 如果您不想直接在命令行上进行修补,请尝试
kubectl edit
.