首页 > 其他分享 >Apollo(配置管理工具)

Apollo(配置管理工具)

时间:2024-06-13 11:22:21浏览次数:24  
标签:Apollo MINIO 配置管理 配置 namespace client 工具 apollo POSTGRES

介绍

Python读取配置参数通常使用处理yaml, conf配置文件和env环境变量,这种配置方式比较方便本地加载,在微服务分布式部署时对这些配置需要集中管理,并支持热更新则引入了Apollo  Apollo(阿波罗) 是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行 Apollo的优点如下:
  • 部署简单
  • 灰度发布
  • 版本发布管理
  • 提供开放平台API
  • 客户端配置信息监控
  • 配置修改实时生效(热发布)
  • 权限管理、发布审核、操作审计
  • 统一管理不同环境、不同集群的配置

安装部署

我们采用 Docker-Compose 方式来启动 Apollo ,参考Github项目 apollo-quick-start 中给出的介绍,可以方便地在本地启动 Apollo 。 下载 docker-compose.yml  sql 文件夹 到本地目录
- docker-quick-start
  - docker-compose.yml
  - sql
    - apolloconfigdb.sql
    - apolloportaldb.sql
  如果使用的是 arm 架构的机器,例如 mac m1,需要下载docker-compose-arm64.yml
docker-compose -f docker-compose-arm64.yml up -d
    如果是其他架构的机器,如x86,则直接启动
docker-compose up -d
    启动成功后,会默认启动一个MySQL数据库端口映射为13306,和一个apollo服务端,在浏览器中输入本地网址localhost:8070打开Apollo配置页面,账号apollo,密码admin

使用

参考 使用指南 
  1. 创建应用
image.png    
  1. 新增配置(客户端需要使用的配置变量和值)
image.png     在应用中可创建集群的配置和namespace 集群: 在有些特殊情况下,应用有需求对不同的集群做不同的配置,比如部署在A机房的应用连接的es服务器地址和部署在B机房的应用连接的es服务器地址不一样。 在这种情况下,可以通过在Apollo创建不同的集群来解决。 namespace: 在一些情况下,尽管应用本身不是公共组件,但还是需要在多个AppId之间共用同一份配置,比如同一个产品的不同项目:XX-Web, XX-Service, XX-Job等。 这种情况下如果希望实现多个AppId使用同一份配置的话,基本概念和公共组件的配置是一致的。 具体来说,就是在其中一个AppId下创建一个namespace,写入公共的配置信息,然后在各个项目中读取该namespace的配置即可。 如果某个AppId需要覆盖公共的配置信息,那么在该AppId下关联公共的namespace并写入需要覆盖的配置即可。  
  1. 发布配置
image.png    
  1. 管理秘钥并启用秘钥
image.png    
  1. 客户端连接apollo读取配置
image.png     apollo天然支持Java, Net连接,支持度较好,对于Python,支持度较好的第三方模块,这里使用 pyapollo 
pip install apollo-client==2.1.2
    使用python读取apollo中以上配置
# -*- coding: utf-8 -*-
from pyapollo.apollo_client import ApolloClient
​
app_id = "128"
config_server_url = "http://192.168.110.128:8090"
authorization = "f3ea9013c53b468bb749eb586a41a74a"
cache_file_path = 'my_apollo_config'
env = 'DEV'
namespace = 'application'
cluster = 'default'
client = ApolloClient(
            app_id=app_id,
            cluster=cluster,
            config_server_url=config_server_url,
            authorization=authorization,
            # cache_file_path=cache_file_path,
            env=env
        )
client.start()
# print(client.__dict__)
​
# get config from apollo
MINIO_SECRET_KEY = client.get_value(key="MINIO_SECRET_KEY", default_val="*", namespace=namespace)
MINIO_ACCESS_KEY = client.get_value(key="MINIO_ACCESS_KEY", default_val="**", namespace=namespace)
MINIO_URL = client.get_value(key="MINIO_URL", default_val="***", namespace=namespace)
timeout = client.get_value(key="timeout", default_val="*****", namespace=namespace)
qc_dict = client.get_value(key="qc_dict", default_val="*****", namespace=namespace)
is_delete = client.get_value(key="is_delete", default_val="*****", namespace=namespace)
a = client.get_value(key="a", default_val="*****", namespace=namespace)
print(MINIO_SECRET_KEY, type(MINIO_SECRET_KEY)) 
print(MINIO_ACCESS_KEY, type(MINIO_ACCESS_KEY))
print(MINIO_URL, type(MINIO_URL))
print(qc_dict, type(qc_dict))
print(timeout, type(timeout))
print(is_delete, type(is_delete))
print(a, type(a))
 
  结果输出:
admin <class 'str'>
admin123 <class 'str'>
192.168.110.237:9000 <class 'str'>
{
"a":"qqqq",
"b":123456
} <class 'str'>
10 <class 'str'>
false <class 'str'>
***** <class 'str'>

 

从apollo中读取的配置与通过使用os.getenv()方式获取环境变量方式值类型相同,都是字符串类型

项目中应用

项目中不是在启动项目时docker-compose文件中配置的变量如镜像号和部署路径等,在项目中使用的环境变量值可以使用apollo来集中管理处理 比如如下docker-compose文件中environment中的可以使用apollo来替换
 
version: '3'
services:
  data_manage:
    image: ${DATA_MANAGE_IMAGE}
    restart: always
    container_name: data_manage
    ports:
      - "8802:8000"
    environment:
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
      REDIS_HOST: ${REDIS_HOST}
      REDIS_PORT: ${REDIS_PORT}
      PYENV: ${PYENV}
    volumes:
      - /etc/localtime:/etc/localtime
      - ${DEPLOY_DIR}/logs/datamanage:/app/DataManage/logs
 

 

  在项目中使用pyapollo模块连接apollo服务端,在需要读取某个配置值直接从apollo中获取该配置 需要使用分布式部署apollo服务端以保证服务高可用稳定性,否则apollo宕时影像整个项目无法使用

标签:Apollo,MINIO,配置管理,配置,namespace,client,工具,apollo,POSTGRES
From: https://www.cnblogs.com/Mr-shen/p/18245537

相关文章

  • cwRsync小小的工具大大的坑——windows文件同步工具
    *cwRsync是linux工具:Rsync,在windows上的版本两台windos主机之间的某个或多个目录进行同步,源端安装服务端,目标端安装客户端下载地址:cwRsync:cwRsync文件同步工具下载内容如下cwRsyncServer_4.0.5_Installer.zip为服务端软件cwRsync_4.0.5_Installer.zip为客户端软件服......
  • 云平台DNS故障导致网站访问卡顿异常排查过程,wireshark、strace等工具在实际问题排查过
    一、问题现象    项目上使用华为私有云,前段时间华为升级云平台后,云上用户反馈业务系统出现卡顿,之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的url和curl调用方法。10.213.x.xxx:8082/files/logincurl-H"Content-Type:application/json"-H"T......
  • crane 容器镜像管理工具
    https://github.com/google/go-containerregistry/releases/download/v0.19.1/go-containerregistry_Linux_x86_64.tar.gzcraneauth登录或访问凭证cranedelete从其注册表中删除一个镜像引用cranedigest获取一个镜像的摘要cranels列出repo中的标签cranemanifest......
  • Tailor:视频编辑的魔法工具,免费又强大!
    TailorTailor是令人惊叹的视频编辑神器!其人脸和语音剪辑精准无比,人脸识别能锁定人物画面,语音捕捉和裁剪独具魅力。视频生成方面,口播生成赋予图像灵魂,字幕生成准确契合,色彩生成让黑白鲜活,音频生成创造无限可能。优化上,背景更换如入奇幻世界,流畅度与清晰度也极佳。Tailor......
  • 渗透测试工具NMAP
    nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。Nmap包含三项基本功能:(1)是扫描主机端口,嗅探所提供的网络服......
  • 二十一、Java工具类的创建
    什么是工具类?很好理解首先它是一个工具能完成某项功能。比如螺丝刀它是一个工具,能拧动螺丝。在Java中工具类就是能完成某项功能的类。比如定义一个数组工具类(ArrayTool),要求这个类无需创建对象就可以使用方法,且不可以创建对象,类包含的功能有,该类中没有主方法:1、数组的最......
  • 使用rpc和venom工具模拟隧道搭建
    环境Avps-外网(这里用电脑主机模拟)B双网卡主机-外网内网(这里用虚拟机搭建kali系统)C内网主机-内网(这里用虚拟机搭建centos系统)用到的工具rpc、venom全局代理工具:proxifier浏览器代理工具:switchomega步骤网卡配置B双网卡主机配置C内网主机配置2.服务......
  • 性能测试工具-JMeter
    官网:https://jmeter.apache.org/安装JMeter1.安装JDK下载地址:https://www.oracle.com/java/technologies/downloads/#jdk22-windows执行java--version查看版本2.安装JMeter下载地址:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.zip下载到本地......
  • httpclient,轻量级idea集成测试工具
    优点:不用新开一个网页,具有测试数据保存功能,不需要配置即用(对比swagger)   不会特别占内存(对比postman) 使用方法:idea中安装插件controller方法中点击 选择对应action 即可自动生成测试,点击左侧三角即可测试。但是数据内容需要自己填写如下:###分页查询POST{......
  • Ventoy 1.0.99 发布,创建可启动 U 盘的工具
    Ventoy是一个可为ISO/WIM/IMG/VHD(x)/EFI文件创建可启动USB驱动器的工具。虽然Ventoy是一个基于GPLv3许可的开源软件,但Ventoy项目需要支付服务器托管、域名、带宽、许多测试用的U盘等费用,因此为了使Ventoy更好地持续发展,官方提供了订阅服务。V......