AKS部署WSO2 API Manager如何配置DNS记录映射主机名与外部IP
AKS环境下WSO2 API Manager主机名与IP映射配置指引
你本地通过hosts配置能正常运行,说明WSO2本身的服务配置、Ingress/LoadBalancer暴露规则都没有问题,以下是不同访问场景下,和本地hosts等效的配置方式,不需要额外部署第三方DNS服务:
集群内部Pod访问场景(等效集群全局hosts)
AKS默认使用CoreDNS提供集群内域名解析,直接修改CoreDNS配置即可实现全集群内的主机名静态映射,不用逐个修改Pod的hosts文件:
- 先获取WSO2服务对应的LoadBalancer外部IP,执行以下命令查询:
kubectl get svc -n <WSO2部署所在的命名空间>
记录返回结果中对应WSO2入口服务的EXTERNAL-IP值,同时整理好WSO2配置中用到的所有自定义主机名(例如网关、Publisher、DevPortal对应的域名)。 - 编辑CoreDNS的配置 ConfigMap:
kubectl edit configmap coredns -n kube-system - 在打开的配置文件中,找到
.:53对应的核心解析配置块,在插件配置段添加hosts插件配置,格式参考:
hosts { <前面记录的EXTERNAL-IP> <主机名1> <主机名2> <主机名3> fallthrough }
配置示例(假设外部IP为20.189.110.32,域名为api.wso2.local、publisher.wso2.local、devportal.wso2.local):
hosts { 20.189.110.32 api.wso2.local publisher.wso2.local devportal.wso2.local fallthrough }
注意:必须配置fallthrough字段,否则集群内正常的Service域名、公网域名解析会全部失效
- 保存退出编辑器后,CoreDNS会在30-60秒内自动加载新配置,无需手动重启Pod。配置完成后集群内所有Pod访问上述主机名时,都会直接解析到指定的外部IP,和本地修改hosts的效果完全一致。
- 验证方式:启动临时测试Pod检查解析结果:
kubectl run -it --rm dns-test --image=busybox:1.28 -- nslookup <你的WSO2自定义主机名>
返回结果中Address字段为你配置的EXTERNAL-IP即代表生效。
VNet内非Pod资源访问场景(等效VNet全局hosts)
如果需要让AKS所在VNet内的其他资源(例如同VNet的虚拟机、其他云服务)也能通过自定义主机名访问WSO2,直接使用Azure原生私有DNS区域即可,无需逐个修改资源的hosts:
- 在Azure控制台进入私有DNS区域服务,新建私有DNS区域,区域名称和你用的自定义域名后缀保持一致即可。
- 进入新建的私有DNS区域,为每个WSO2自定义主机名添加A记录:
- 记录名称填主机名前缀(例如要解析api.wso2.local就填api)
- 记录类型选A
- TTL保持默认1小时即可
- 记录值填WSO2服务对应的EXTERNAL-IP
- 在私有DNS区域的「虚拟网络链接」配置中,添加AKS集群所在VNet、以及所有需要访问WSO2的资源所在VNet,不需要开启自动注册功能。
- 配置完成后,所有接入上述VNet的资源访问对应主机名时,都会直接解析到配置的IP,无需额外配置。
公网访问场景
如果需要让公网用户访问WSO2服务,直接在你持有域名的公网DNS解析服务商处,添加对应主机名的A记录,解析值填WSO2入口的公网EXTERNAL-IP即可,也就是WSO2部署文档中提到的标准DNS配置方式。
临时测试快捷配置:如果只是需要给单个Pod配置hosts映射,不需要全局生效,可以直接在Pod的spec段添加
hostAliases配置,效果等同于在Pod内部修改/etc/hosts文件,配置示例:spec: hostAliases: - ip: "20.189.110.32" hostnames: - "api.wso2.local" - "publisher.wso2.local" - "devportal.wso2.local"
内容的提问来源于stack exchange,提问作者Firas SOLTANI
相关产品推荐
相关产品推荐

