Shipper部署完全手册:从单集群测试到全球多区域生产环境
【免费下载链接】shipperKubernetes native multi-cluster canary or blue-green rollouts using Helm项目地址: https://gitcode.com/gh_mirrors/sh/shipper
Shipper是一款基于Kubernetes的原生多集群部署工具,支持金丝雀发布和蓝绿部署策略,通过Helm实现应用的跨集群管理。本指南将帮助你从本地测试环境到全球多区域生产环境,一步步完成Shipper的部署与配置,轻松掌握多集群应用发布的核心技能。
准备工作:环境与工具要求 🛠️
在开始部署Shipper前,请确保你的环境满足以下要求:
- Kubernetes版本:1.17或更高版本
- 集群权限:拥有集群管理员权限(如GKE需要绑定
cluster-admin角色) - 工具依赖:
kubectl:用于与Kubernetes集群交互shipperctl:Shipper的命令行工具- 容器运行时:Docker Desktop、Kind、MicroK8s或Minikube(本地测试)
本地测试环境快速搭建
对于新手用户,推荐使用Kind(Kubernetes IN Docker)创建本地集群。项目提供了便捷的集群配置脚本:
# 创建管理集群和应用集群 $ kind create cluster --name mgmt --config ci/kind.yaml --image kindest/node:v1.15.7 $ kind create cluster --name app --config ci/kind.yaml --image kindest/node:v1.15.7配置文件路径:ci/kind.yaml
部署步骤:从单集群到多区域 🌐
步骤1:获取shipperctl工具
shipperctl是自动化集群配置的核心工具,可从项目发布页面下载对应操作系统的二进制文件:
# 示例:下载并安装shipperctl(请替换为最新版本链接) $ curl -LO https://github.com/bookingcom/shipper/releases/latest/download/shipperctl-linux-amd64.tar.gz $ tar -zxvf shipperctl-linux-amd64.tar.gz $ sudo mv shipperctl /usr/local/bin/步骤2:配置集群清单
创建clusters.yaml文件定义集群信息,包括名称、区域和API地址。首先获取应用集群的内部API地址:
$ kind get kubeconfig --name app --internal | grep server然后编写配置文件:
# clusters.yaml applicationClusters: - name: kind-app region: local apiMaster: "https://172.18.0.3:6443" # 替换为实际API地址配置示例路径:ci/clusters.yaml
步骤3:初始化管理集群
切换kubectl上下文至管理集群,执行初始化命令:
# 确认当前上下文 $ kubectl config get-contexts $ kubectl config use-context kind-mgmt # 部署管理集群资源 $ shipperctl clusters setup management -n shipper-system此命令将创建:
- 命名空间(
shipper-system、rollout-blocks-global) - 服务账户与RBAC权限
- 自定义资源定义(CRDs)
- 验证Webhook配置
步骤4:部署Shipper控制器
使用项目提供的部署清单在管理集群中部署Shipper:
$ kubectl create -f https://github.com/bookingcom/shipper/releases/latest/download/shipper.deployment.yaml部署文件路径:kubernetes/base/shipper.deployment.yaml
步骤5:加入应用集群
通过shipperctl将应用集群注册到管理集群:
$ shipperctl clusters join -f clusters.yaml -n shipper-system步骤6:验证部署状态
检查管理集群中的Shipper Pod状态:
$ kubectl get pods -n shipper-system NAME READY STATUS RESTARTS AGE shipper-7f9b6d8c6d-2x4zv 1/1 Running 0 5m生产环境进阶配置 🚀
多区域集群部署
对于生产环境,需配置跨区域集群。修改clusters.yaml添加多个区域:
applicationClusters: - name: us-east-1 region: us-east apiMaster: "https://<us-east-api>" - name: eu-west-1 region: eu-west apiMaster: "https://<eu-west-api>"高可用配置
通过Kustomize覆盖默认配置,实现多副本部署:
# 使用生产环境覆盖配置 $ kubectl apply -k kubernetes/overlays/release配置路径:kubernetes/overlays/release/kustomization.yaml
监控与 metrics
部署Shipper状态指标采集器:
$ kubectl apply -f kubernetes/base/shipper-state-metrics.deployment.yaml源码路径:cmd/shipper-state-metrics/main.go
常见问题与解决方案 ❓
命名空间同步问题
Shipper不会自动创建应用集群中的命名空间,需确保管理集群与应用集群的命名空间一致。推荐使用命名空间管理工具,如:
# 示例:在应用集群创建命名空间 $ kubectl --context kind-app create namespace my-app集群通信故障
检查API服务器地址是否正确,可通过以下命令验证:
$ shipperctl clusters verify -f clusters.yaml版本兼容性
确保所有集群使用兼容的Kubernetes版本,项目测试支持的版本列表可参考:docs/intro/shipper.rst
下一步:开始你的第一次发布 🎉
完成部署后,可参考官方示例进行应用发布:
# 应用示例配置 apiVersion: shipper.booking.com/v1alpha1 kind: Application metadata: name: my-app spec: chart: repository: https://charts.example.com/ name: my-app version: 1.0.0示例路径:crd/examples/application.yaml
通过本指南,你已掌握从单集群测试到多区域生产环境的Shipper部署全流程。如需深入学习高级功能,可查阅:
- 官方文档:docs/index.rst
- 发布策略:docs/user/charts.rst
【免费下载链接】shipperKubernetes native multi-cluster canary or blue-green rollouts using Helm项目地址: https://gitcode.com/gh_mirrors/sh/shipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考