首页 文章

设置多个入口,服务,部署资源和 Cloud DNS

提问于
浏览
1

我正在试图找出如何创建共享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的所有流量都进入集群,以便进入者可以发挥他们的魔力并将请求路由到正确的服务 .

我知道我可以创建一个入口资源并修补一个,而不是创建一个新的但是我试图避免这种情况,并且如果我可以为每个服务创建一个,则更愿意 .

这有可能吗?

相关:https://github.com/kubernetes/kubernetes/issues/26935

1 回答

  • 1

    每个入口资源都有一个单独的IP . 如果您需要在域之间共享单个IP,则需要在同一入口资源中配置这两个域 . 如果您不想直接在命令行上进行修补,请尝试 kubectl edit .

相关问题