本文将搭建一个单节点 Rancher server 和两个 k3s 集群环境,并通过 Rancher 的 Continuous Delivery 功能,用 GitOps 操作这两个 k3s 集群。
Step 1: 部署 Rancher Server
首先在 rancher 节点上执行如下 docker 命令,搭建单节点 Rancher server。
|
|
Rancher server 大约 1 分钟后启动,使用浏览器访问 rancher 节点的 IP 地址即可进入 Rancher UI。
本例中 Rancher 使用自签名证书,浏览器会弹出证书警告,可以直接跳过。有些浏览器没有跳过按钮,此时点击错误页面任意位置并输入 thisisunsafe
,即可跳过警告并接受证书。
首次访问时需要设置初始密码,按页面提示操作即可。
Step 2: 部署 k3s Kubernetes 集群
接下来部署 k3s 集群。方法很简单,只需在 k3s-1 和 k3s-2 节点分别执行如下命令。
为了后续演示升级,这里特意指定了较旧的 k3s 版本。
k3s-1
|
|
k3s-2
|
|
部署完成后,用如下命令检查集群:
|
|
注意:K3s 默认以 root
用户操作,因此需要 sudo
权限。
Step 3: 将 k3s 集群导入 Rancher
接下来将 k3s 集群导入 Rancher。以 k3s-1 为例,操作如下:
- 在 Rancher Global 页面右侧点击
Add Cluster
,选择Other Cluster
。 - Cluster Name 填写
k3s-1
,点击Create
。 - 点击以
curl...
开头的命令,在 k3s-1 节点执行。
k3s-2 也用同样方法注册。
Step 4: 集群分组(Cluster Group)
现在开始使用 Continuous Delivery。在 Global 页面选择 Tools
-> Continuous Delivery
。
首先创建 Cluster Group
。左侧菜单进入 Cluster Group
,右侧点击 Create
,进入创建页面。
本例用 k3s
做演示,Name 填 k3s-demo
。
接下来是关键步骤。Cluster Group
通过标签选择集群,点击 Add Rule
设置标签。本例用 K3s,Cluster Selectors
填 k3s=true
。
设置完成后点击 Create
,完成分组创建。
然后将两个已导入的 k3s 集群分配到该 Cluster Group
。左侧菜单进入 Clusters
,点击 k3s-1
右侧的︙,选择 Assign to
。
点击 Add/Set Label
,设置标签 k3s=true
,点击 Apply
。这样该集群就分配到刚创建的分组了。
k3s-2 也同样操作。Cluster Groups
页面 Clusters Ready
应为 2。
Step 5: 配置 Git Repos
本步骤设置要引用的 Git Repo
。左侧菜单进入 Git Repos
,右侧点击 Create
进入创建页面。
输入名称后,用自己的 Github 账号 fork
https://github.com/rancher/fleet-examples
,并将 Repository URL(如 https://github.com/xibuka/fleet-examples.git
)填入。Paths
填 /single-cluster/manifests
,即 guest-book
定义文件所在目录。然后设置部署目标,Deploy To
选择刚创建的 Cluster Group
,点击 Create
。
这样 guest-book
资源就会部署到 k3s-1 和 k3s-2。
接下来在 deployment 目录下新增 nginx.yaml
文件。添加如下内容后,Continuous Delivery 会自动检测并部署到 Cluster Group
。
|
|
部署完成后,在集群侧检查 Pod
和 Service
。
同理,监控文件有变更时,也会自动部署到 cluster group
。可以试着将上面 YAML 的如下两行修改:
|
|
变更会被自动同步。
Step 6: 部署应用
本步骤注册 Git Repo 并部署 Rancher 应用。
Repository URL 填 https://github.com/xibuka/core-bundles.git
,Add Path
添加如下两个路径:
- /longhorn
- /longhorn-crd
点击 Create
,定义的应用即会部署。
Step 7: 升级
本步骤注册 Git Repo 并升级两个 k3s 集群。升级用到如下 Automated Upgrades 功能:
ttps://rancher.com/docs/k3s/latest/en/upgrades/automated/
首先准备所需资源。分别在每个集群上依次执行如下命令:
|
|
然后 fork https://github.com/xibuka/k3s-upgrade-plan
并配置 Git repos。Branch Name 设为 Main
,点击 Create
。/
下所有内容都会被同步,无需额外添加 path。
确认当前 k3s 版本为 1.21.5+k3s2。
将 Git Repos 中 Plan 文件的 version 改为 1.22.2+k3s1
并提交。稍等片刻,两个 k3s 集群会自动升级到 1.22.2。
Fleet Demo 到这里就结束了,Rancher 还有很多强大功能,欢迎继续探索!