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

文章目录

    • 1.ConfigMap
      • 1.1 创建ConfigMap方式
      • 1.2 使用ConfigMap的方式
      • 1.3 ConfigMap使用要点建议
    • 2 分布式配置中心解决方案
      • 2.1 什么时候选择配置中心
      • 2.2 Apollo配置中心系统的能力
        • 2.2.1 Apollo创建配置项目
        • 2.2.2 项目使用
        • 2.2.3 K8s中使用Apollo

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-configkey: ENV_ABC
volumeMounts://存储卷映射方式,将文件映射到当前应用目录下- mountPath: "/app/appsettings.json"name: appsettingssubPath: appsettings-{{.Chart.AppVersion}}.json //subPath指的是ComfigMap的Key....volumes: // 定义存储卷- name: appsettingsconfigMap: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页面
在这里插入图片描述

点击"创建项目",创建需要的项目

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
  • 访问获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【第1章 数据结构概述】

目录 一. 基本概念 1. 数据、数据元素、数据对象 2. 数据结构 二. 数据结构的分类 1. 数据的逻辑结构可分为两大类&#xff1a;a. 线性结构&#xff1b;b. 非线性结构 2. 数据的存储结构取决于四种基本的存储方法&#xff1a;顺序存储、链接存储、索引存储、散列存储 3. …

iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux)

GPIO口的操作&#xff0c;是很常见的功能。传统的GPIO sysfs接口已被弃用。自Linux 4.8起&#xff0c;内核提供了全新的操作gpio的方式libgpiod&#xff08;C library and tools for interacting with the linux GPIO character device&#xff09;&#xff0c;当然也更高效&am…

大数据Flink简介与架构剖析并搭建基础运行环境

文章目录 前言Flink 简介Flink 集群剖析Flink应用场景Flink基础运行环境搭建Docker安装docker-compose文件编写创建并运行容器访问Flink web界面 前言 前面我们分别介绍了大数据计算框架Hadoop与Spark,虽然他们有的有着良好的分布式文件系统和分布式计算引擎&#xff0c;有的有…

电脑识别不了固态硬盘怎么办?

在使用固态硬盘时&#xff0c;可能会出现电脑无法识别的情况&#xff0c;这时我们就无法使用固态硬盘中的数据。那么&#xff0c;电脑识别不了固态硬盘怎么办&#xff1f; 为什么电脑识别不了固态硬盘&#xff1f; 一般来说&#xff0c;电脑识别不了固态硬盘是因为以下3个原因…

软件工程(八) UML之类图与对象图

1、类图与对象图 1.1、类图与对象图的概念 类图(class diagram)描述一组类、接口、协作和它们之间的关系 对象图(object diagram)描述一组对象及它们之间的关系、对象图描述了在类图中所建立的事物实例的静态快照。 1.2、类图与对象图的区别 类图和对象图基本上是一样…

Python Opencv实践 - Canny边缘检测

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_GRAYSCALE) print(img.shape)#图像Canny边缘检测 #cv.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradien…

python web 开发与 Node.js + Express 创建web服务器入门

目录 1. Node.js Express 框架简介 2 Node.js Express 和 Python 创建web服务器的对比 3 使用 Node.js Express 创建web服务器示例 3.1 Node.js Express 下载安装 3.2 使用Node.js Express 创建 web服务器流程 1. Node.js Express 框架简介 Node.js Express 是一种…

Spring boot中调用C/C++(dll)

添加JNA依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version> </dependency>准备C代码/C代码 如下是C代码&#xff0c;文件名&#xff1a;xizi.c #include <std…

电子电路原理题目整理(1)

电子电路原理题目整理&#xff08;1&#xff09; 最近在学习《电子电路原理》&#xff0c;记录一下书后面试题目&#xff0c;答案为个人总结&#xff0c;欢迎讨论。 1.电压源和电流源的区别&#xff1f; 电压源在不同的负载电阻下可提供恒定的负载电压&#xff0c;而电流源对于…

Docker容器与虚拟化技术:Harbor私有仓库部署与迁移

目录 一、理论 1.本地私有仓库 2.Harbor 二、实验 1.Docker搭建本地私有仓库 2.docker-compose部署及配置 3.harbor部署及配置 4.登录创建项目 5.在其他客户端上传镜像 6. harbor维护 7.移除 Harbor 服务容器同时保留镜像数据/数据库&#xff0c;并进行迁移 三、问题…

ssm+vue校园教务系统源码和论文

ssmvue校园教务系统源码和论文086 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1、课题背景 信息系统的目的是让人可以高效的进行工作&#xff0c;包括对信息的一-系列操作&#xff0c;如添加信息、修改信…

论文阅读_扩散模型_SDXL

英文名称: SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 中文名称: SDXL&#xff1a;改进潜在扩散模型的高分辨率图像合成 论文地址: http://arxiv.org/abs/2307.01952 代码: https://github.com/Stability-AI/generative-models 时间: 2023-…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

Linux常用命令——dd命令

在线Linux命令查询工具 dd 复制文件并对原文件的内容进行转换和格式化处理 补充说明 dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的&#xff0c;对于一些比较底层的问题&#xff0c;使用dd命令往往可以得到出人意料的效果。用的比较多的还是…

【c语言】输出n行按如下规律排列的数

题述&#xff1a;输出n行按如下规律排列的数 输入&#xff1a; 4(应该指的是n) 输出: 思路&#xff1a; 利用下标的规律求解&#xff0c;考察数组下标的灵活应用&#xff0c;我们可以看出数从1开始是斜着往下放的&#xff0c;那么我们如何利用两层for循环求解这道题&#xff…

Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

Docker基础入门&#xff1a;容器数据卷与Dockerfile构建镜像&#xff08;发布&#xff09; 一、docker容器数据卷1.1、使用docker容器数据卷1.2、具名挂载、匿名挂载1.3、如何确定是具名挂载还是匿名挂载 二、使用dockerfile2.1 初识Dockerfile2.2 Dockerfile构建过程2.3 Docke…

JVM运行时参数查看

常用命令查找文档站点&#xff1a;https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值&#xff0c;默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案 一、背景描述二、报错原因三、解决方案 一、背景描述 从服务器MySQL中导出数据为SQL执行脚本后&#xff0c;在本地执行导出的SQL脚本。 报错&#xff1a;Unknown collation “utf8mb4_0900_ai_ci” …

IP 地址追踪工具

IP 地址跟踪工具是一种网络实用程序&#xff0c;允许您扫描、跟踪和获取详细信息&#xff0c;例如 IP 地址的 MAC 和接口 ID。IP 跟踪解决方案通过使用不同的网络扫描协议来检查网络地址空间来收集这些详细信息。一些高级 IP 地址跟踪器软件&#xff08;如 OpUtils&#xff09;…

RNN循环神经网络

目录 一、卷积核与循环核 二、循环核 1.循环核引入 2.循环核&#xff1a;循环核按时间步展开。 3.循环计算层&#xff1a;向输出方向生长。 4.TF描述循环计算层 三、TF描述循环计算 四、RNN使用案例 1.数据集准备 2.Sequential中RNN 3.存储模型&#xff0c;acc和lose…