Skip to main content
9、持续集成、快速反馈

9、持续集成、快速反馈

持续集成(Continuous Integration, CI)不仅是技术实践,更是构建高质量软件和高效团队协作的基石。它通过频繁的代码集成、自动化构建与测试,将开发过程中的风险前置,为持续交付奠定了坚实的基础。以下结合书中观点与个人思考,思考持续集成的意义、挑战与启示。

一、持续集成的核心:频繁集成,快速反馈

书中指出,持续集成的核心原则是开发人员每天多次将代码集成到主干,并通过自动化构建和测试快速验证代码的正确性。这一过程打破了传统开发中“各自为战”的模式,将分散的代码变更整合为一个稳定、可运行的整体。


Y-aong...About 5 mindevopsdevops
8、流水线是持续交付的心脏

8、流水线是持续交付的心脏

在阅读《持续交付2.0》的过程中,书中对“流水线的部署”的阐述让我深刻意识到:自动化部署流水线不仅是技术工具,更是持续交付体系的“心脏”。它将开发、测试、交付等环节串联为一个无缝衔接的价值流,是实现“持续交付是大家的事”这一理念的核心载体。

一、流水线部署:持续交付的“技术骨架”

书中指出,流水线的部署是验证环中的关键环节,它通过自动化将代码从开发到生产环境的路径标准化、可重复化。这一过程本质上是将“交付”从手工操作转化为机器可执行的流程,从而消除人为失误、缩短交付周期、提升可靠性。


Y-aong...About 5 mindevopsdevops
7、持续交付是大家的事

7、持续交付是大家的事

一、持续交付不仅仅是工程师的事

阅读《持续交付2.0》后,我深刻意识到,持续交付绝不仅仅是一个技术方案或流程工具,而是一场需要全员参与的组织文化革命。我建立了流水线就是持续交付了吗?我建立了完整的开发测试运维团队就是devops了吗?写了自动化就是devops了吗?

“持续交付双环模型”涉及企业内多个部门与角色的合作,需要相适应的企业文化。企业领导者必须成为这一变革的领导者,建立与之相适应的企业文化。说白了,如果一个工程师有很多的想法,如果领导保守不允许失败,那么这件事是必然失败的。

  • **失败是安全的:**组织应建立允许失败的文化,试验结果不应该用于直接评判个人,否则会使组织成员在设计方案时倾向于“为了证真而设计”,而非“为了证伪”。
  • **相互信任:**相互信任是高效合作的基础,也是组织凝聚力和成员士气的基础。如果组织成员之间缺乏信任,那么很容易出现相互猜忌、相互指责的现象,用不了多久,就会影响成员在组织内的安全感,降低工作效率。
  • **持续改善:**持续改善文化的特点是“人人参与”和“时时改善”。“人人参与”是指“持续改善”不应该只是组织中某个角色的责任,而应该是所有人的责任。“时时改善”是指“持续改善”应该是一项日常工作,而不应该只在特定时间或条件下才发生。

Y-aong...About 6 mindevopsdevops
6、持续交付中的探索验证环

6、持续交付中的探索验证环

一、什么是持续交付

《持续交付2.0》是一本由乔梁所著的书籍,它深入探讨了如何在现代软件开发环境中实施持续交付。

持续交付是建立在“可持续地快速发布软件服务”和“最小化可行产品”两种理念基础之上,强调要以业务为导向,从一开始就将业务问题进行分解,并通过不断的科学探索与快速验证,减少浪费的同时,快速找到正确的业务前进方向。其涉及组织中的多个团队,需要各个团队之间紧密合作。

“持续交付”的4个核心工作原则是坚持少做、持续分解问题、坚持快速反馈和持续改进并衡量。只有这样,才能不断缩短持续交付“8”字环的运行周期,提升用户反馈速度,从而提高业务的敏捷性。这要求管理者跳出原有软件交付管理思维模式,摆脱“害怕失败”的恐惧感,拥抱“科学探索—快速验证”思维方法,快速试错,提升持续交付能力,进而发展现有业务,并快速开创新业务。


Y-aong...About 6 mindevopsdevops
10、存储和配置

10、存储和配置

一、k8s的存储

1、必要条件安装nfs-utils

所有节点

# 所有机器安装nfs-utils
apt install -y nfs-utils

Y-aong...About 6 mink8s部署devops
11、网络Service

11、网络Service

一、service

定义

Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。

Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你通过网络暴露 Pod 组合。 每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。


Y-aong...About 7 mink8s部署devops
1、安装配置

1、安装配置

一、安装配置

  • 3台linux服务器,centos服务器本地设置2核4g

  • 三台机器设置组内互信可以互相ping通

  • 关闭机器的防火墙

二、基础安装配置

修改hostname

# 三台机器都要设置
hostnamectl set-hostname k8s-01
# 设置 hostname 解析
echo "127.0.0.1   $(hostname)" >> /etc/hosts

Y-aong...About 2 mink8s部署k8sdevops
2、基础概念

2、基础概念

Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统。

详细信息参阅官网

二、k8s对象

k8s里面操作的资源实体就是k8s的对象,可以使用yaml来声明对象,然后让k8s根据yaml的声明来创建出这个对象。Kubernetes对象指的是Kubernetes系统的持久化实体,所有这些对象合起来,代表了你集群的实际情况。常规的应用里,我们把应用程序的数据存储在数据库中,Kubernetes将其数据以Kubernetes对象的形式通过 api server存储在 etcd 中


Y-aong...About 7 mink8s部署devops
3、基础命令

3、基础命令

一、命令概述

# 初学者掌握的命令
Basic Commands (Beginner): 
  create        从文件或stdin中创建资源。
  expose        获取一个复制控制器、服务、部署或pod
# k8s服务
Kubernetes Service
  run           在集群上运行一个特定的映像
  set           设置对象的具体特性

Basic Commands (Intermediate): 基础命令
  explain       资源文档
  get           显示一个或多个资源
  edit          编辑服务器上的资源
  delete        按文件名、stdin、资源和名称或按资源和标签删除资源
  selector		选择器

Deploy Commands:   #部署用的命令
  rollout       管理资源的回滚
  scale         为部署控制器、复制集控制器或复制控制器设置新的大小
  autoscale     自动缩放Deployment、ReplicaSet、StatefulSet或ReplicationController


Cluster Management Commands:  #集群管理的命令
  certificate   修改证书资源。
  cluster-info  显示集群信息
  top           显示资源(CPU/内存)使用率。
  cordon        将节点标记为不可调度
  uncordon      将节点标记为可调度的
  drain         排水节点,为维护做好准备
  taint         更新一个或多个节点上的污点

Troubleshooting and Debugging Commands:  # debug的命令
  describe      打印pod中容器的日志
  logs          打印pod中容器的日志
  attach        附着在运行中的容器上
  exec          在容器中执行命令
  port-forward  将一个或多个本地端口转发到pod
  proxy         向Kubernetes API服务器运行代理
  cp            在容器中拷贝文件和目录。
  auth          检查授权
  debug         为故障排除工作负载和节点创建调试会话

Advanced Commands:  # 高阶命令
  diff          实际版本与潜在应用版本的差异
  apply         通过文件名或stdin将配置应用到资源
  patch         patch资源的更新字段
  replace       用文件名或标准输入替换资源
  kustomize     从一个目录或URL构建一个定制目标。

Settings Commands:  # 设置
  label         更新资源标签
  annotate      更新资源的注解
  completion    输出指定shell (bash或zsh) #的shell补全代码

Other Commands:  #其他
  api-resources 打印服务器上支持的API资源
  api-versions  打印服务器上支持的API版本,格式为"group/version"
  config        修改kubecconfig文件
  plugin        提供与插件交互的实用程序。
  version       打印客户端和服务器版本信息


Y-aong...About 4 mink8s部署devops
4、运行容器

4、运行容器

一、概念

1.1、容器

每个运行的容器都是可重复的; 包含依赖环境在内的标准,意味着无论你在哪里运行它都会得到相同的行为。

容器将应用程序从底层的主机设施中解耦。 这使得在不同的云或 OS 环境中部署更加容易。

Kubernetes 集群中的每个节点都会运行容器, 这些容器构成分配给该节点的 Pod。 单个 Pod 中的容器会在共同调度下,于同一位置运行在相同的节点上。


Y-aong...About 4 mink8s部署devops
2