Day 23 - Rancher Fleet 环境架设与介绍

本文将於赛後同步刊登於笔者部落格

有兴趣学习更多 Kubernetes/DevOps/Linux 相关的资源的读者,欢迎前往阅读

更多相关科技的技术分享,欢迎追踪 矽谷牛的耕田笔记

对於 Kubernetes 与 Linux Network 有兴趣的可以参阅笔者的线上课程


前言

前述文章探讨了关於 Rancher Fleet 的基本架构与概念介绍,了解到 Rancher Fleet 本身是个主从式的架构。环境中会有一个 Kubernetes 丛集专门用来部署 Fleet Controller 作为 Fleet Manager,而所有要被托管的 Kubernetes 丛集都必须要部署一个 Fleet Agent 来连接 Fleet Manager。

本篇文章将针对实际部署情况去观察。

安装

官方网站 有列出非常详细的安装步骤,针对 Fleet Manager 安装要用到的凭证与除错方式,如何使用 Helm 安装 CRD 与 Fleet Controller 都有介绍。
当 Fleet Manager 安装与设定完毕後,接下来就可以参考 Cluster Registration Overview 这篇官方文章来学习如何将一个 Kubernetes 丛集作为 Fleet Agent 加入到 Fleet Manager 的管理中。

不过这边要特别注意的是,以上所提的安装方式都是针对纯 Fleet 解决方案时才需要考虑的部分,因为 Fleet 是 Rancher 开发与维护的,因此任何由 Rancher 管理与创建的 Kubernetes 丛集都已经内建 Fleet Agent,大幅度简化使用者的安装方式。

当初安装 Rancher 时会先准备一个 Kubernetes 丛集专门用来负责 Rancher 本身的维运,其他所有的丛集都会透过这个 Rancher 去创建与维护,Rancher Fleet 会采用相同的架构与方式去处理。专门用来部署 Rancher 的 Kubernetes 丛集会被安装 Fleet Controller。

基於以上两点,只要所有丛集都是由 Rancher 去创建与管理的, Fleet 就不需要自己手动安装,Fleet Manager 与 Fleet Agent 都会自动的被安装与部署到相关丛集中。

观察

前述所述,用来安装 Rancher 服务的 Kubernetes 丛集本身也会安装 Fleet Controller,这部分可以到 Apps 的页面去看到底有哪些应用程序被安装到丛集中。同时透过画面中提供的 kubectl 指令去观察 fleet-system namespace 中安装的 Pod,如下图。

可以观察到 local 也就是部署 Rancher 的 Kubernetes 丛集有部署三个 Pod,其中 fleet-controller 以及 gitjob 两个 pod 是针对 fleet manager 而部署的 Pod,而 fleet-agent 则是给 fleet-agent 使用的。

此架构意味者管理者可以透过该 Fleet 来管理 local 这套 Kubernetes 丛集。
之前提到 Fleet 与大部分的 Operator 有相同的开发流程,所以会使用一个 Kubernetes Controller 配上很多预先设定的 CRD 物件,所以透过 kubectl get crd 就可以看到 local 丛集上有各式各样关於 Fleet 的 CRD。

接下来观察要被管理的 Kubernetes 丛集,譬如给 Dev 使用的丛集,这时候使用相同的方式去观察该丛集内安装的资源,可以观察到 fleet-system 内只有安装一个 Pod,该 Pod 就是扮演 Fleet Agent 的角色,让该丛集能够顺利的 Fleet Manager 沟通,范例如下。

确认完毕之後就可以移动到 Rancher Fleet 的专属页面,移动的方式很简单,不论当前是处於哪个丛集,点选左上方就可以找到一个名为 Continuous Delivery 的选项,点进去就会进入到 Rancher Fleet 的画面。

进去画面中後会看到如下的画面,画面中有非常多的新东西,接下来针对这些新东西慢慢探索

首先画面最上方有一个下拉式选单可以选择,该选单会列出所有可以使用的 Fleet Workspace,那到底什麽是 workspace 呢?

Fleet workspace 是一个管理单位,就如同大部分专案的 workspace 概念一样,每个 workspace 都会有自己独立的 GitRepo, Group, Bundle 等概念。
一个实务上的上作法会创立多种不同的 workspace,譬如 dev, qa 及 prod。

每个 workspace 内都可包含多个不同的 cluster 与其他的资源。

预设的情况下有两个 workspace,分别是 fleet-local 以及 fleet-default. 所有刚加入到 Rancher 的丛集都会被加入到 fleet-default 这个 workspace 中。

画面左边有六个不同的资源

Git Repos:
Git Repos 内的资源是告诉 Fleet 希望追踪哪些 Git 专案,该 Git 专案中哪些资料夹的哪些档案要让 Fleet 帮忙管理与安装。

因为 Fleet 什麽都还没有安装与设定,所以 Git Repo 内目前是空空的,没有任何要被安装的应用程序。

Clusters/Cluster Groups:
这边显示的是该 workspace 中有多少个 cluster,目前的环境中先前创立三个不同的 Kubernetes 丛集,而这些丛集预设都会被放入到 fleet-default workspace 内的 group。

假设 cluster 数量过多,还可以透过 Cluster Group 的概念来简化操作,将相容用途的 cluster 用群组的方式来简化之後的操作。

Workspace:
Workspace 可以看到目前系统有多少个 workspace,可以看到系统中有 fleet-default 以及 fleet-local,同时也会显示这些 workspace 中目前管理多少个 cluster 。

Bundles:
之前提过 Bundle 是 Fleet controller 扫过 GitRepo 专案後会产生的安装资源档案。
可以当前的范例非常奇妙,没有任何 Git Repo 的内容却拥有这些 Bundle 档案,主要是因为这三个 Bundle 是非常奇妙与特殊的 Bundle,仔细看的话可以观察到这些 Bundle 的名称都是 Fleet-agent-c-xxxx,这些 bundle 是用来安装 fleet-agent 到目前 Rancher 下的所有 Kubernetes 丛集。
这些安装是 Rancher 内建强迫的,所以使用上会稍微跟正常用法有点不同。

ClusterRegistrationTokens:
最後一个则是 Cluster(Fleet Agent) 要加入到 Fleet Manager 使用的 Token,不过因为目前的丛集全部都是由 Rancher 去管理与创造的,所以不需要参考官网自行安装,因此 Rancher 会走比较特别的方式来将 Rancher 管理的丛集给加入到 Fleet manager 中,因此这边就是空的。

此外透过 Cluster 内的操作,可以将该 workspace 下的 cluster 给移转到其他的 workspace,所以之後根据需求创立不同的 workspace 後,就可以透过这个方式将 cluster 给移转到属於该用途的 workspace。

到这边为止,稍微看了一下关於 Fleet 介面的操作与基本概念,下一篇就会正式尝试透过 Git Repo 这个物件来管理试试看 GitOps 的玩法,此外因为 Fleet 内的操作基本上都可以转化为 Kubernetes 的 CRD 物件,所以很多 UI 的设定都可以使用 YAML 来管理,透过这个概念就可以达到跟 ArgoCD 一样的想法,用 GitOps 来管理 Fleet 本身。


<<:  JavaScript入门 Day18_function介绍

>>:  Day09 在浏览器上检查现有设备

Swift纯Code之旅 Day17. 「复习 - 新增页面、TableView、TableViewCell」

前言 目前标签页面的画面及功能已经完成,接下来继续新增「重复」页面,算是再熟悉一下TableView...

Day 13 实作 manage.py

前言 前天我们写好了 create_app,但是还没有人呼叫他,今天我们就要来呼叫他 (当然还不能用...

Day 29 - 3D绘图篇 - 噪声地形演算I - 成为Canvas Ninja ~ 理解2D渲染的精髓

再两天 ~!! 在铁人赛的最後,我想要给各位带来的是噪声地形的演算~ 之所以想要写这个题目,原因是...

第 25 集:Bootstrap 客制化 RFS 响应式文字

此篇会介绍 Bootstrap 中的 rfs,是如何做到依据视窗大小,来计算适合的元素尺寸。 浅谈...

自动化测试,让你上班拥有一杯咖啡的时间 | Day 22 - 与 JS-alert, confirm, prompt 如何互动

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 今天要跟大家分享当网站有用到Jav...