KubeGems 启用 Nacos 配置中心

KubeGems是一款以围绕 Kubernetes 通过自研和集成云原生项目而构建的通用性开源 PaaS 云管理平台。经过我们内部近一年的持续迭代,当前 KubeGems 的核心功能已经初步具备多云多租户场景下的统一管理。并通过插件化的方式,在用户界面中灵活控制包括 监控系统日志系统微服务治理 等众多插件的启用和关闭。

Nacos 介绍

Nacos 是阿里云开源一款在微服务场景下用于处理应用配置发布管理和服务注册管理的服务平台。其主要提供了如下几个特性:

启用和配置插件

KubeGems 启用 Nacos 需要具备系统管理员的权限进行操作。管理员进入管理后台的“插件管理”,点击“启用“按钮“即可开启Nacos。

直到出现如下状态,代表插件运行正常

此时,我们就可以在租户的环境中开始使用 Nacos 服务

个性化配置

Nacos插件的配置以 CRD 的形式存放在 nacos命名空间中,我们可以通过命令kubectl edit plugin nacos -n nacos对插件进行个性化配置。

apiVersion: plugins.kubegems.io/v1beta1
kind: Plugin
metadata:
  finalizers:
  - plugins.kubegems.io/finalizer
  generation: 1
  name: nacos
  namespace: nacos
spec:
  kind: helm
  path: helm
  url: https://github.com/nacos-group/nacos-k8s.git
  values:
    namespace: nacos
    global:
      mode: cluster
    nacos:
      replicaCount: 1
      image:
        repository: registry.cn-beijing.aliyuncs.com/kubegems/nacos-server
        tag: v2.1.1
      plugin:
        image:
          repository: registry.cn-beijing.aliyuncs.com/kubegems/nacos-peer-finder-plugin
    persistence:
      data:
        storageClassName: local-path
      enabled: true
    service:
      type: ClusterIP
  version: master

提示:KubeGems的插件 CRD 由 https://github.com/kubegems/bundle-controller提供支持,我们也可以直接使用 bundle-controller 在非 kubegems 集群中管理插件。

集群部署

Nacos集群由社区提供支持部署,kubegems 默认将 nacos 的全局运行模式设置为“cluster”,如果您需要扩展成多集群,只需修改replicaCount的副本数为 3 即可。

开放集群外访问

Nacos 插件默认运行在 Kubernetes 内部,如果需要在集群外访问 Nacos 需借助网关实现。管理员可以在后台创建一条基于默认网关的 ingress 来代理 nacos api。过程如下:

第一步:进入路由功能页面,选择 nacos 命名空间

第二步:创建并提交一条路由规则,用于 nacos 的代理

第三步:获取访问地址

提示:Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成

使用配置中心

进入应用环境下的“应用配置”,可以点击右上角的“获取访问信息”查看当前环境下的 nacos sdk 所需的配置信息

配置管理

点击“创建配置项”就可以创建配置

配置历史与回滚

监听列表

运行测试

我们用 nacos-sdk-go/v1来做一个简单的认证

package main

import (
 "fmt"
 "time"

 "github.com/nacos-group/nacos-sdk-go/clients"
 "github.com/nacos-group/nacos-sdk-go/common/constant"
 "github.com/nacos-group/nacos-sdk-go/vo"
)

func main() {
 sc := []constant.ServerConfig{
  {
   IpAddr: "nacos.kubegems.io",
   Port:   31956,
  },
 }

 cc := constant.ClientConfig{
  NamespaceId:         "69f7325702bc396a8773f9a0a94eea310b21ec39", //namespace id
  TimeoutMs:           5000,
  NotLoadCacheAtStart: true,
  LogDir:              "/tmp/nacos/log",
  CacheDir:            "/tmp/nacos/cache",
  LogLevel:            "debug",
 }
 client, err := clients.NewConfigClient(
  vo.NacosClientParam{
   ClientConfig:  &cc,
   ServerConfigs: sc,
  },
 )

 if err != nil {
  panic(err)
 }

 content, err := client.GetConfig(vo.ConfigParam{
  DataId: "test",
  Group:  "e3",
 })
 fmt.Println("GetConfig,config :" + content)

 err = client.ListenConfig(vo.ConfigParam{
  DataId: "test",
  Group:  "e3",
  OnChange: func(namespace, group, dataId, data string) {
   fmt.Println("config changed group:" + group + ", dataId:" + dataId + ", content:" + data)
  },
 })
 time.Sleep(300 * time.Second)
}

以下是运行情况

总结

本文主要介绍了在 KubeGems 中启用并使用Nacos插件作为应用的配置中心的基本管理功能。Nacos 是一个非常棒的应用配置管理平台,KubeGems 团队将持续关注此项目,并为用户在 Kubernetes 集群提供更友好的支持。



展开阅读全文

页面更新:2024-03-09

标签:租户   中心   集群   路由   端口   插件   版本   方式   环境   动态

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top