
开发运营技巧(27 个系列)
文章平均质量分 51
开发运营技巧(27 个系列)
Q shen
分享
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
27.如何在日志中有颜色?
使用脚本总是有用的,尤其是当我们想要自动化很多事情时。但是,当我们想查看管道期间发生的事情并快速查看是否发生错误时,拥有这么多日志并无济于事。在此示例中,代码在 Go 中,但它适用于在 Bash 控制台中打印日志的每个系统。如果您忘记重新设置颜色并且没有定义另一种颜色,则定义的颜色将继续用于以下日志!现在您知道如何在日志中添加颜色了,我希望它能对您后续的管道和/或脚本有所帮助!要更改文本的颜色,您只需要添加如下所示的内容:\033[31m。在这个例子中,你可以问“为什么Reset每行的末尾都有一些?原创 2023-05-13 12:31:10 · 251 阅读 · 0 评论 -
26.评论有彩色原木吗?
实际上,如果您不重置并继续写入其他日志,您定义的最后一种颜色将保留用于下一个日志。为了能够改变文本的颜色,你只需要添加一些像这样的选择:\033[31m 事实上,正是这个小字符序列可以让你改变颜色。大多数这些脚本会生成大量日志,以便我们可以跟踪正在发生的事情,但是具有相同颜色的日志无助于能够一目了然地找到少数信息那有兴趣。结论 总之,您可以看到如何简单地使用彩色日志,我希望这能让您更轻松地阅读下一个管道和/或脚本的日志!例如,在 Go 中使用代码,并在控制台 Bash 中使用所有系统相关的日志。原创 2023-05-13 12:30:16 · 73 阅读 · 0 评论 -
25.在 Nginx 中设置身份验证
🍺当我们使用 Nginx 时,碰巧我们想要限制对某些 URL 和/或端点的访问。因此,为此,我们需要在 Nginx 中设置身份验证,这就是我们今天将要看到的。所以在你的配置文件中,像下面的例子一样添加auth_basic&参数,它应该是好的!所以在你的配置文件中,像下面的例子一样添加auth_basic&参数,它应该是好的!当我们使用 Nginx 时,碰巧我们想要限制对某些 URL 和/或端点的访问。因此,为此,我们需要在 Nginx 中设置身份验证,这就是我们今天将要看到的。使用 htpasswd。原创 2023-05-12 11:21:50 · 579 阅读 · 0 评论 -
24.如何改进 terragrunt 管道?
如果您在一个项目中使用 50 个 terragrunt 声明,默认情况下 terraform 将为每个声明下载提供程序!因为,默认情况下,providers 是在声明的文件夹中下载的。使用之前的解决方案,您的管道会加速很多,但可能会有很多线程同时启动并尝试对缓存文件进行一些更新。这样,您将限制并行执行的数量。然后你的东西会跑得更快,你不需要每次都下载所有的供应商。肯定会减慢执行速度,但您一定要避免文件冲突(例如)。因此,如果您始终使用相同的提供程序,请使用缓存!所以你可能会遇到一些“文本文件忙”错误。原创 2023-05-12 11:17:42 · 141 阅读 · 0 评论 -
23.混沌工程——一个毁灭的世界?
但它有更多的功能来测试周围的事物。只需对 GET 进行负载测试以始终检索相同的数据(例如,或始终添加新元素)可以帮助发现一些问题,但实际场景可能会使您的系统处于您从未想过的特定情况。所以今天,我们将开始讨论混沌工程,它是什么,我们可以做些什么来实现它而不破坏集群,并看到一些可以帮助您实现它的工具。这将是对混沌工程的简要介绍,如果您想了解更多信息或想要关于此处处理的特定主题的专门帖子,请在评论中告诉我。可以肯定的是,如果你想看看真实案例发生了什么,并且如果你想确保有适合你客户的东西,那么在生产中做是最好的。原创 2023-05-12 11:17:03 · 104 阅读 · 0 评论 -
22.软件性能测试——怎么做?[3]
通常,这是在设计期间完成的事情,但要确保您调用的所有 API 都可以支持您在所有环境中的流量。为了进行性能测试,我预知首先使用模拟对您的服务进行测试以仅检查您的服务,然后对所有其他服务进行测试。只是因为如果您的服务不能支持所需的数量,那么使用所有其他服务也无济于事。要测试您的 api,最简单的方法是使用专用工具,如JMeter或Gatling。在这两种情况下,如果出现瓶颈,您将不得不探索您的日志和监视器以了解发生了什么。在前面有关软件性能测试的部分中,我们了解了它是什么以及进行它的重要性。原创 2023-05-12 11:15:48 · 70 阅读 · 0 评论 -
21.如何编写 README?
本文档将为您提供创建高效自述文件的所有指南。此外,为了帮助您创建自述文件,还有大量非常酷的工具可供使用,例如。当您从事开源项目或与团队合作时,创建一个好的 README 始终是一个挑战。我们总是有很多关于我们可以做什么、添加、删除……如果您需要更多灵感,请不要犹豫,查看其他项目的 README 文件或查看一些帖子。因此,为了帮助您在可以做什么、应该做什么以及如何做方面有一个良好的开端,这里是创建一个 README 项目。Github Stats:显示有关您的 github 统计信息的一些信息。原创 2023-05-12 11:14:09 · 670 阅读 · 0 评论 -
20.如何在 AWS 中设置 HA/DR 数据库?[9 - 生成一个随机值]
十六进制数字:random_id.rdm_id.hex => 0774068a9a3a2791。例如,对于为快照生成唯一名称非常有用,您会看到有多个可用的定义,具体取决于您的需要。有了这个,你可以说“如果参数 X 和 Y 改变,那么随机值也必须改变”。在这一部分(也是本系列的最后一部分)中,我们将看到如何生成随机值。因此,为了确保附加内容时值发生变化,您可以使用keepers参数。在此示例中,每次全局集群示例的 arn 更改时,随机值都会更改。在这里您将检索输入列表的子列表,只有 2 个项目。原创 2023-05-12 11:11:26 · 92 阅读 · 0 评论 -
19.如何在 AWS 中设置 HA/DR 数据库?[8 - 多个地区的多个实例]
在本系列的这一部分中,我们将了解如何在一个 Terraform 脚本中创建并在一次执行中创建,以及如何在多个区域中创建元素。在您当前在 AWS 上创建内容的脚本中,您应该有一个AWS 提供商以及应该创建它的区域。因此,为您的所有区域复制/粘贴此块。如果您想立即创建所有基础设施和/或如果您想设置一些灾难恢复,这种技巧非常有用。在您拥有的每个资源中,添加提供者参数以将每个资源链接到正确的提供者。您现在可以一次在多个区域部署完整的基础设施!声明我们要为每个资源使用哪个提供者。声明我们要为每个资源使用哪个提供者。原创 2023-05-12 11:08:28 · 92 阅读 · 0 评论 -
18.如何在 AWS 中设置 HA/DR 数据库?[7 - 动态 Terraform 后端定义]
然后你只需要在使用 terraform 命令时提供正确的参数,你就可以用一个脚本定义多个基础设施!在这篇文章中,我们将看到在不修改代码的情况下在多个环境或多个项目中使用相同脚本非常有用的东西!因此,要拥有动态后端定义,您必须添加声明一些参数作为terraform init命令的选项。为了实现这个魔术,我们将动态定义用于存储 Terraform 状态的后端。bucket:要存储 Terraform 状态的 S3 存储桶的名称。首先,我们需要在脚本中声明我们要使用哪种后端。-后端配置=‘桶=测试’原创 2023-05-12 11:07:27 · 94 阅读 · 0 评论 -
17.如何在 AWS 中设置 HA/DR 数据库?[6 - 从快照创建]
注意:如果您从快照创建集群,则 master_username不会被您在脚本中定义的用户名覆盖,它会保留快照中定义的用户名,但master_username是。但是,当您对数据库进行大量更新时,您可能希望有一些东西可以返回到之前的最后状态,或者如果您正在将数据从一个数据库迁移到另一个数据库。如果您在此处定义一个值并运行您的脚本,您将创建所有元素,但带有快照的集群不会链接到全局数据库。当然,如果您有 DR 系统,您可能必须每天从快照创建全局数据库(我希望您也是如此)。然后,我们必须创建全局集群。原创 2023-05-12 11:06:18 · 126 阅读 · 0 评论 -
16.如何在 AWS 中设置 HA/DR 数据库?[5 - 灾难恢复数据库]
在 AWS Web 控制台中,选择您的全局数据库,然后在操作中您将拥有Fail over global database。但是某个区域不再可访问,或者如果您手动执行故障转移以更改主要区域,则第一个区域的读/写端点将被禁用,而新的主要区域中的一个将被启用。所以至少,我们需要在 2 个区域创建 2 个集群,我们将创建一个aws_rds_global_cluster。然后,在所有辅助集群上,您可以添加depends_on以确保它们将在全局集群和主要集群之后创建。对于另一个集群,只有只读端点可以工作。原创 2023-05-12 11:04:07 · 141 阅读 · 0 评论 -
15.如何在 AWS 中设置 HA/DR 数据库?[4 - HA 数据库]
为了更清晰地声明它并确保与集群具有相同的方式,您可以使用:aws_rds_cluster.default.engine和aws_rds_cluster.default.engine_version。为此,您需要创建一个aws_rds_cluster_parameter_group并将其链接到db_cluster_parameter_group_name参数中的集群。在本系列的这一部分中,我们将了解 AWS 中的简单数据库和高可用性数据库之间的区别,以及如何使用 Terraform 创建它。原创 2023-05-11 13:44:02 · 138 阅读 · 0 评论 -
14.如何在 AWS 中设置 HA/DR 数据库?[3 - 简单数据库]
注意:您可以在 aws_db_instance 中设置 parameter_group_name = “rds-group-perso” ,它也会起作用。enabled_cloudwatch_logs_exports - 设置要在 CloudWatch 中导出的所有日志类型。为此创建一个aws_db_parameter_group,并且像下面的示例一样,您可以更改编码。然后,您可以在aws_db_instance中正确更新该值以使用这个新创建的参数组。您可以使用具有 AWS 定义的默认值的组。原创 2023-05-11 13:41:48 · 106 阅读 · 0 评论 -
13.如何在 AWS 中设置 HA/DR 数据库?[2 - 定义]
AWS 区域中的所有可用区都通过高带宽、低延迟网络互连,通过完全冗余的专用城域光纤在可用区之间提供高吞吐量、低延迟网络。通过在单独的可用区中启动实例,您可以保护您的应用程序免受单个可用区故障的影响。它可以在不影响数据库性能的情况下复制您的数据,在每个区域实现低延迟的快速本地读取,并从区域范围的中断中提供灾难恢复。您可以将您的 AWS 资源(例如 Amazon EC2 实例)启动到您的 VPC 中。实例类型包括 CPU、内存、存储和网络容量的不同组合,让您可以灵活地为您的应用程序选择合适的资源组合。原创 2023-05-11 13:37:58 · 195 阅读 · 0 评论 -
12.如何在 AWS 中设置 HA/DR 数据库?[1]
就像相同的源代码生成相同的二进制文件的原理一样,IaC 模型在每次应用时都会生成相同的环境。各种灾难恢复 (DR) 方法都可以成为灾难恢复计划的一部分。在这个迷你系列中,我们将一起了解如何设置数据库,然后是高可用性(HA),然后是DR,以确保您和您的企业可以安全地存储数据,避免在发生故障时丢失并能够以在发生灾难时恢复您的数据。要正确理解接下来会发生什么,您需要了解 Terraform (它是如何工作的以及如何阅读它)并具有 AWS 的基础。还有一些提示,让您知道看什么会很有趣,或者如何做一些特定的事情。原创 2023-05-11 13:35:09 · 208 阅读 · 0 评论 -
11.在 AWS 中选择具有最大同时连接数的数据库实例类
按照 AWS 文档 ( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html#RDS_Limits.MaxConnections ),我们可以手动设置100 - 65 535之间的最大会话数。最少((16 * 1 073 741 824 / 9 868 951), 20 000)最少((16 * 1 073 741 824 / 9 531 392),5 000)数据库实例类内存 / 12 582 880。原创 2023-05-11 13:34:55 · 351 阅读 · 0 评论 -
10.DevOps - 部署策略
设置起来可能很复杂,尤其是微服务,如果您使用 Kafka 或 MQ 之类的东西,则更是如此。因此,如果您要使用它,请注意缺点并准备一个明确的策略,以避免每年有 45 个重大更改并同时支持 10 个版本。在使用辅助策略进行重大更改的情况下进行多版本部署,以确保不同版本的数量不会增加,并且所有消费者都将“快速”进行更新。您将用新版本替换您当前的一些实例,并且您将转移它上面的一些流量。仅当您有重大更改时才使用它。因此,不要将您的选择刻在石头上并接受您的解决方案,了解每个方案的所有优点/缺点,一切都应该没问题。原创 2023-05-11 13:34:05 · 267 阅读 · 0 评论 -
9.一些 DevOps 术语定义
基础设施即代码 (IaC) 是描述性模型中基础设施(网络、虚拟机、负载均衡器和连接拓扑)的管理,使用与 DevOps 团队用于源代码相同的版本控制。就像相同的源代码生成相同的二进制文件的原理一样,IaC 模型在每次应用时都会生成相同的环境。DevOps 自动化是一种技术的添加,它可以在减少人工协助的情况下执行任务,从而促进运营和开发团队之间的反馈循环,从而可以更快地将迭代更新部署到生产中的应用程序。“开发”和“运营”这两个词的融合,描述了开发和运营团队在软件开发和部署方面进行协作的设计理念。原创 2023-05-11 13:31:38 · 181 阅读 · 0 评论 -
8.给新人的 Terraform 技巧
结合条件表达式,我们可以定义脚本需要创建多少元素。因此,如果您要定义一个案例,脚本必须创建 0 个实例,那么您就有一个条件资源。locals是一个具有静态值(不能被变量覆盖)的对象,或者可以帮助从变量输入中创建一些值。您有很多可能性,这里有一些提示可以帮助您处理脚本。要根据条件创建一些元素,或创建资源的多个实例,我们可以使用count。如果条件为真,则使用true_val,否则为false_val。如果很简单,它看起来像 Java 中的三元条件。避免在多个资源中重新定义一个值非常有用。原创 2023-05-11 13:28:40 · 91 阅读 · 0 评论 -
7.EKS - 磁盘配置
您还可以监控 Cloudwatch 中的一些值(如果您的集群上有 cloudwatch 代理)以检查是否一切正常,并设置一些警报以了解是否发生了错误。按照 AWS 支持的建议,(在我的例子中)我需要将此值设置为150Go以便为您的所有 pod/images/deployments 留出一些空间…当您在 AWS (EKS)中拥有 Kubernetes 集群时,您将需要为每个节点的磁盘提供大量空间。这是我学到的一些小技巧,在 AWS 文档中并不清楚。如果你有这个链接,请发给我。原创 2023-05-11 13:25:28 · 170 阅读 · 0 评论 -
6. 如何在 Istio 中设置同一应用程序的两个版本之间的路由规则?
有了它,我们会说对于我们的服务(这里在主机元素中定义),我们有多个子组(子网)。今天,我们将使用它们来设置路由规则,以便能够使用同一应用程序的两个版本。在此示例中,如果 uri 以“/v1”开头,则流量将重定向到子网v1。现在我们能够区分我们的版本,我们可以使用 VirtualService 定义路由规则。如果应用程序的两个版本都有特定的服务来公开它,那么我们可以更进一步。只需这个小改动,我们就可以将流量重定向到只有一个标头的v1子网。否则,如果他们使用相同的服务,我们需要添加一些东西来区分他们。原创 2023-05-11 04:13:13 · 107 阅读 · 0 评论 -
5.如何在 Jenkins 中读写 pom?
读取部分看起来像Jenkins 中的所有其他读取函数(如 readYaml、readJSON…当我开始使用 Jenkins 和 Java 应用程序时,我很快就有了这些问题。写入部分非常简单,您只需返回从读取中检索到的pom对象;一旦我们知道了,我们就可以自动更改 pom 中的版本!我可以从 Jenkins 更新 pom 版本吗?所以今天,我们将看看如何去做!奖励 - 更新 pom 版本。如何能够阅读pom?原创 2023-05-10 13:18:57 · 674 阅读 · 0 评论 -
4. 我的项目应该使用哪个版本控制?- 版本系统比较
构建版本是分发给内部用户的全部或部分软件的构建,这些版本应该有针对性的功能增强和问题解决记录,以允许在实施更改的目标/特定区域进行测试。它通常包含新的面向客户的功能,并表示对包含软件产品或产品系列的代码库的重大更改,或者用于表示产品中的重大营销更改或方向。软件的次要版本可能包含多个分支版本的汇总,由内部或外部需求驱动的现有功能或界面的增强/扩展,外部需求可能由增强驱动以满足新的销售领域(国家特定功能或规则) ,内部要求可以是。同样基于 3 位数的版本控制,您和您的消费者可以更轻松地快速了解正在发生的事情。原创 2023-05-10 13:15:52 · 124 阅读 · 0 评论 -
3. 什么是 Changelog 以及如何编写?
但是,如果您和您的同事投入很多,并且可能同时在同一个项目中工作,那么您可能会失去正确的轨道。我们可以看到每个更新的一个 bloc,其中包含更新的日期、更新者的名称以及他们做了什么(在一行中和/或每个更新文件的详细信息)。在这里我们可以看到为项目创建的每个版本,以及添加、更改或删除内容的详细信息,以及每个类别中完成的内容。如果你想为你的项目或你的企业建立一个特定的标准,你可以!与此相关的是,我们可以添加更多信息,例如哪张票与其链接的更新相关…保留更新日志是一种新方式,它是您可以在开源项目中找到的主要标准。原创 2023-05-10 13:13:46 · 2154 阅读 · 0 评论 -
开发运营技巧(27 个系列)2.下一个 Jenkinsfile 的一个很酷的功能 - Closure
所以,闭包真的很有帮助!我能够创建一个通用方法来启动 docker 图像并在参数中提供一个闭包以在图像内部执行。Baeldung 闭包示例: https: //www.baeldung.com/groovy-closures。我遇到的一个案例是在特定的 docker 镜像中执行一些脚本。Groovy 文档: https: //groovy-lang.org/closures.html。Groovy 中的闭包是一个开放的、匿名的代码块,它可以接受参数、返回值并分配给变量。Apache Groovy 的定义。原创 2023-05-10 13:12:51 · 83 阅读 · 0 评论 -
开发运营技巧(27 个系列) 1. 声明一个简单的 REST API 网关 - Terraform
endpoint_configuration:定义端点配置类型如何选择端点配置:https://docs.aws.amazon.com/en_en/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html。然后,我们必须为每个暴露不同端点的子路径创建另一个资源。两个/users路径都公开了相同服务的方法,但每个/card 路径都公开了不同的方法。为此,首先我们必须为/users创建一个资源,为/cards 创建一个资源。原创 2023-05-10 13:10:42 · 123 阅读 · 0 评论