如何为Kubernetes上以Node IP+NodePort部署的Angular服务配置DNS?
配置DNS名称及端口映射方案
一、DNS记录配置
核心是将myangular.deploy.com解析到你的Node IP(10.10.10.10),配置位置分三种场景:
- 本地测试:修改本地
hosts文件(Windows路径C:\Windows\System32\drivers\etc\hosts,Linux/macOS路径/etc/hosts),添加一行:
仅当前机器生效,适合个人测试。10.10.10.10 myangular.deploy.com - 企业内网:联系运维人员在内网DNS服务器添加A记录,将域名指向目标IP,所有内网机器均可通过域名解析访问。
- 公网环境:登录域名服务商后台(如阿里云、腾讯云),在域名管理中添加A记录,将域名指向公网可访问的Node IP。
二、实现无端口访问的关键配置
DNS仅负责域名到IP的解析,无法直接映射端口,要实现myangular.deploy.com直接访问(无需加34781),需做端口转发或反向代理:
方案1:Kubernetes Ingress(K8s环境)
若你的Angular服务部署在K8s集群(对应NodePort场景),推荐用Ingress:
- 确保集群已安装Ingress Controller(如NGINX Ingress)。
- 创建Ingress配置文件(例:
angular-ingress.yaml):apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: angular-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: myangular.deploy.com http: paths: - path: / pathType: Prefix backend: service: name: 你的Angular服务名称 port: number: 34781 # 填写NodePort对应的ClusterIP端口 - 应用配置:
kubectl apply -f angular-ingress.yaml
配置完成后,Ingress会将域名的80端口请求转发到你的Angular服务,无需手动加端口。
方案2:反向代理服务器(非K8s环境)
若直接在服务器用Node.js运行Angular,可借助NGINX或Apache做反向代理,以NGINX为例:
- 安装NGINX后,新增配置文件(例:
/etc/nginx/conf.d/angular.conf):server { listen 80; server_name myangular.deploy.com; location / { proxy_pass http://127.0.0.1:34781; # 指向Angular服务的本地端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - 重启NGINX:
systemctl restart nginx
访问域名时,NGINX会自动将请求转发到34781端口。
三、Angular项目配置修改说明
一般无需修改Angular项目配置,除非代码中硬编码了IP/端口地址。若存在此类硬编码,需将其替换为myangular.deploy.com,重新构建后部署。
内容的提问来源于stack exchange,提问作者Naga Manideep
相关产品推荐
相关产品推荐

