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

时间:2016-06-07 22:07:17

标签: google-compute-engine kubernetes google-kubernetes-engine

我正在试图找出如何创建共享IP的多个入口资源。 或者,如果那是不可能的,我想知道是否有某种转发 规则我可以​​与确保所有流量的云DNS条目结合使用 到IP(我可以使其静态)转到一个kubernetes集群。

基本上我想为包含一个或每个服务的每个服务设置一个入口 更多子域和所有那些入口指向同一个集群。马上 每个入口都有一个不同的临时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并更改服务,部署和 入口名称为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 个答案:

答案 0 :(得分:2)

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

相关问题