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.clusterIPSVC.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服务,点击进入配置页,点击编辑
  • 展开元数据,添加标签,keyregistervalueenable
  • 服务类型改成NodePort
  • 保存,过10秒后可以去nacos服务管理中看看这个新的命名空间有没有显示此服务
  • 一版情况下,pai-configpai-authpai-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.梁婵

文档更新时间: 2023-06-26 17:06   作者:管理员