DevOps之配置管理

简介: 配置与代码分离

什么是配置管理

在《持续交付—发布可靠软件的系统方法》一书是这样对配置管理进行定义的:

“配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一定义、修改、存储和检索。”


一个应用程序是由软件代码、运行数据以及配置信息共同组成。在 《12 因素应用》(The Twelve-Factor App)中提到,应用程序的配置在不同部署环境(开发环境、测试环境、生产环境等)之间会有很大的差异。比如:数据库连接地址、缓存连接地址、第三方证书等。因此,需要将代码和配置分离,通过配置文件屏蔽各个部署环境的差异。


12 因素应用中也推荐将应用的配置存储于环境变量中。环境变量可以非常方便地在不同的部署间做修改,却不用动一行代码。因此,这里的配置主要是指应用程序的配置,配置管理主要是指如何存储不同环境的应用程序配置,以保证各个环境使用的都是同一份代码。


配置信息的描述和存储

配置信息的描述

通常情况下,配置项以键值对的形式来表示,比如 spring.application.name=serviceA,这代表一个配置项。应用程序使用配置文件来存储多个配置项,通过层级来组织配置项,特别是当以 yaml 格式展现时,层级会更加清晰,这也是目前采用最多的展现形式。除此之外还有 properties、xml 等形式。


配置信息的存储

配置信息比较常见的存储形式有数据库、版本控制库、文件目录、环境变量等。下面介绍一下每种形式的优缺点。

  • 数据库:优点是可以充分利用数据库的检索功能,能够按不同的条件查询配置项,可以维护多个环境的配置。缺点是需要对配置项进行建模,开发单独的配置管理系统用于管理数据库中的配置项。另外,配置项的版本、版本的回退都需要单独维护。


  • 版本控制库:优点是可以充分利用版本控制库本身的特性,对配置项的变更进行版本控制和变更追溯,非常容易地获取任意时刻的版本以及版本的回退,并且不需要开发额外的系统。此外,它也能管理多个环境的配置。缺点是不支持单个配置项的查询功能,每次更新都需要全量更新。


  • 文件目录:优点是直接从本地获取,不依赖于其他系统。缺点是不能有效地进行版本控制,每个环境都是单独的文件目录,不能有效管理和控制多环境下的配置信息。


  • 环境变量:优点是方便设置与读取,能够更好地与脚本集成,与每个环境绑定。缺点是不能有效地进行版本控制。


配置管理的时机

在应用程序生命周期中,不少阶段可以对应用程序进行配置,比如构建、部署、启动、运行和发布阶段。下面介绍下这几个阶段的是如何进行配置的。

  • 构建阶段:在构建时,可以将配置文件直接添加到生成的二进制文件中。这种方式由于二进制文件与配置文件捆绑在一起,每个环境都需要生成一个单独的二进制文件,违反了12 因素应用中的原则,所以不推荐使用该方法。


  • 部署阶段:在安装应用程序时,部署脚本或安装程序获取必需的配置信息。这种方式可以保证在二进制文件是同一个,遵循了 12 因素应用中将代码和配置分离的原则。


  • 启动阶段:在应用程序启动时,将配置文件加载进来。该方式需要保证影响应用程序启动的配置信息能够获取,否则程序无法启动。


  • 运行时阶段:在应用程序运行时,动态的变更配置文件。该方式主要用于在不需要停止服务的情况下变更配置信息。


  • 发布阶段:是指在应用程序真正发布上线的时候,将配置文件改为生产环境的版本。该方式只是用于生产环境发布,由于此时发布的软件和之前测试的是同一个,因此测试通过是具备发布上线条件的。


配置管理的实现方式

配置管理目前常见的实现方式:

  • 有 Spring Boot 的 Profile 形式;
  • 基于 Git 的配置管理;
  • 配置管理系统如携程的 Apollo;
  • 配置管理数据库 CMDB。


目录
相关文章
|
安全 Devops Ruby
2019 DevOps 必备面试题——配置管理篇
原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3 原文作者:Saurabh Kulshrestha 翻译君:CODING 戴维奥普斯 现在让我们来看看您对配置管理的了解程度。
|
1月前
|
运维 安全 Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在数字化转型的浪潮中,企业对于IT基础设施的要求越来越高,不仅需要快速响应市场变化,还要确保系统的稳定与安全。本文深入探讨了如何通过融合DevOps文化和容器化技术来构建一个高效、稳定且易于管理的云基础设施。通过实际案例分析,阐述了持续集成/持续部署(CI/CD)流程的优化、自动化测试、监控以及日志管理等关键环节的实施策略,旨在为运维专业人员提供一套切实可行的解决方案。
29 3
|
1月前
|
运维 Kubernetes Devops
构建高效可靠的云基础设施:DevOps与容器化技术融合实践
【2月更文挑战第30天】 在当今快速迭代和竞争激烈的软件开发领域,传统的IT运维模式已难以满足业务发展的需要。本文将探讨如何通过整合DevOps文化和容器化技术,构建一个既高效又可靠的云基础设施。文章首先回顾了DevOps的核心理念及其对运维工作流的影响,接着深入讨论了容器化技术的优势和挑战,并提出了一套结合两者的实施方案。最后,通过案例分析展示了该方案在实际环境中的应用效果和潜在益处。
|
10天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
12天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第13天】 在当今快速迭代和持续部署的软件开发环境中,传统的IT运维模式已难以满足业务发展的需求。本文聚焦于如何通过融合DevOps理念与容器化技术,构建一个高效、稳定且易于管理的云基础设施。文章将探讨持续集成/持续交付(CI/CD)流程的优化、容器化技术的最佳实践、以及微服务架构下的应用管理,以期为企业提供一种改进运维效率、加速产品上市时间,同时保障系统稳定性的解决方案。
|
27天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
随着企业数字化转型的不断深入,传统的IT运维模式已经难以满足快速迭代和持续交付的需求。本文将探讨如何通过结合DevOps文化与容器化技术,构建一个既高效又稳定的云基础设施。文章首先概述了DevOps的核心理念及其在现代运维中的重要性,然后详细介绍了容器化技术,特别是Docker和Kubernetes在实现微服务架构中的应用。最后,文中通过案例分析展示了这一融合实践如何在真实环境中提升运维效率和系统稳定性。
21 7
|
30天前
|
运维 Kubernetes 监控
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在当今云计算时代,企业追求敏捷性、可扩展性以及成本效益的云基础设施。本文将探讨如何通过DevOps文化与容器化技术的融合,打造一个既高效又稳定的运维环境。文章不仅阐述了DevOps和容器化技术各自的优势,还提供了一个具体的实施案例,展示了这种结合如何优化资源利用、提高部署速度并降低运维复杂性。
|
3月前
|
运维 监控 Devops
构建协同创新的未来:DevOps文化与实践
在当今快节奏的技术世界中,DevOps文化和实践成为了企业实现卓越软件交付和持续创新的关键。本文将探讨DevOps的核心原则、实施步骤以及它如何促进团队协作、提高效率,并引领着未来协同创新的道路。
28 2

热门文章

最新文章