TOC

《企业级 Go 项目开发实战》目录

主要是参考一下这个目录,对照着查漏补缺。

这是一本手把手教读者如何零基础快速掌握企业级 Go 项目全流程开发的实战性著作。
内容初稿源于极客时间上的专栏(有超过 25000 人付费学习),图书内容在专栏的基础上做了全面的更新和大量的补充。

作者是腾讯云的技术专家,有多年的企业级 Go 项目开发经验。

全书围绕一个可部署、可运行的企业级 Go 应用(附源码,可二次开发)展开,覆盖项目全生命周期的所有环节,
不仅将每个环节涉及的原理、步骤讲解得非常详细,而且把项目涉及的 Go 语言知识点全部娓娓道来。
每个知识点都朝着最佳实践方向去设计,采用了业界共识程度最高的 Go 包、Go 设计模式、Go 开发规范、Go 简洁架构等,
不仅能让读者事半功倍地掌握企业级 Go 项目的开发方法,而且能学到一线大厂的最佳实践。

本书内容翔实,篇幅较大,一共 31 章,分为六个部分:
第一部分是项目开始前的准备工作,包括贯穿全书的实战项目 IAM 的介绍与部署,以及 Go 开发环境的搭建;
第二至六部分详细讲解了项目的设计、管理、开发、测试、部署等。
包含了规范设计、文档编写、开发流程管理、功能设计与实现、项目测试、性能优化、高可用、高安全、水平扩展等方方面面。
旨在帮助读者彻底学会如何构建企业级 Go 项目,并解决 Go 项目开发所面临的各类问题。

腾讯云容器技术专家,曾就职于联想和 Red Hat,拥有多年 Go 项目开发和管理经验。
云计算技术专家,在云计算领域有非常丰富的实践经验。
Kubernetes 社区贡献者,对 Kubernetes、Docker、Serverless、微服务等技术有深入的理解。
腾讯学院特约讲师,极客时间《Go 语言项目开发实战》专栏作者,掘金《基于 Go 语言构建企业级的 RESTful API 服务》专栏作者。

第一部分 项目准备

第 1 章 Go 开发环境准备

  • 1.1 机器选择
  • 1.1.1 开发机选择
  • 1.1.2 办公机选择
  • 1.2 Windows 终端模拟器安装和配置
  • 1.3 Linux 服务器申请和配置
  • 1.3.1 Linux 服务器申请
  • 1.3.2 登录 Linux 服务器
  • 1.3.3 Linux 服务器配置
  • 1.3.4 依赖安装和配置
  • 1.4 Go 编译环境安装和配置
  • 1.4.1 Go 编译工具安装和配置
  • 1.4.2 Protobuf 编译环境安装
  • 1.5 Go IDE 安装和配置
  • 1.6 本章总结

第 2 章 快速部署 IAM 系统

  • 2.1 为什么选择 IAM 系统作为实战项目
  • 2.2 IAM 系统概述
  • 2.2.1 IAM 资源授权流程
  • 2.2.2 IAM 系统架构介绍
  • 2.2.3 通过使用流程理解架构
  • 2.3 下载 IAM 项目代码
  • 2.4 安装和配置数据库
  • 2.4.1 配置 scripts/install/environment.sh
  • 2.4.2 安装和配置 MariaDB
  • 2.4.3 安装和配置 Redis
  • 2.4.4 安装和配置 MongoDB
  • 2.5 安装和配置 IAM 系统
  • 2.5.1 准备工作
  • 2.5.2 安装和配置 iam-apiserver
  • 2.5.3 安装 iamctl
  • 2.5.4 安装和配置 iam-authz-server
  • 2.5.5 安装和配置 iam-pump
  • 2.5.6 安装和配置 iam-watcher
  • 2.5.7 安装 man 文件
  • 2.5.8 测试 IAM 系统是否安装成功
  • 2.6 彩蛋:一键安装
  • 2.7 本章总结

第二部分 项目设计

第 3 章 规范设计

  • 3.1 有哪些地方需要制定规范
  • 3.2 开源规范
  • 3.2.1 开源协议概述
  • 3.2.2 开源协议选择
  • 3.2.3 开源规范有什么
  • 3.2.4 开源规范详细内容
  • 3.2.5 运营开源项目
  • 3.3 文档规范
  • 3.3.1 README 文档规范
  • 3.3.2 项目文档规范
  • 3.3.3 API 文档规范
  • 3.4 Commit Message 规范
  • 3.4.1 Commit Message 规范有哪些
  • 3.4.2 与 Commit Message 相关的 3 个重要内容
  • 3.4.3 Commit Message 规范自动化
  • 3.5 版本规范
  • 3.5.1 什么是语义化版本规范
  • 3.5.2 语义化版本规范示例
  • 3.5.3 如何确定版本号
  • 3.6 本章总结

第 4 章 目录结构设计

  • 4.1 如何规范目录
  • 4.2 平铺式目录结构
  • 4.3 结构化目录结构
  • 4.3.1 Go 应用:主要存放前后端代码
  • 4.3.2 Go 应用:主要存放测试相关的文件和代码
  • 4.3.3 Go 应用:存放与应用部署相关的文件
  • 4.3.4 项目管理:存放管理 Go 项目的各类文件
  • 4.3.5 文档:主要存放项目的各类文档
  • 4.3.6 不建议的目录
  • 4.4 一些建议
  • 4.5 本章总结

第 5 章 工作流设计

  • 5.1 集中式工作流
  • 5.2 功能分支工作流
  • 5.3 Git Flow 工作流
  • 5.3.1 Git Flow 的 5 种分支
  • 5.3.2 Git Flow 开发流程
  • 5.4 Forking 工作流
  • 5.5 本章总结

第 6 章 研发流程设计

  • 6.1 如何设计 Go 项目的研发流程
  • 6.2 在设计研发流程时,需要关注哪些点
  • 6.3 业界相对标准的研发流程
  • 6.3.1 需求阶段
  • 6.3.2 设计阶段
  • 6.3.3 开发阶段
  • 6.3.4 测试阶段
  • 6.3.5 发布阶段
  • 6.3.6 运营阶段
  • 6.4 角色与分工
  • 6.5 如何管理应用的生命周期
  • 6.6 应用生命周期管理技术有哪些
  • 6.7 研发模式
  • 6.8 CI/CD:自动化构建和部署应用
  • 6.8.1 持续集成
  • 6.8.2 持续交付
  • 6.8.3 持续部署
  • 6.9 DevOps:研发运维一体化
  • 6.9.1 AIOps:智能运维
  • 6.9.2 ChatOps:聊着天就把事情给办了
  • 6.9.3 GitOps:一种实现云原生的持续交付模型
  • 6.9.4 NoOps:无运维
  • 6.10 如何选择合适的应用生命周期管理技术
  • 6.11 本章总结

第 7 章 如何写出优雅的 Go 项目

  • 7.1 优雅 Go 项目实现思路
  • 7.2 编写高质量的 Go 应用
  • 7.2.1 代码结构
  • 7.2.2 代码规范
  • 7.2.3 代码质量
  • 7.2.4 编程哲学
  • 7.2.5 软件设计方法
  • 7.3 高效管理项目
  • 7.3.1 高效的开发流程
  • 7.3.2 使用 Makefile 管理项目
  • 7.3.3 自动生成代码
  • 7.3.4 善于借助工具
  • 7.3.5 对接 CI/CD
  • 7.4 编写高质量的项目文档
  • 7.5 本章总结

第 8 章 Go 语言设计模式?

  • 8.1 创建型模式
  • 8.1.1 单例模式
  • 8.1.2 工厂模式
  • 8.2 行为型模式
  • 8.2.1 策略模式
  • 8.2.2 模板模式
  • 8.3 结构型模式
  • 8.3.1 代理模式
  • 8.3.2 选项模式
  • 8.4 本章总结

第三部分 项目管理

第 9 章 如何编写 Makefile

  • 9.1 规划 Makefile 要实现的功能
  • 9.2 设计合理的 Makefile 结构
  • 9.3 掌握 Makefile 编写技巧
  • 9.3.1 善用通配符和自动变量
  • 9.3.2 善用函数
  • 9.3.3 依赖需要用到的工具
  • 9.3.4 把常用功能放在/Makefile 中,不常用的放在分类 Makefile 中
  • 9.3.5 编写可扩展的 Makefile
  • 9.3.6 将所有输出存放在一个目录下,方便清理和查找
  • 9.3.7 使用带层级的命名方式
  • 9.3.8 做好目标拆分
  • 9.3.9 设置 OPTIONS
  • 9.3.10 定义环境变量
  • 9.3.11 自己调用自己
  • 9.4 本章总结

第 10 章 IAM 项目研发流程实战

  • 10.1 开发阶段
  • 10.1.1 代码开发
  • 10.1.2 代码提交
  • 10.2 测试阶段
  • 10.3 IAM 项目的 Makefile 项目管理技巧
  • 10.3.1 Makefile help 命令自动解析
  • 10.3.2 在 options 中指定变量值
  • 10.3.3 自动生成 CHANGELOG
  • 10.3.4 自动生成版本号
  • 10.3.5 保持行为一致
  • 10.4 本章总结

第 11 章 静态代码检查

  • 11.1 为什么选择 golangci-lint 做静态代码检查
  • 11.2 golangci-lint 命令
  • 11.3 golangci-lint 配置
  • 11.4 如何使用 golangci-lint 进行静态代码检查
  • 11.5 golangci-lint 使用技巧
  • 11.6 本章总结

第 12 章 生成 Swagger API 文档

  • 12.1 Swagger 介绍
  • 12.2 Swagger 和 OpenAPI 的区别
  • 12.3 用 go-swagger 来生成 Swagger API 文档
  • 12.3.1 安装 swagger 工具
  • 12.3.2 swagger 命令行工具介绍
  • 12.4 如何使用 swagger 命令生成 Swagger 文档
  • 12.4.1 解析注释生成 Swagger 文档
  • 12.4.2 go-swagger 其他常用功能介绍
  • 12.5 IAM Swagger 文档
  • 12.6 本章总结

第四部分 项目开发

第 13 章 错误处理

  • 13.1 错误码设计
  • 13.1.1 期望错误码实现的功能
  • 13.1.2 常见的错误码实现方式
  • 13.1.3 错误码设计建议
  • 13.1.4 业务 Code 码设计
  • 13.1.5 如何设置 HTTP 状态码
  • 13.2 IAM 项目错误码设计规范
  • 13.2.1 错误码设计规范
  • 13.2.2 错误信息规范说明
  • 13.2.3 IAM API 返回值说明
  • 13.3 错误包
  • 13.3.1 错误包需要具有哪些功能
  • 13.3.2 错误包的实现
  • 13.3.3 如何记录错误
  • 13.4 一个错误码的具体实现
  • 13.5 错误码实际使用示例
  • 13.6 本章总结

第 14 章 日志处理

  • 14.1 如何设计日志包
  • 14.1.1 基础功能
  • 14.1.2 高级功能
  • 14.1.3 可选功能
  • 14.1.4 设计时需要关注的点
  • 14.2 如何记录日志
  • 14.2.1 在何处打印日志
  • 14.2.2 在哪个日志级别打印日志
  • 14.2.3 如何记录日志内容
  • 14.2.4 记录日志的佳实践总结
  • 14.3 拓展内容:分布式日志解决方案(EFK/ELK)
  • 14.4 有哪些优秀的开源日志包
  • 14.4.1 标准库 log 包
  • 14.4.2 glog
  • 14.4.3 logrus
  • 14.4.4 zap
  • 14.4.5 开源日志包选择
  • 14.5 从零开始编写一个日志包
  • 14.5.1 定义日志级别和日志选项
  • 14.5.2 创建 Logger 及各级别日志打印方法
  • 14.5.3 将日志记录到支持的输出中
  • 14.5.4 自定义日志输出格式
  • 14.5.5 测试日志包
  • 14.6 IAM 项目日志包设计实战
  • 14.7 本章总结

第 15 章 GORM ORM 应用

  • 15.1 GORM 基础知识
  • 15.2 通过示例学习 GORM
  • 15.2.1 自动迁移表结构
  • 15.2.2 插入表记录
  • 15.2.3 获取符合条件的记录
  • 15.2.4 更新表记录
  • 15.2.5 删除表记录
  • 15.2.6 获取表记录列表
  • 15.3 GORM 常用操作讲解
  • 15.3.1 模型定义
  • 15.3.2 连接数据库
  • 15.3.3 创建记录
  • 15.3.4 删除记录
  • 15.3.5 更新记录
  • 15.3.6 查询数据
  • 15.3.7 高级查询
  • 15.3.8 原生 SQL
  • 15.3.9 GORM 钩子
  • 15.4 iam-apiserver 中的 CURD 操作
  • 15.5 本章总结

第 16 章 Web 服务功能实现

  • 16.1 Web 服务的核心功能
  • 16.1.1 基础功能
  • 16.1.2 高级功能
  • 16.2 Web 框架为什么选择 Gin
  • 16.3 Gin 是如何支持 Web 服务的基础功能的
  • 16.3.1 HTTP/HTTPS 支持
  • 16.3.2 JSON 数据格式支持
  • 16.3.3 路由匹配
  • 16.3.4 路由分组
  • 16.3.5 一进程多服务
  • 16.3.6 参数解析、参数校验、逻辑处理、返回结果
  • 16.4 Gin 是如何支持 Web 服务的高级功能的
  • 16.4.1 中间件
  • 16.4.2 认证、RequestID、跨域
  • 16.4.3 优雅关停
  • 16.5 本章总结

第 17 章 IAM 应用构建

  • 17.1 如何构建应用框架
  • 17.2 应用构建三剑客
  • 17.2.1 命令行参数解析工具:Pflag
  • 17.2.2 配置解析神器:Viper
  • 17.2.3 现代化的命令行框架:Cobra
  • 17.3 构建应用的基础:应用的三大基本功能
  • 17.4 iam-apiserver 是如何构建应用框架的
  • 17.5 App 包的设计和实现
  • 17.5.1 构建应用
  • 17.5.2 命令行程序构建
  • 17.5.3 命令行参数解析
  • 17.5.4 配置文件解析
  • 17.6 IAM 应用构建的优秀特性
  • 17.7 构建应用的注意事项
  • 17.8 本章总结

第 18 章 IAM 认证功能实现

  • 18.1 认证与授权的区别
  • 18.2 4 种基本的认证方式
  • 18.2.1 基础认证
  • 18.2.2 摘要认证
  • 18.2.3 开放授权认证
  • 18.2.4 令牌认证
  • 18.3 基于 JWT 的 Token 认证机制实现
  • 18.3.1 JWT 简介
  • 18.3.2 JWT 认证流程
  • 18.3.3 JWT 格式
  • 18.4 如何设计 IAM 项目的认证功能
  • 18.5 IAM 项目是如何实现 Basic 认证的
  • 18.6 IAM 项目是如何实现 Bearer 认证的
  • 18.6.1 iam-authz-server Bearer 认证实现
  • 18.6.2 iam-apiserver Bearer 认证实现
  • 18.7 IAM 项目认证功能设计技巧
  • 18.8 本章总结

第 19 章 IAM API 服务构建

  • 19.1 RESTful API 介绍
  • 19.1.1 什么是 RESTful API
  • 19.1.2 RESTful API 设计原则
  • 19.1.3 RESTful API 示例
  • 19.2 RPC API 介绍
  • 19.2.1 什么是 RPC
  • 19.2.2 gRPC 简介
  • 19.2.3 Protocol Buffers 介绍
  • 19.2.4 gRPC 示例
  • 19.3 REST 与 gRPC
  • 19.4 iam-apiserver 服务介绍
  • 19.4.1 iam-apiserver 功能介绍
  • 19.4.2 iam-apiserver 使用方法介绍
  • 19.5 iam-apiserver 代码实现
  • 19.5.1 iam-apiserver 配置处理
  • 19.5.2 iam-apiserver 启动流程
  • 19.5.3 iam-apiserver 的 RESTful API 请求处理流程
  • 19.5.4 iam-apiserver 代码架构
  • 19.6 iam-apiserver 服务核心功能实现讲解
  • 19.6.1 与应用框架相关的特性
  • 19.6.2 与编程规范相关的特性
  • 19.6.3 其他特性
  • 19.7 本章总结

第 20 章 IAM Authz 服务构建

  • 20.1 权限基础知识介绍
  • 20.1.1 权限相关术语介绍
  • 20.1.2 权限模型介绍
  • 20.1.3 相关开源项目
  • 20.1.4 开源项目选择建议
  • 20.2 iam-authz-server 的功能介绍
  • 20.2.1 github.com/ory/ladon 包介绍
  • 20.2.2 iam-authz-server 使用方法介绍
  • 20.3 iam-authz-server 的代码实现
  • 20.3.1 iam-authz-server 的配置处理
  • 20.3.2 iam-authz-server 启动流程
  • 20.3.3 iam-authz-server 的 RESTful API 请求处理流程
  • 20.3.4 iam-authz-server 的代码架构
  • 20.4 iam-authz-server 关键代码分析
  • 20.4.1 资源授权
  • 20.4.2 缓存设计
  • 20.4.3 数据一致性
  • 20.5 本章总结

第 21 章 IAM Pump 服务构建

  • 21.1 数据采集方式的分类
  • 21.2 数据采集系统设计
  • 21.2.1 设计时需要解决的核心问题
  • 21.2.2 数据上报功能设计
  • 21.2.3 数据采集功能设计
  • 21.2.4 数据采集应用模型
  • 21.3 数据采集系统落地项目:iam-authz-server+iam-pump
  • 21.3.1 iam-authz-server:数据上报设计
  • 21.3.2 启动数据上报服务
  • 21.3.3 异步上报授权日志
  • 21.3.4 优雅关停数据上报
  • 21.4 iam-pump:数据采集设计
  • 21.4.1 数据采集插件定义
  • 21.4.2 初始化数据采集插件
  • 21.4.3 健康检查
  • 21.4.4 定期消费 Redis 数据
  • 21.4.5 优雅关停数据采集服务
  • 21.4.6 使用分布式锁机制,避免重复消费
  • 21.5 本章总结

第 22 章 分布式作业系统设计与实现

  • 22.1 任务分类
  • 22.2 作业系统的常见实现
  • 22.3 IAM 作业系统设计与实现
  • 22.3.1 IAM 作业系统实现所使用的 Go 包
  • 22.3.2 IAM 作业系统特点
  • 22.3.3 IAM 作业系统实现
  • 22.3.4 IAM 作业系统实现解读
  • 22.4 本章总结

第 23 章 IAM SDK 设计与实现

  • 23.1 什么是 SDK
  • 23.2 SDK 设计要点
  • 23.2.1 如何给 SDK 命名
  • 23.2.2 SDK 的目录结构
  • 23.2.3 SDK 的设计方法
  • 23.3 公有云厂商采用的 SDK 设计方式
  • 23.3.1 API 层:创建客户端实例
  • 23.3.2 基础层:构建并执行 HTTP 请求
  • 23.4 marmotedu-sdk-go 客户端设计与创建
  • 23.4.1 marmotedu-sdk-go 客户端设计
  • 23.4.2 项目级别客户端创建
  • 23.4.3 应用级别客户端创建
  • 23.4.4 服务级别客户端创建
  • 23.5 marmotedu-sdk-go 的实现
  • 23.5.1 RESTClient 客户端实现
  • 23.5.2 Request 模块实现
  • 23.5.3 请求认证
  • 23.6 本章总结

第 24 章 IAM 客户端工具构建

  • 24.1 常见客户端介绍
  • 24.2 大型系统客户端的特点
  • 24.3 iamctl 的核心实现
  • 24.3.1 iamctl 的功能
  • 24.3.2 iamctl 代码结构
  • 24.3.3 iamctl 命令行选项
  • 24.3.4 iamctl 配置文件解析
  • 24.4 iamctl 中子命令是如何构建的
  • 24.4.1 如何优雅地构建一个命令
  • 24.4.2 自动生成命令
  • 24.4.3 命令自动补全
  • 24.4.4 更友好的输出
  • 24.5 iamctl 是如何调用 API 的
  • 24.5.1 客户端配置文件
  • 24.5.2 SDK 调用
  • 24.5.3 RESTful API 调用
  • 24.6 本章总结

第五部分 项目测试

第 25 章 代码测试

  • 25.1 如何测试 Go 代码
  • 25.2 测试命名规范
  • 25.2.1 测试文件的命名规范
  • 25.2.2 测试包的命名规范
  • 25.2.3 测试函数的命名规范
  • 25.2.4 测试变量的命名规范
  • 25.3 4 种基本测试类型
  • 25.3.1 单元测试
  • 25.3.2 性能测试
  • 25.3.3 模糊测试
  • 25.3.4 示例测试
  • 25.4 Go 语言其他测试类型
  • 25.4.1 TestMain 函数
  • 25.4.2 Mock 测试
  • 25.4.3 Fake 测试
  • 25.5 何时编写和执行单元测试用例
  • 25.5.1 编码前:TDD 测试
  • 25.5.2 编码中:增量测试
  • 25.5.3 编码后:存量测试
  • 25.6 测试覆盖率
  • 25.7 IAM 项目测试实战
  • 25.7.1 IAM 项目是如何执行测试用例的
  • 25.7.2 IAM 项目测试案例分享
  • 25.8 其他测试工具和包
  • 25.9 本章总结

第 26 章 性能分析

  • 26.1 生成性能数据文件
  • 26.1.1 通过命令行生成性能数据文件
  • 26.1.2 通过代码生成性能数据文件
  • 26.1.3 通过 net/http/pprof 生成性能数据文件
  • 26.2 生成 IAM 测试用例的性能数据
  • 26.3 CPU 性能分析
  • 26.4 内存性能分析
  • 26.5 本章总结

第 27 章 API Server 性能测试和调优

  • 27.1 API 性能测试指标
  • 27.2 API 性能测试方法
  • 27.2.1 Wrk 的安装方法
  • 27.2.2 Wrk 的使用方法
  • 27.3 API Server 性能测试实践
  • 27.3.1 性能测试脚本介绍
  • 27.3.2 关闭 Debug 配置选项
  • 27.3.3 使用 wrktest.sh 测试 IAM API 性能
  • 27.4 API Server 性能分析
  • 27.5 API Server 性能测试注意事项
  • 27.6 本章总结

第六部分 项目部署

第 28 章 基于虚拟机部署 IAM 系统

  • 28.1 部署方案
  • 28.2 Nginx 安装和配置
  • 28.2.1 Nginx 功能简介
  • 28.2.2 Nginx 安装和配置步骤
  • 28.2.3 Nginx 常用命令
  • 28.3 Keepalived 安装和配置
  • 28.3.1 Keepalived 介绍
  • 28.3.2 Keepalived 安装步骤
  • 28.3.3 Keepalived 配置文件解析
  • 28.4 部署 IAM 系统
  • 28.4.1 部署 IAM 系统中的服务
  • 28.4.2 配置 Nginx 作为反向代理
  • 28.4.3 配置 Nginx 处理负载均衡
  • 28.4.4 配置 Keepalived
  • 28.5 IAM 系统安全性加固
  • 28.5.1 iptables 简介
  • 28.5.2 网络数据包处理流程
  • 28.5.3 iptables 工具的使用
  • 28.5.4 IAM 安全加固(内网不安全)
  • 28.5.5 IAM 安全加固(内网安全)
  • 28.6 弹性伸缩
  • 28.6.1 系统扩容
  • 28.6.2 系统缩容
  • 28.7 本章总结

第 29 章 IAM 容器化部署

  • 29.1 Docker 镜像的构建原理和方式
  • 29.1.1 通过 docker commit 命令构建镜像
  • 29.1.2 通过 Dockerfile 来构建镜像
  • 29.1.3 其他镜像构建方式
  • 29.2 编写 Dockerfile 文件
  • 29.2.1 Dockerfile 指令介绍
  • 29.2.2 Dockerfile 佳实践
  • 29.3 编写 Kubernetes 资源定义文件
  • 29.3.1 为什么选择 YAML 格式来定义 Kubernetes 资源
  • 29.3.2 Kubernetes 资源定义概述
  • 29.3.3 常用的 Kubernetes 资源定义
  • 29.3.4 YAML 文件编写技巧
  • 29.3.5 使用 Kubernetes YAML 时的一些推荐工具
  • 29.4 Kubernetes 部署实战:部署准备工作
  • 29.4.1 开通腾讯云容器服务镜像仓库
  • 29.4.2 安装 Docker
  • 29.4.3 准备一个 Kubernetes 集群
  • 29.5 Kubernetes 部署实战:安装 IAM 系统
  • 29.6 Kubernetes 部署实战:测试 IAM 系统
  • 29.7 Kubernetes 部署实战:销毁 Serverless 集群及其资源
  • 29.8 本章总结

第 30 章 Helm 应用部署

  • 30.1 Helm 基础知识介绍
  • 30.1.1 Helm 是什么
  • 30.1.2 Helm 中的三大基本概念
  • 30.1.3 我们为什么要使用 Helm
  • 30.2 Helm 基本操作实战
  • 30.2.1 安装 Helm
  • 30.2.2 Helm 快速入门
  • 30.2.3 Helm 命令
  • 30.3 使用 Helm 部署 IAM 系统
  • 30.3.1 制作 IAM Chart 包
  • 30.3.2 IAM Chart 包部署
  • 30.3.3 多环境部署 IAM 系统
  • 30.4 本章总结

第 31 章 基于 GitHub Actions 的 CI 实战

  • 31.1 GitHub Actions 的基础知识
  • 31.1.1 GitHub Actions 的基本概念
  • 31.1.2 工作流程文件介绍
  • 31.2 GitHub Actions 的进阶用法
  • 31.2.1 为工作流加一个 Badge 标记
  • 31.2.2 构建矩阵
  • 31.2.3 使用密钥
  • 31.2.4 使用 Artifact 保存构建产物
  • 31.3 GitHub Actions 实战
  • 31.4 IAM GitHub Actions 实战
  • 31.5 本章总结