在Azure Kubernetes中,服务或负载均衡器公开IP地址以访问容器的应用程序。如果其中一个容器有web应用程序,那么它将对外公开为115.111.0.145这样的IP。假设我从GoDaddy购买了一个网站www.example.com,那么我如何将这个域名与AKS集群链接,以便最终用户将通过名称而不是IP访问该网站?
您可以使用Ingress。入口是一个API对象,用于管理对集群中服务的外部访问,通常是HTTP。可以将入口配置为向服务提供外部可访问的url、负载平衡流量、终止SSL/TLS以及提供基于名称的虚拟主机。您可以查看官方的kubernetes入口文档了解更多详细信息。
下面是一个简单的入口清单示例:
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
在这种情况下,您可以采用Microsoft azure的DNS区域服务,并可以为您的站点定义一组规范名称,如-
-
example.com可以标记为"A"类型记录,即Nginx控制器服务的IP暴露给负载均衡器。
-
然后您可以创建多个规范名称,如-api.example.com并且可以将此映射到example.com作为DNS区域中的CNAME类型记录。
这可以帮助您将来自多个域的流量定向到集群。
kubectl get svc
将为您提供nginx服务的外部IP,您可以在DNS区域的A记录中提供该外部IP。
希望这有帮助!!