将网站或域与 AKS 群集链接

Posted

技术标签:

【中文标题】将网站或域与 AKS 群集链接【英文标题】:Linking a website or domain with AKS cluster 【发布时间】:2021-05-11 06:45:08 【问题描述】:

在 Azure Kubernetes 中,服务或负载均衡器会公开 IP 地址以访问容器的应用程序。如果其中一个容器具有 Web 应用程序,那么它将作为 IP 对外公开,​​例如 115.111.0.145。假设我有一个从 GoDaddy 购买的网站www.example.com,那么如何将此域与 AKS 集群链接,以便最终用户通过名称而不是 IP 访问该网站?

【问题讨论】:

【参考方案1】:

您可以使用 Ingress。 Ingress 是一个 API 对象,用于管理对集群中服务的外部访问,通常是 HTTP。 Ingress 可以配置为提供服务外部可访问的 URL、负载平衡流量、终止 SSL/TLS 并提供基于名称的虚拟主机。更多详情可以查看官方kubernetesIngress-doc。

这里给出了一个简单的入口 yaml 清单:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: simple-fanout-example
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /foo
        pathType: Prefix
        backend:
          service:
            name: service1
            port:
              number: 4200
      - path: /bar
        pathType: Prefix
        backend:
          service:
            name: service2
            port:
              number: 8080

【讨论】:

请注意,您仍需要更新 DNS 记录以指向入口控制器外部 IP。 我同意 Sahadat Hossain 的观点,创建 Ingress 是一个好方法。对于Azure AKS的详细说明可以在这里找到:create-an-ingress-controller 感谢@Sahadat 帮助我。【参考方案2】:

在这种情况下,您可以使用 Microsoft azure 的 DNS 区域服务,并可以为您的站点定义一组规范名称,例如 -

    example.com 可以标记为“A”类型记录,即向负载均衡器公开的 nginx 控制器服务的 IP。

    然后您可以创建多个规范名称,例如 - api.example.com 并且可以将其映射到 example.com 作为 DNS 区域中的 CNAME 类型记录。

这有助于您将来自多个域的流量引导到集群。

kubectl get svc 会为你提供 nginx 服务的外部 IP,你可以在 DNS 区域的 A 记录中提供该外部 IP。

希望对你有帮助!!

【讨论】:

感谢@Tushar 的指导。

以上是关于将网站或域与 AKS 群集链接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 AKS 群集中启动 RabbitMQ 映像

如何找到我的 AKS 群集的服务主体机密?

Shell (ssh) 到 Azure AKS (Kubernetes) 群集工作节点

无法从连接到 Azure *** 的本地计算机(在家庭网络上)访问专用 AKS 群集

使用 vnet_subnet_id 通过 terraform 启动 AKS 群集 - Azure

如何在 terraform 中由 AKS 群集资源创建的虚拟机规模集或负载均衡器上启用诊断日志?