引言:用 Bash 粘合 Kubernetes
- 先决条件
- 为什么选择 Bash?
- 我们要构建什么
- 入口点:setup.sh
- 启动 datacenter.sh
- 动手练习
安全设置、初始化和生命周期钩子
- 全局 Set 选项
- Shell 脚本检查工具:shellcheck
- 脚本初始化
- 主控制器
- 错误处理器
- 退出处理器
- 完整脚本
- 动手练习
退出码与受控退出
- script_exit 函数
- 退出码约定
- Bash 安全模式回顾
- 更新后的脚本
- 动手练习
Cron 模式与 IO 重定向
- Cron 模式做什么
- 文件描述符
- 为 Cron 模式重定向
- 更新错误处理器
- 更新退出处理器
- 在 main 中注册 cron_init
- 更新后的脚本
- 动手练习
库模式:组织 Bash 代码库
- lib/ 目录
- 在 main 中加载库
- 编写库文件
- 命名约定
- 依赖图
- 两个值得现在了解的实用库
- 动手练习
终端颜色与日志记录
- 日志库
- 颜色初始化
- log 函数
- verbose_print — 详细模式输出
- 更新 init
- 更新 main
- 更新错误处理器
- 动手练习
验证辅助函数与二进制检查
- lib/script.sh
- check_binary — 必需工具检测
- check_required_binaries — 系统前提条件
- is_kind — 模式检测
- check_arguments — 变量存在性验证
- check_directories — 路径验证
- check_files — 文件存在性验证
- check_repos — 仓库存在性守卫
- build_path — PATH 构建
- 在 init 链中使用辅助函数
- 动手练习
配置管理
- 配置文件
- lib/config.sh
- get_configurations — 交互式设置
- 在 main 中读取配置
- Docker 网络模式
- 动手练习
脚本锁定:防止并发运行
- 为什么是目录,而不是文件
- lock_init
- 过期锁处理
- 动手练习
完整的参数解析
- parse_params
- script_usage — 帮助文本
- 连接 parse_params 到 main
- 动手练习
本地模式与 Kind 集群管理
- 为什么是 Kind
- lib/kind.sh
- start_env — 创建 Kind 集群
- stop_env — 停止集群
- delete_env — 销毁集群
- 加载镜像到 Kind
- 无需 Docker 环境切换
- 动手练习
Docker 操作
- lib/docker.sh
- safe_docker — 基础包装器
- safe_docker_build — 构建镜像
- safe_docker_run — 运行容器
- 加载镜像到 Kind
- Docker Compose 操作
- docker_cleanup — 移除死容器和镜像
- 动手练习
使用 kubectl 管理 Kubernetes
- lib/kubectl.sh
- safe_kubectl — 基础包装器
- kubectl_install_resource_from_file
- kubectl_install_database — PostgreSQL 设置
- kubectl_restart — 滚动重启
- DNS 管理
- 重启所有 Deployment
- 动手练习
Helm:Kubernetes 的包管理器
- lib/helm.sh
- safe_helm — 基础包装器
- k8s/ 中的 Helm Charts
- helm_install_service — 通用服务安装器
- helm_install_core_service — 基于模板的服务
- 安装 Config Releases
- 更新函数 — 无需重新安装的升级
- Traefik — Ingress 控制器
- 动手练习
构建服务
- 构建管道
- lib/build.sh
- build_service — 核心构建函数
- 服务组函数
- build_images_init — 构建分派器
- lib/install_deps.sh
- check_registry
- 动手练习
从零开始配置
- 系统架构
- 完整配置序列
- 逐步说明
- Kubernetes 集群参数
- Kubernetes 清单参考
- 成功的样子
- 动手练习
重载与恢复操作
- lib/reload_services.sh
- reload_services — 轻量级服务刷新
- reload_services_init — 重载分派器
- lib/reload_kubernetes.sh
- reload_all_kubernetes — 完全集群重建
- 动手练习
拆除与清理
- 停止环境
- 删除环境
- 完全 Kubernetes 拆除
- Docker 清理
- 退出处理器:完整版本
- 整合完整脚本
- 完整的 main() 函数
- 完整的 init 函数
- 完整生命周期
- 你构建的开发者体验
- 动手练习
附录:datacenter.sh 命令参考
- setup.sh
- datacenter.sh
- 退出码
- 可链接 vs 不可链接参数
- 故障排除
- 常见工作流