Rancher fleet介绍
- https://fleet.rancher.io/
- https://github.com/rancher/fleet
博客截止日期为:20201204
当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;
有一些官方文档说的不清楚的地方,在这篇博客中进行了完善;
此处说不清楚,也许并非说不清楚,可能由于本人目前技术水平限制,经过大量实验验证才搞懂,并记录下来;
已将本篇文章打包提供给用户,可以下载使用:https://download.youkuaiyun.com/download/qq_42776455/13529342
fleet是一个轻量级的gitops工具,不管是管理单个集群还是大量集群都有很好的性能;
两段pull工作模式:
- Fleet manager pull from git repo;
- The cluster agents will pull from the Fleet manager.
- Fleet Manager: 从git仓库获取k8s assets;
- Fleet controller: 在Fleet Manager上运行的控制器上协调GitOps。在实际操作中,Fleet manager和Fleet controller可以理解为一个东西;
- 单集群模式: Fleet Manager和下游集群是同一个集群,GitRepo命名空间固定是fleet-local;
- 多集群模式: 一个Fleet controller集群管理多个下游集群;
- Fleet agent: 多集群模式下,在受管理的下游集群中运行Fleet agent,用来与Fleet controller通信;
- GitRepo: Fleet所监控的git repositories,在集群中是CRD资源,
kind: GitRepo
- Bundle:
- Bundle是从git repo中获取的,通常是Kubernetes manifests, Kustomize configuration, Helm charts;
- Bundle是Fleet中使用的基本部署单元;
- 不管哪种类型的(Kubernetes manifests, Kustomize configuration, Helm charts)最终都会被agent解释成为helm charts并部署到下游集群中;
- Cluster Registration Token:Tokens used by agents to register a new cluster.
fleet安装部署
单集群模式
helm -n fleet-system install --create-namespace \
fleet-crd https://github.com/rancher/fleet/releases/download/v0.3.1/fleet-crd-0.3.1.tgz
helm -n fleet-system install --create-namespace \
fleet https://github.com/rancher/fleet/releases/download/v0.3.1/fleet-0.3.1.tgz
建议修改fleet中的value.yaml
文件,使用国内镜像源:
global:
cattle:
systemDefaultRegistry: "registry.cn-hangzhou.aliyuncs.com"
多集群模式
Fleet Controller Cluster部署
获取fleet controller 集群的CA证书:
kubectl config view -o json --raw | jq -r '.clusters[].cluster["certificate-authority-data"]' | base64 -d > ca.pem
部属fleet:
# 必须指定;
API_SERVER_URL="https://example.com: