gpt4 book ai didi

kubernetes - 如何使用 GKE 启用子域

转载 作者:行者123 更新时间:2023-12-02 12:04:03 24 4
gpt4 key购买 nike

我在 GKE 中有不同的 Kubernetes 部署,我想从不同的外部子域访问它们。

我尝试创建 2 个带有子域“sub1”和“sub2”以及主机名“app”的部署,另一个带有主机名“app”的部署和一个在 DNS 上配置的 IP XXX.XXX.XXX.XXX 上公开它的服务app.mydomain.com 的

我想从 sub1.app.mydomain.com 和 sub2.app.mydomain.com 访问 2 个子部署

这应该是自动的,添加新的部署我不能每次更改 DNS 记录。也许我以错误的方式解决了这个问题,我是 GKE 的新手,有什么建议吗?

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: my-hostspec:  replicas: 1  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        name: my-host        type: proxy    spec:      hostname: app      containers:        - image: nginx:alpine          name: nginx          ports:            - name: nginx              containerPort: 80              hostPort: 80      restartPolicy: Alwaysstatus: {}---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: my-subdomain-1spec:  replicas: 1  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        name: my-subdomain-1        type: app    spec:      hostname: app      subdomain: sub1      containers:        - image: nginx:alpine          name: nginx          ports:            - name: nginx              containerPort: 80              hostPort: 80      restartPolicy: Alwaysstatus: {}---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: my-subdomain-2spec:  replicas: 1  strategy: {}  template:    metadata:      creationTimestamp: null      labels:        name: my-subdomain-2        type: app    spec:      hostname: app      subdomain: sub2      containers:        - image: nginx:alpine          name: nginx          ports:            - name: nginx              containerPort: 80              hostPort: 80      restartPolicy: Alwaysstatus: {}---apiVersion: v1kind: Servicemetadata:  name: my-expose-dnsspec:  ports:    - port: 80  selector:    name: my-host  type: LoadBalancer

最佳答案

你想要Ingress .有几个选项可用(Istio、nginx、traefik 等)。我喜欢使用 nginx,它真的很容易安装和使用。安装步骤可以在kubernetes.github.io找到.

Ingress Controller 安装完成后,您需要确保已使用 type=LoadBalancer 的服务公开它。接下来,如果您使用的是 Google Cloud DNS,请为您的域设置通配符条目,并使用指向 Ingress Controller 服务的外部 IP 地址的 A 记录。在您的情况下,它将是 *.app.mydomain.com。

现在您到 app.mydomain.com 的所有流量都将转到该负载均衡器并由您的入口 Controller 处理,因此现在您需要为您想要的任何服务添加服务和入口实体。

apiVersion: v1
kind: Service
metadata:
name: my-service1
spec:
selector:
app: my-app-1
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

apiVersion: v1
kind: Service
metadata:
name: my-service2
spec:
selector:
app: my-app2
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: sub1.app.mydomain.com
http:
paths:
- backend:
serviceName: my-service1
servicePort: 80
- host: sub2.app.mydomain.com
http:
paths:
- backend:
serviceName: my-service2
servicePort: 80

显示的路由是基于主机的,但您可以像基于路径一样轻松地处理这些服务,因此到 app.mydomain.com/service1 的所有流量都将转到您的部署之一。

关于kubernetes - 如何使用 GKE 启用子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56486158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com