# GBS Dubbo NodePort 映射与还原记录 记录时间:2026-07-03 ## 背景 本地项目连接 100 开发环境 Nacos 后,Dubbo consumer 从 `jjb-dragon-facade` 获取到的 provider 地址是 k8s Pod IP,例如: ```text 10.244.178.143:20880 ``` 本地电脑无法直连 k8s Pod 网段,因此曾临时采用方案 A:通过 NodePort 暴露 k8s 内 Dubbo provider,并让 provider 注册 `192.168.20.100:32xxx` 到 Nacos。 ## 临时映射操作 ### 1. 创建 Dubbo NodePort Service 为实际注册 Dubbo provider 的底座服务创建 `*-dubbo` NodePort Service,端口范围如下: ```text jjb-saas-system 32080 jjb-saas-auth 32081 jjb-saas-events 32082 jjb-saas-security 32083 jjb-saas-message 32084 jjb-saas-login 32085 jjb-saas-base 32086 jjb-saas-process-layout 32087 jjb-saas-user 32088 jjb-saas-official 32089 jjb-saas-facade 32090 jjb-saas-open-platform 32091 jjb-saas-application 32092 jjb-saas-attachment 32093 jjb-saas-formily-design 32094 jjb-saas-desk 32095 jjb-saas-config 32096 jjb-saas-document 32097 jjb-saas-component-design 32098 jjb-saas-view 32099 jjb-saas-gateway 32100 ``` Service 结构示例: ```yaml apiVersion: v1 kind: Service metadata: name: jjb-saas-message-dubbo namespace: jjb-dragon spec: type: NodePort selector: app: jjb-saas-message-pod ports: - name: dubbo protocol: TCP port: 20880 targetPort: 20880 nodePort: 32084 ``` ### 2. 设置 Deployment 运行时环境变量 给对应 Deployment 设置: ```bash kubectl set env deployment/-deploy -n jjb-dragon \ DUBBO_IP_TO_REGISTRY=192.168.20.100 \ DUBBO_PORT_TO_REGISTRY= ``` 示例: ```bash kubectl set env deployment/jjb-saas-message-deploy -n jjb-dragon \ DUBBO_IP_TO_REGISTRY=192.168.20.100 \ DUBBO_PORT_TO_REGISTRY=32084 ``` ### 3. 开放防火墙端口 ```bash firewall-cmd --permanent --add-port=32080-32100/tcp firewall-cmd --reload ``` ### 4. 临时映射备份位置 ```text /root/codex-backups/dubbo-nodeport-20260703125329 ``` ## 还原操作 用户要求 100 环境不要映射 Dubbo 到外部端口,因此已执行还原。 ### 1. 清理 Deployment 环境变量 ```bash kubectl set env deployment/-deploy -n jjb-dragon \ DUBBO_IP_TO_REGISTRY- \ DUBBO_PORT_TO_REGISTRY- ``` ### 2. 删除 Dubbo NodePort Service ```bash kubectl delete svc -dubbo -n jjb-dragon --ignore-not-found=true ``` 已删除范围: ```text jjb-saas-application-dubbo jjb-saas-attachment-dubbo jjb-saas-auth-dubbo jjb-saas-base-dubbo jjb-saas-component-design-dubbo jjb-saas-config-dubbo jjb-saas-desk-dubbo jjb-saas-document-dubbo jjb-saas-events-dubbo jjb-saas-facade-dubbo jjb-saas-formily-design-dubbo jjb-saas-gateway-dubbo jjb-saas-login-dubbo jjb-saas-message-dubbo jjb-saas-official-dubbo jjb-saas-open-platform-dubbo jjb-saas-process-layout-dubbo jjb-saas-security-dubbo jjb-saas-system-dubbo jjb-saas-user-dubbo jjb-saas-view-dubbo ``` ### 3. 关闭防火墙端口 ```bash firewall-cmd --permanent --remove-port=32080-32100/tcp firewall-cmd --reload ``` ### 4. 还原前备份位置 ```text /root/codex-backups/dubbo-nodeport-restore-20260703180914 ``` ## 还原后验证 ### k8s 验证 ```bash kubectl get svc -n jjb-dragon | grep -- '-dubbo' kubectl get deploy -n jjb-dragon -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[0].env}{"\n"}{end}' | grep 'DUBBO_.*TO_REGISTRY' ``` 结果:无 `*-dubbo` Service,无 `DUBBO_IP_TO_REGISTRY` / `DUBBO_PORT_TO_REGISTRY` 环境变量。 ### 本机端口验证 从本机测试: ```text 192.168.20.100:32080-32100 全部 CLOSED ``` ### Nacos 验证 `jjb-dragon-facade` 中不再存在 `192.168.20.100:32xxx` provider。服务重启后重新回到 k8s 内部注册方式,即 Pod IP,例如 `10.244.*:20880`。 ## 注意事项 1. 本次还原没有修改本地项目代码。 2. 本次还原没有重新打镜像。 3. 本次还原会使本地电脑不能再通过 `192.168.20.100:32xxx` 直连 k8s 内 Dubbo provider。 4. 如后续仍需要本地调用 k8s Dubbo 服务,建议优先采用独立 local-dev namespace 或 VPN/内网路由方案,避免影响正式线上环境。