Dns 具有嵌套子域(GCP)的Kubernetes主机入口

Dns 具有嵌套子域(GCP)的Kubernetes主机入口,dns,kubernetes,google-cloud-platform,devops,kubernetes-ingress,Dns,Kubernetes,Google Cloud Platform,Devops,Kubernetes Ingress,我正在尝试设置K8s部署,ingress的控制器可以将服务定义为子域。i、 e.app1可以定义自己,以便在其入口配置中从app1.sub.domain.io获取流量 我有一个指向负载平衡器的DNS a记录*.sub.domain.io。该负载平衡器指向群集的实例组 因此,如果我是对的,那么所有到达sub.domain.io的流量都将在集群内着陆,只需要路由所述流量 下面是k8配置,它有一个pod、一个服务和一个入口。这些豆荚是健康和工作的,我相信这项服务是不需要的,但会希望其他豆荚通过内部DN

我正在尝试设置K8s部署,ingress的控制器可以将服务定义为子域。i、 e.app1可以定义自己,以便在其入口配置中从app1.sub.domain.io获取流量

我有一个指向负载平衡器的DNS a记录*.sub.domain.io。该负载平衡器指向群集的实例组

因此,如果我是对的,那么所有到达sub.domain.io的流量都将在集群内着陆,只需要路由所述流量

下面是k8配置,它有一个pod、一个服务和一个入口。这些豆荚是健康和工作的,我相信这项服务是不需要的,但会希望其他豆荚通过内部DNS与它交谈,所以它被添加

入口规则有一个主机app1.sub.domain.io,因此在理论上,卷曲app1.sub.domain.io应该遵循: DNS->负载平衡器->群集->入口控制器->Pod

当我尝试点击app1.sub.domain.io时,它只是挂起。我尝试过不提供服务,使用外部名称服务,但不起作用

我不想继续使用loadBalancer入口,因为这会产生一个新的外部IP,需要手动应用于DNS记录,或者使用一个讨厌的bash脚本,等待外部IP服务并运行GCP命令,我们不想对每个服务都这样做

参考链接:

部署

服务

入口

一旦部署了所有内容,如果您查询 kubectl获得吊舱、服务、入口-l app=app1


*.sub.domain.io应指向入口的IP


您可以按照此处教程中的说明使用静态IP进行入口:

*。sub.domain.io应指向入口的IP


您可以按照本教程中的说明使用静态IP进行入口:

尝试向入口添加路径:

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  labels:
    app: app1
spec:
  rules:
  - host: app1.sub.domain.io
    http:
      paths:
      - backend:
          serviceName: app1
          servicePort: 80
        path: / 
如果这不起作用,请发布描述服务和描述入口的输出

你们有入口控制器吗?
流量应该转到LB->Ingress Controller->Ingress->Service ClusterIP->Pods

尝试向入口添加路径:

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  labels:
    app: app1
spec:
  rules:
  - host: app1.sub.domain.io
    http:
      paths:
      - backend:
          serviceName: app1
          servicePort: 80
        path: / 
如果这不起作用,请发布描述服务和描述入口的输出

你们有入口控制器吗?
流量应该是LB->Ingress Controller->Ingress->Service ClusterIP->Pods

入口不是外部的,正如我说过的那样,我可以这样做,但是每次我都需要更新DNS记录,这是不符合要点的。如果我添加另一项服务,这也将中断。由于我无法在DNS*.sub.domain.io中创建动态路由,因此必须是app1.sub.domain.io->Ip的入口,这很糟糕。入口不是外部的,正如我说过的那样,我可以这样做,但是每次都需要更新DNS记录,这是不符合要点的。如果我添加另一项服务,这也将中断。由于我无法在DNS*.sub.domain.io中创建动态路由,因此必须是app1.sub.domain.io->入口Ip,这很糟糕。我认为您编辑中的解决方法就是解决方案。您希望改进什么?您解决了这个问题吗?我们想在app.stg.xxx.com上设置一个临时域。我们使用app-stg.xxx.com作为解决方案,直到获得更多信息。我认为您编辑中的解决方案就是解决方案。您希望改进什么?您解决了这个问题吗?我们想在app.stg.xxx.com上设置一个临时域。我们使用app-stg.xxx.com作为解决方案,直到我们获得更多信息。
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  labels:
    app: app1
spec:
  rules:
  - host: app1.sub.domain.io
    http:
      paths:
      - backend:
          serviceName: app1
          servicePort: 80
NAME                       READY     STATUS    RESTARTS   AGE
po/app1-6d4b9d8c5-4gcz5    1/1       Running   0          20m
po/app1-6d4b9d8c5-m4kwq    1/1       Running   0          20m
po/app1-6d4b9d8c5-rpm9l    1/1       Running   0          20m

NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
svc/app1    ClusterIP   x.x.x.x         <none>        80/TCP    20m

NAME                HOSTS                   ADDRESS   PORTS     AGE
ing/app1-ingress    app1.sub.domain.io                80        20m
---
kind: Service
apiVersion: v1
metadata:
  name: app1
  labels:
    app: app1
spec:
  type: NodePort
  selector:
    app: app1
  ports:
    - port: 80
      targetPort: 80

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: app1-static-ip
  labels:
    app: app1-static-ip
spec:
  backend:
    serviceName: app1
    servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app1-ingress
  labels:
    app: app1
spec:
  rules:
  - host: app1.sub.domain.io
    http:
      paths:
      - backend:
          serviceName: app1
          servicePort: 80
        path: /