RancherRFOGARFO是RancherForopenEuler的简称,旨在为openEuler搭建一个Rancher基础平台。核心工作是为openEuler生态创建Kubernetesrelease版本。它基于上游RKE2技术栈,其构建使用openEuler基础镜像。致力于满足中国更加专注的安全合规标准,与openEulerLTS版本具有良好的兼容性。SUSE在Euler开源社区成立了RFOSIG(https://www.openeuler.org/zh/sig/sig-detail/?name=sig-rfo),通过社区协作进行产品迭代,发布RFO版本工作是开源的(https://gitee.com/rfolabs/rfo)。RFO分布的主要愿景如下:完全可追溯的工程。确保核心组件的构建记录和端到端测试结果是可追溯的。产品化开箱即用。确保可以快速启动RFO的安装和部署,支持从RancherPrime进行配置和部署。完全依托openEuler生态。确保核心组件使用openEuler生态构建,并依赖openEuler容器镜像进行最终打包。软件供应链安全性和合规性。确保核心组件的分发产品不可篡改,力求提供同等保护和加固的Kubernetes集群环境。支持多样化的计算能力。为AMD64、ARM64和RISC-V等各种计算能力提供Kubernetes基础架构。RFOSIG于2022年9月上旬在Euler开源社区成立,经过3个月的工程迭代,我们正式推出了RFO发行版的GA版本。欢迎在Rancher社区和Euler开源社区试用和反馈。目前有以下测试版本:v1.23.14+rfor1/v1.24.8+rfor1/v1.25.4+rfor1,我们将长期关注Kubernetes上游版本的演进。基于RFOv1.24.8+rfor1版本和openEuler22.03-LTS的快速入门演示。安装准备安装准备步骤需要在所有主机上运行:检查操作系统版本:cat/etc/os-release输出:NAME="openEuler"VERSION="22.03LTS"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler22.03LTS"ANSI_COLOR="0;31"配置NetworkManager忽略CanalCNItouch的veth接口/etc/NetworkManager/conf.d/rfo-canal.confcat>>/etc/NetworkManager/conf.d/rfo-canal.conf<:9345token:其中token可以通过在server节点运行cat/var/lib/rancher/rfo/server/node-token命令获取。rfo服务器进程在端口9345上侦听新节点注册。在正常情况下,KubernetesAPI在端口6443上仍然可用。启动服务systemctlstartrfo-agent.service(可选)查看rfo-agent服务日志journalctl-urfo-agent-f访问集群安装rfo-server节点后,可以使用内置的kubectl和kubeconfig在服务器节点配置访问集群:exportKUBECONFIG=/etc/rancher/rfo/rfo.ymlexportPATH=/var/lib/rancher/rfo/bin:$PATHkubectlgetpods--all-namespaceshelmls--all-namespaces或者在命令中指定Kubeconfig文件位置:kubectl--kubeconfig/etc/rancher/rfo/rfo.ymlgetpods--all-namespaceshelm--kubeconfig/etc/rancher/rfo/rfo.ymlls--all-namespaces如果你想在集群外访问,你可以将/etc/rancher/rfo/rfo.yml配置文件复制到你集群外的机器上作为~/.kube/config。然后将文件中的127.0.0.1替换为您的RFO服务器的IP或主机名。kubectl现在可以管理您的RFO集群。特性与特性精简部署RFO基于RKE2重新封装,具有RKE2的所有特性。它吸收了开发和维护轻量级Kubernetes发布版本K3s的经验和教训,并将其应用于构建K3s易于使用的企业级发行版。这意味着RFO在最简单的情况下是一个二进制文件,需要在参与Kubernetes集群的所有节点上安装和配置。一旦启动,RFO就能够在每个节点上引导和监督适合角色的代理,同时从网络中获取所需的内容。以下为RFO架构示意图:RFO系统架构以下组件为RFO在项目中使用的Kubernetes组件,大部分使用openEuler基础镜像重新打包分发。使用install.sh脚本安装时,rfo会使用linux系统服务,使用systemd作为RFOSupervisor。不推荐使用其他方式(包括下载rfo二进制文件直接启动)。在某些场景下,会没有RFOSupervisor角色来监控RFO的运行状态,导致kubelet等程序在后台运行。RFO一般以安装包的形式分发,只包含rfo二进制体、systemd服务配置文件和卸载脚本。其余组件将在RFO启动后根据启动节点的角色进行拉取安装。当备份恢复在RFO上运行时,您可以使用etcd-snapshot子命令进行etcd快照管理。功能包括:使用本地目录或s3作为快照存储后端,创建当前etcd数据的快照,重置集群并将快照中的数据恢复到当前或新节点,定期备份Helm与RFOBuilt-in集成Helm控制器(https://github.com/k3s-io??/hel...),它使用HelmChart自定义资源定义(CRD)来管理Helm图表。HelmChart资源定义(https://github.com/k3s-io??/hel...)捕获了您通常会传递给helm命令行工具的大部分选项。下面是一个示例,说明如何从默认图表存储库部署Grafana,覆盖一些默认图表值。请注意,HelmChart资源本身位于kube-system命名空间中,但图表资源将部署到监控命名空间。apiVersion:helm.cattle.io/v1kind:HelmChartmetadata:name:grafananamespace:kube-systemspec:chart:stable/grafanatargetNamespace:monitoringset:adminPassword:"NotVerySafePassword"valuesContent:|-image:tag:master环境:GF_EXPLOREtrue_ENABLEDadminUser:adminsidecar:datasources:enabled:true此外,RFO支持通过HelmChartConfig资源进行自定义部署,这允许覆盖部署为HelmCharts的打包组件的值(例如Canal、CoreDNS、Nginx-Ingress等)。HelmChartConfig资源必须匹配其对应的HelmChart的名称和命名空间,并支持提供额外的valuesContent,作为额外的values文件传递??给helm命令。注意:HelmChartspec.set值覆盖HelmChart和HelmChartConfigspec.valuesContent设置。例如,为上例中的Grafanahelmchart自定义Grafanaimagetag,可以创建一个Kubernetes资源文件,填充如下内容,使用kubectlapply-f应用:apiVersion:helm.牛。io/v1kind:HelmChartConfigmetadata:name:grafananamespace:kube-systemspec:valuesContent:|-image:tag:9.3.2证书轮换RFO中的证书默认在12个月后过期。如果证书已过期或剩余时间少于90天,则可以使用certificate子命令轮换证书,并在RFO重新启动时轮换证书。systemctlstoprfo-serverrfocertificaterotatesystemctlstartrfo-server您还可以通过传递--service标志来轮换单个服务,例如:rfocertificaterotate--serviceapi-server。Secret加密RFO支持通过子命令secrets-encrypt对Secret进行静态加密。启用后会自动执行以下操作:生成AES-CBC密钥,并使用生成的密钥生成加密配置文件:{"kind":"EncryptionConfiguration","apiVersion":"apiserver.config.Kubernetes.io/v1","resources":[{"resources":["secrets"],"providers":[{"aescbc":{"keys":[{"name":"aescbckey","secret":"xxxxxxxxxxxxxxxxxxxx"}],},},{"identity":{}},],},],}将此配置作为encryption-provider-config传递给启用KubernetesAPIServer后,创建的任何机密都将使用这把钥匙。请注意,如果禁用加密,则在使用相同密钥再次启用加密之前,任何加密的秘密都将不可读。安全可靠的RFO设计与Openeuler紧密结合,在安全合规性方面与Openeuler系统保持一致;并且在持续集成流水线中,基于Openeuler容器镜像运行sonobuoy测试,确保RFO发布版本兼容CNCF认证的Kubernetes发布版本功能需求。维护原则和发布周期RFO的维护发布周期与RKE2和Kubernetes版本的生命周期一致,遵循以下原则:RKE2小版本将在RKE2发布后一周内根据变更内容进行跟进;如果有变化和RFO无关,则跳过次要版本的发布。RKE2大版本目前会跟进Kubernetes大版本维护。openEulerOS的更新将在RKE2发布后的两周内跟进。遵循以下原则:仅针对openEulerLTS(长期支持)发布的版本对应RFO版本。目前的经验是每2年一个新的LTS版本。新版本发布后,RFO将跟进最新的RFORelease。当openEuler出现致命或高阶系统漏洞时,会发布小版本RFO跟进RFO除了RKE2原有的功能,目前还在维护中,目的是测试和集成openEuler操作系统,以及未来计划增加如下支持:ARM64平台支持内置iSula运行时支持后续规划后续规划主要围绕构建安全可信认证和构建分发管道的扩展进行。构建安全可信认证主要包括以下几个方面,确保核心组件的分发产品不可篡改,致力于提供一个同等保护和加固的Kubernetes集群环境:分布式RFO图表,执行helm图表签名扩展构建的分发方式主要包括以下几个方面:支持离线创建镜像和离线部署构建RFO和kube-explorer(https://github.com/cnrancher/...)RPM包并通过openEuler的软件源进行分发关于RancherRancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署和管理。Rancher一直以其直观、极简的操作体验深受用户青睐。被Forrester评为“2020年多云容器开发平台领导者”和“2018年全球容器管理平台领导者”,被Gartner评为“2017年全球最佳企业平台”。酷云基础设施提供商”。目前,Rancher在全球拥有超过3亿核心图片下载量,旗下公司包括中国联通、中国平安、中国人寿、上汽集团、三星、施耐德电气、西门子、育碧、LINE、WWK保险集团、Telstra,共计4万张企业客户包括德国铁路、厦门航空、新东方等世界知名企业。2020年12月,SUSE完成了对RancherLabs的收购,Rancher成为SUSE“InnovateEverywhere”企业愿景的重要组成部分。SUSE和Rancher共同为客户提供无与伦比的自由和无敌的创新能力。他们通过混合云IT基础设施、云原生转型和IT运维解决方案,简化、现代化和加速企业数字化转型,推动创新无处不在。目前,SUSE和Rancher在中国大陆的业务由数说软件(北京)有限公司托管。SUSE在中国拥有优秀的研发团队、技术支持团队和销售团队,将结合Rancher领先的云原生技术,提供为中国企业客户提供更及时可靠的技术支持和服务保障。