【微服务部署】02-配置管理

这篇具有很好参考价值的文章主要介绍了【微服务部署】02-配置管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.ConfigMap

ConfigMap是K8s提供的内置的配置管理的方案

1.1 创建ConfigMap方式

  • 从文件夹创建
  • 从文件创建
  • 从键值对 ⇒ 提供一个键值对的文件,将键值对的文件内容作为ConfigMap的Key和Value

1.2 使用ConfigMap的方式

  • 映射为文件 ⇒ 将ConfigMap的Key的value映射为文件
  • 映射为环境变量
  • 映射为命令行参数

1.3 ConfigMap使用要点建议

  • 版本化管理配置文件,以支持快速回滚
  • 共享配置使用环境变量注入

ConfigMap的创建脚本代码

// 创建ConfigMap映射
kubectl create configmap geektime-ordering-api-config --from-file=geektime-ordering-api/configs -o yaml --dry-run | kubectl apply -f - 
kubectl create configmap geektime-identity-api-config --from-file=geektime-identity-api/configs -o yaml --dry-run | kubectl apply -f - 
kubectl create configmap geektime-mobile-apiaggregator-config --from-file=geektime-mobile-apiaggregator/configs -o yaml --dry-run | kubectl apply -f - 
kubectl create configmap geektime-config --from-env-file=env.txt -o yaml --dry-run | kubectl apply -f - 
kubectl create configmap geektime-mobile-gateway-config --from-file=geektime-mobile-gateway/configs -o yaml --dry-run | kubectl apply -f - 
kubectl create configmap geektime-healthcheckshost-config --from-file=geektime-healthcheckshost/configs -o yaml --dry-run | kubectl apply -f - 

helm install geektime-ordering-api .\charts\geektime-ordering-api -n default
helm install geektime-identity-api .\charts\geektime-identity-api -n default
helm install geektime-mobile-apiaggregator .\charts\geektime-mobile-apiaggregator -n default
helm install geektime-mobile-gateway .\charts\geektime-mobile-gateway -n default
helm install geektime-healthcheckshost  .\charts\geektime-healthcheckshost -n default

"Any key to exit"  ;
Read-Host | Out-Null ;
Exit

create configmap geektime-ordering-api-config 创建名为geektime-ordering-api-config的ConfigMap
from-file指定一个目录,将该目录下的所有文件的文件名做为Key,文件内容为Value映射到ConfigMapp中

–from-env-file=env.txt -o yaml --dry-run | kubectl apply -f - 通过Key-Value键值对方式创建ConfigMap,比较使用用于定义公共的环境变量

ConfigMap的使用
定义了两种方式使用ConfigMap的方式,一种是将其映射到环境变量中,

env:
    - name: ENV_ABC // 环境变量映射方式
      valueFrom:
        configMapKeyRef:
          name: geektime-config
          key: ENV_ABC
volumeMounts://存储卷映射方式,将文件映射到当前应用目录下
            - mountPath: "/app/appsettings.json"
              name: appsettings
              subPath: appsettings-{{.Chart.AppVersion}}.json //subPath指的是ComfigMap的Key

....

volumes: // 定义存储卷
        - name: appsettings
          configMap:
              name: {{ include "geektime-mobile-gateway.fullname" . }}-config

定义名为ENV_ABC的环境变量,valueFrom定义的是configMapKeyRef,也就是通过之前定义的名为geektime-config的ConfigMap,取它的Key值为ENV_ABC

存储卷定义方式,首先定义一个存储卷volumes,通过过将ConfigMap映射到存储卷,意味着这个名为appsettings的存储卷下面会有ConfigMap中的appsetting配置文件

subPath: appsettings-{{.Chart.AppVersion}}.json 这里使用了Chart.AppVersion变量,是因为建议的做法是镜像的版本和配置的版本以及Helm的版本都应该是一致的,这样在修改Helm版本后就能读到对应的匹配值版本

如果配置的是环境变量时,如果配置发生变更,需要重启应用程序才能获取到新的配置信息

2 分布式配置中心解决方案

2.1 什么时候选择配置中心

  • 多项目组并行协作
  • 运维开发分工职能明确
  • 对风险控制有更高诉求
  • 对线上配置热更新有诉求

2.2 Apollo配置中心系统的能力

  • 权限与审计
  • 版本管理
  • 热更新
  • 原生支持Java、.Net客户端
  • 目前项目仍然很活跃
2.2.1 Apollo创建配置项目

前置条件,需要安装docker环境和docker-compose支持
在当前目录执行start.ps1,启动服务

dashboard:
http://localhost:8070

用户名: apollo
密码: admin

configServer:
http://localhost:8080

start.ps1文件内容

docker-compose up

Apollo页面
【微服务部署】02-配置管理,微服务,NetCore,微服务,.netcore,后端,开发语言

点击"创建项目",创建需要的项目文章来源地址https://www.toymoban.com/news/detail-682142.html

2.2.2 项目使用
  • 项目引用Apollo的包,Com.Ctrip.Framework.Apollo.Configuration
  • Program文件添加命名空间,并在CreateHostBuilder中注入
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostBuilderContext, configurationBuilder) =>
                {
                    LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);// 定义日志级别
                    //var c = configurationBuilder.Build().GetSection("Apollo").Get<ApolloOptions>();
                    configurationBuilder.AddApollo(configurationBuilder.Build().GetSection("Apollo")).AddDefault(Com.Ctrip.Framework.Apollo.Enums.ConfigFileFormat.Properties);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
  • 在appsetting.json配置Apollo接点
"Apollo": {
    "AppId": "geektime-mobile-gateway",// 应用程序在配置中心的唯一标识
    "Env": "DEV",
    "MetaServer": "http://172.168.190.76:8080",
    "ConfigServer": [ "http://172.168.190.76:8080" ]
  },
2.2.3 K8s中使用Apollo
  • 在配置中添加Apollo配置
"Apollo": {
      "AppId": "geektime-mobile-gateway",
      "Env": "DEV",
      "MetaServer": "http://192.168.67.76:8080",
      "ConfigServer": [ "http://192.168.67.76:8080" ]
    },
  • 构建镜像
  • 创建ConfigMap
  • 访问获取

到了这里,关于【微服务部署】02-配置管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 文件管理工具.netcore资源文件管理

    文件管理工具 怎么快速有效的管理我的文件包括文件夹,需求功能是 模糊搜索显示匹配的文件夹或文件数据 快速打开文件夹位置 在windows直接查看搜索速度太慢,范围宽泛,整理所需资源文件名和文件本机路径保存在数据库,可以在数据库中快速检索 显示文件夹路径然后点

    2024年01月23日
    浏览(40)
  • netcore模型配置

    模型配置可以通过Fluent API和注解的方式 FluentAPI步骤 新建Products 和Category类 新建Products类 Products     新建Category类 Category 他们之间存在一对多的关系 配置实体属性 Fluent API  配置一对一的关系 一对一关系表示两个实体存在唯一的关系,每个实体只能关联到另一个实体 新建

    2024年02月16日
    浏览(27)
  • .netcore grpc日志记录配置

    通过配置文件appsettings.json进行配置 通过Program.cs进行配置 通过环境变量进行配置 客户端通过日志通道进行配置 配置环境变量:Logging__LogLevel__Grpc=Debug 配置Appsettings.json 配置Program.cs 配置客户端工厂 以上截图是目前为止已知的可以配置日志的方式。 链接:https://pan.baidu.com/s/1L

    2024年02月10日
    浏览(23)
  • NetCore读取JSON配置文件

    一、添加NuGet 包: 1. Microsoft.Extensions.Configuration.Binder :将对象与 Microsoft.Extensions.Configuration 的配置提供程序中的数据绑定的功能。 2. Microsoft.Extensions.Configuration.Json :Microsoft.Extensions.Configuration 的 JSON 配置提供程序实现。 3. Microsoft.Extensions.Configuration.EnvironmentVariables :Microso

    2024年02月05日
    浏览(25)
  • NetCore_signalR服务端

    本文不介绍关于SignalR的原理内容,比如如何实现的长连接,如何实现双工通信,如何实现向下兼容的通信等等 本文仅仅记录如何实现一个服务端 IDE :visual Studio2022 环境:.net6 webApi程序 语言:C#10 没有引入其他包,因为是WebApi项目,所以默认的asp.net的包都引入了。 完整代码

    2024年02月09日
    浏览(28)
  • NetCore下WebApi的后台服务BackgroundService

    引言:最近发现个好东西就是 BackgroundService ,以前一直没注意到。个人理解它就是在你的后台开了一个子线程运行你的其他业务逻辑。 先上代码: 还需要在startup里面注册一下: 应用场景:定时提醒。

    2024年02月10日
    浏览(31)
  • .NetCore Flurl.Http 4.0.0 以上管理客户端

    Flurl.Http-3.2.4 升级到 4.0.0 版本后,https请求异常:Call failed. The SSL connection could not be established. 请参考:.NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接-CSDN博客 参考原文地址:Managing Clients - Flurl 管理客户端         Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpCli

    2024年01月20日
    浏览(33)
  • nacos实现Java和.NetCore的服务注册和调用

    用nacos作为服务注册中心,如何注册.NetCore服务,如何在Java中调用.NetCore服务呢?可以分为下面几个步骤:   0.运行nacos   1.开发.net core服务,然后调用nacos提供的.net core sdk注册服务。   2.开发Java服务,然后注册服务。   3.用RestTemplate调用.net core服务。   4.用OpenFeign调用服务

    2024年01月17日
    浏览(34)
  • .NetCore gRpc 客户端与服务端的单工通信Demo

    方式一 使用vs 2022(也可以是其他版本)创建一个grpc的服务,如下这样 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uipEG9Xu-1687172462785)(C:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20230619183828284.png)] 简单方便,创建项目后的目录结构如下图

    2024年02月09日
    浏览(42)
  • 【NetCore】09-中间件

    1.1 中间件工作原理 1.2 中间件核心对象 IApplicationBuilder RequestDelegate IApplicationBuilder可以通过委托方式注册中间件,委托的入参也是委托,这就可以将这些委托注册成一个链,如上图所示;最终会调用Builder方法返回一个委托,这个委托就是把所有的中间件串起来后合并成的一个

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包