NACOS代理注册服务配置
前言
很多时候,开发需要重现调试BUG,但边端测试环境基础服务一般不可外部直接访问,比如pai-config
等,所以需要借助代理服务,把这些服务代理出来(本地开发环境可达的地址)
开始
先登录nacos创建一个新的命名空间,一般命名为dev
添加共享配置
从正在用的命名空间克隆一份共享配置到这个新的命名空间,并命名为pai-share-config-dev.yaml
,里面的各种配置地址需要调整为开发调试环境可以访问的地址,比如:
注:如果开发调试环境不能通过原IP和端口访问mysql、redis这些中间件,则需要将这些中间件通过NodePort将服务对外暴露,注意不要暴露到公网,这样会有安全风险,在允许的情况下,只需要将中间件服务类型改为NodePort
,然后通过K8S集群宿主机任一ip和中间件服务的NodePort
进行访问
获取kubeconfig
ssh远程连接到master节点,执行 cat ~/.kube/config
,将显示的内容全部复制下来
配置pai-agent-configmap
(注:这一步也可以直接在编写yaml文件的时候替换配置好,只是需要注意调整格式,不然提交会提示配置异常,所以小编直接先导入yaml再来粘贴这个,省得调整了)
在部署到的命名空间配置字典中添加pai-agent-configmap
,配置config值,即将1kubeconfig的内容
替换为第3步获取到的配置内容。
需要特别注意的是,从服务器导出的配置内容中的有个服务地址需要变更为Master节点IP。
config.json的内容:
{
"type": "1",
"extranet": { }
}
说明:
- type:值为“1”表示根据extranet配置的IP对照,注册到nacos中,值为“2”时是将被代理注册服务的
SVC.clusterIP
及SVC.port
注册到nacos中 - extranet:当type=1时,设定{集群节点IP:可达的公网IP}(有暴露到公网需求时),如果局域网可达K8S集群节点,空对象即可
调整pai-service-agent.yaml配置文件
主要是指定将代理服务部署到哪个命名空间,以及将其中的nacos的命名空间(NACOS_NAMESPACE
),变更为上面创建的命名空间id。(注:附录有pai-service-agent.yaml
文件内容模板)
登录kuboard,将yaml文件内容复制粘贴进行创建工作负载
服务代理配置
将需要提供给这个新命名空间访问的基础服务做个代理转发,以pai-auth
为例:
- 点击【服务】菜单,进行服务列表,找到
pai-auth
服务,点击进入配置页,点击编辑 - 展开元数据,添加标签,
key
为register
,value
为enable
- 服务类型改成
NodePort
- 保存,过10秒后可以去nacos服务管理中看看这个新的命名空间有没有显示此服务
- 一版情况下,
pai-config
、pai-auth
、pai-console
都需要进行代理,其他看使用情况,比如调试服务需要用到oss,那边就要把pai-open
代理,需要调试适配器就把pai-apistore
服务代理等。
注:中间件不需要添加标签代理,只需要将务类型改成NodePort
以下是常用需要代理的一些基础服务
克隆业务服务的配置文件
将需要注册到这个命名空间进行本地调试的服务,从prod
命名空间克隆对应的配置文件到这个命名空间,注意要改下配置文件名称,将后缀prod
改动dev
,方便开发终端使用dev
获取配置,如下图:
配置完成后,尝试本地启动已有配置文件的服务,如果启动异常,再看是否缺失必要服务未代理,对其添加代理配置即可。
附录:
pai-service-agent.yaml
模板内容:
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations: {}
labels:
k8s.kuboard.cn/name: pai-service-agent
version: '1.0'
name: pai-service-agent
namespace: pai-cloud
spec:
replicas: 1
selector:
matchLabels:
name: pai-service-agent
version: '1.0'
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
name: pai-service-agent
version: '1.0'
spec:
containers:
- env:
- name: NACOS_IP
value: nacos.pai-cloud
- name: NACOS_PORT
value: '8848'
- name: K8S_NAMESPACE
value: pai-cloud
- name: NACOS_NAMESPACE
value: fbb0fc3e-16f0-4df4-9274-fc5a19556ae9
- name: TIME_EXPRESSION
value: '*/10 * * * * *'
image: 'dev.flyrise.cn:8082/pi-dev/pai-service-agent:v2.0.0.0'
imagePullPolicy: Always
name: pai-service-agent
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /node-app/config
name: pai-agent-kubeconfig
readOnly: true
subPath: config
- mountPath: /node-app/src/config.json
name: pai-agent-configjson
readOnly: true
subPath: config.json
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- configMap:
defaultMode: 420
items:
- key: config
path: config
name: pai-agent-configmap
name: pai-agent-kubeconfig
- configMap:
defaultMode: 420
items:
- key: config.json
path: config.json
name: pai-agent-configmap
name: pai-agent-configjson
---
apiVersion: v1
data:
config: |-
kubeconfig的内容
config.json: |-
{
"type":"1",
"extranet":{}
}
kind: ConfigMap
metadata:
name: pai-agent-configmap
namespace: pai-cloud
by.梁婵