KubeGems是一款以围绕Kubernetes通过自研和集成云原生项目而构建的通用性开源PaaS云管理平台。经过我们内部近一年的持续迭代,当前KubeGems的核心功能已经初步具备多云多租户场景下的统一管理。并通过插件化的方式,在用户界面中灵活控制包括监控系统、日志系统、微服务治理等众多插件的启用和关闭。Nacos介绍 Nacos是阿里云开源一款在微服务场景下用于处理应用配置发布管理和服务注册管理的服务平台。其主要提供了如下几个特性:服务发现和服务健康监测基于DNS和RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的AgentTODO注册Service后,服务消费者可以使用DNSTODO或HTTPAPI查找和发现服务。动态配置服务动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态DNS服务动态DNS服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。服务及其元数据管理Nacos从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA以及最首要的metrics统计数据。KubeGems中的NacosKubeGems自v1。21版本之后开启了对Nacos配置中心的支持,并利用了内置PluginsCRD实现了对Nacos的快速启动。 KubeGems中的Nacos安装源来至官方社区提供https:github。comnacosgroupnacosk8s,并在plugincrd中来管理部署的版本。用过Nacos的同学可能知道,其内部的数据模型主要围绕dataid、group和namespace这3个进行操作。由于KubeGems的设计是一个支持多租户的平台,所以在应用nacos数据模型时,按照了tenantproject来区分内部的命名空间。 启用和配置插件 KubeGems启用Nacos需要具备系统管理员的权限进行操作。管理员进入管理后台的插件管理,点击启用按钮即可开启Nacos。 直到出现如下状态,代表插件运行正常 此时,我们就可以在租户的环境中开始使用Nacos服务 个性化配置 Nacos插件的配置以CRD的形式存放在nacos命名空间中,我们可以通过命令kubectleditpluginnacosnnacos对插件进行个性化配置。apiVersion:plugins。kubegems。iov1beta1kind:Pluginmetadata:finalizers:plugins。kubegems。iofinalizergeneration:1name:nacosnamespace:nacosspec:kind:helmpath:helmurl:https:github。comnacosgroupnacosk8s。gitvalues:namespace:nacosglobal:mode:clusternacos:replicaCount:1image:repository:registry。cnbeijing。aliyuncs。comkubegemsnacosservertag:v2。1。1plugin:image:repository:registry。cnbeijing。aliyuncs。comkubegemsnacospeerfinderpluginpersistence:data:storageClassName:localpathenabled:trueservice:type:ClusterIPversion:master 提示:KubeGems的插件CRD由https:github。comkubegemsbundlecontroller提供支持,我们也可以直接使用bundlecontroller在非kubegems集群中管理插件。 集群部署 Nacos集群由社区提供支持部署,kubegems默认将nacos的全局运行模式设置为cluster,如果您需要扩展成多集群,只需修改replicaCount的副本数为3即可。 开放集群外访问 Nacos插件默认运行在Kubernetes内部,如果需要在集群外访问Nacos需借助网关实现。管理员可以在后台创建一条基于默认网关的ingress来代理nacosapi。过程如下: 第一步:进入路由功能页面,选择nacos命名空间 第二步:创建并提交一条路由规则,用于nacos的代理 第三步:获取访问地址 提示:Nacos2。0版本相比1。X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server。port)基础上,进行一定偏移量自动生成使用配置中心 进入应用环境下的应用配置,可以点击右上角的获取访问信息查看当前环境下的nacossdk所需的配置信息 配置管理 点击创建配置项就可以创建配置 配置历史与回滚 监听列表 运行测试 我们用nacossdkgov1来做一个简单的认证packagemainimport(fmttimegithub。comnacosgroupnacossdkgoclientsgithub。comnacosgroupnacossdkgocommonconstantgithub。comnacosgroupnacossdkgovo)funcmain(){sc:〔〕constant。ServerConfig{{IpAddr:nacos。kubegems。io,Port:31956,},}cc:constant。ClientConfig{NamespaceId:69f7325702bc396a8773f9a0a94eea310b21ec39,namespaceidTimeoutMs:5000,NotLoadCacheAtStart:true,LogDir:tmpnacoslog,CacheDir:tmpnacoscache,LogLevel:debug,}client,err:clients。NewConfigClient(vo。NacosClientParam{ClientConfig:cc,ServerConfigs:sc,},)iferr!nil{panic(err)}content,err:client。GetConfig(vo。ConfigParam{DataId:test,Group:e3,})fmt。Println(GetConfig,config:content)errclient。ListenConfig(vo。ConfigParam{DataId:test,Group:e3,OnChange:func(namespace,group,dataId,datastring){fmt。Println(configchangedgroup:group,dataId:dataId,content:data)},})time。Sleep(300time。Second)} 以下是运行情况 总结 本文主要介绍了在KubeGems中启用并使用Nacos插件作为应用的配置中心的基本管理功能。Nacos是一个非常棒的应用配置管理平台,KubeGems团队将持续关注此项目,并为用户在Kubernetes集群提供更友好的支持。