1

我在想如何创建多个共享IP的入口资源。 或者,如果这是不可能的,我想知道是否有某种转发 规则我可以​​使用与云DNS项目,确保所有流量 IP(我可以使静态)去到一个kubernetes集群。设置多个入口,服务,部署资源和云端DNS

基本上我想设置一个入口,每个服务包含一个或多个子域,并且所有这些入口指向同一个群集。现在 我得到一个不同的短暂的IP与每个入口。我可以创建一些转发 规则,指向一个静态IP的所有流量转到群集,然后 创建一个通配符DNS条目,将所有子域指向静态IP?

下面是类似我使用的是什么比如说配置:

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并更改服务,部署a nd 将入口名称添加到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

+0

如果静态IP解决了您的问题,只保留您的项目地址。 https://cloud.google.com/sdk/gcloud/reference/compute/addresses/create –

+0

@VikramTiwari你的意思是采用入口使用的那些短暂的IP之一,对吧?如果是这样,问题是我将继续添加具有不同IP的入口,并且这些入口不会与* .example.com通配符DNS记录相关联。或者我错过了什么? – luisgo

+0

一旦拥有静态IP,您就可以在集群的负载平衡器上使用它,并因此保持产生新的入口并将其添加到负载均衡器。 http://stackoverflow.com/questions/32266053/how-to-specify-static-ip-address-for-kubernetes-load-balancer –

回答

1

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

+0

是的。这似乎是这种情况。我明白。我想知道的是,如果有一种方法可以在此设置之上添加以解决此限制。也许某种路由规则将所有流量发送到静态IP到特定的目标池。即使我必须在kubernetes以外直接通过计算来做到这一点。这样我可以有一个通配符DNS入口点到静态IP和转发到群集的规则。 – luisgo

+1

您可以为一个ip地址配置一个云L3负载均衡器,并将它的流量导向一个执行L7平衡的nginx或apache服务器池。 –