2 RMT 安装和配置 #
SUSE Linux Enterprise Server 15 及以上版本中包含 RMT。可以在安装 SUSE Linux Enterprise Server 的过程中直接安装 RMT,或在运行中系统上安装 RMT。安装好软件包后,请使用 YaST 执行初始配置。
将一台服务器配置为 RMT 服务器时,会安装并配置监听端口为 80 的 NGINX Web 服务器。
而在将一台计算机配置为安装服务器时,会自动安装 Apache Web 服务器并将其配置为监听端口 80。
请勿尝试在同一台服务器上启用这两项功能。一台服务器无法同时托管 Apache Web 服务器和 NGINX Web 服务器。
2.1 储存要求 #
下载的软件包储存在 /usr/share/rmt/public/repo
中,其为 /var/lib/rmt/public/repo/
的符号链接。
RMT 服务器所需的储存空间取决于以下可变因素:您镜像的软件源和体系结构的数量以及启用的产品数量。一般来说,将储存空间设为所有已启用软件源总大小的 1.5 倍应当就已足够。其中,每个 SUSE Linux Enterprise 版本(包括所有扩展)大约 200 GB。
2.2 在系统安装期间安装 #
要在系统安装期间安装 RMT,请选择 rmt-server 软件包。您可在安装期间的安装设置步骤中进行软件选择时选择该软件包。
我们建议您在使用 zypper patch
命令安装 SUSE Linux Enterprise Server 后,立即检查是否有可用的 RMT 更新。SUSE 会不断发布 RMT 的维护更新,因此可能会有更新的软件包。
2.3 在现有系统上安装 #
要在运行中的 SUSE Linux Enterprise Server 系统上安装 RMT,请使用 zypper
:
>
sudo
zypper in rmt-server
2.3.1 在 Minimal VM 上安装 #
SUSE Linux Enterprise Server Minimal VM 是一种专为特定使用场景而设计的可自定义极简操作系统,例如,它可充当以下不同形式的对象运行:
容器主机
虚拟机 Guest
设备库系统
小型服务器映像
因此,Minimal VM 映像非常适合作为 RMT 服务器。您可以从公共 SUSE Linux Enterprise Server 下载页面(网址为:https://www.suse.com/download/sles/)下载适用于 KVM、Xen、Microsoft Hyper-V、VMware 和 OpenStack 的 SUSE Linux Enterprise Server Minimal VM 映像。有关 Minimal VM 的详细信息,请访问 https://documentation.suse.com/sles/15-SP4/html/SLES-all/article-minimal-vm.html。
在 Minimal VM 上安装 RMT 与在已安装的系统上安装 RMT 的方式相同(请参见第 2.3 节 “在现有系统上安装”)。要在 Minimal VM 上安装 RMT,请以 root
身份从 Minimal VM 命令行运行以下命令:
#
zypper install rmt-server yast2-rmt
请注意,在 Minimal VM 上安装 RMT 时至少需要 100 GB 磁盘空间,具体取决于您选择镜像的产品。另外还需要至少有两个内核的 CPU 以及 2 GB RAM 内存。
2.4 在 Kubernetes 群集上部署 RMT #
本节介绍如何在 Kubernetes 群集上部署 RMT。它使用 Helm 作为软件包管理器与 Kubernetes 群集交互。有关如何使用 Helm 的更多详细信息,请访问 https://helm.sh/docs/intro/using_helm/。
2.4.1 先决条件 #
运行 Kubernetes 群集
配置为与群集交互的
helm
命令
2.4.2 应用程序组件 #
RMT 应用程序的每个组件都部署在其各自的容器中。RMT 由下列组件组成:
- RMT 服务器
RMT 应用程序服务器的容器化版本,能够通过 Helm 值传递其配置。数据储存在 Kubernetes 群集上将分配的卷上。您需要根据所要镜像的软件源数量调整储存空间大小。
- MariaDB
RMT 的数据库后端。RMT 会在启动时创建所需的数据库和表,因此不需要执行特定的安装后任务。如果未在
values.yaml
文件中指定口令,系统会自动生成口令。- Nginx
为 RMT 路由配置的 Web 服务器。正确配置 Web 服务器后,您便可将入站流量(用于 RMT)直接定向到此 Nginx 服务。您不需要配置 RMT 入站流量特定的路径处理方式,因为 Nginx 已配置为自行处理此项事宜。
2.4.3 values.yaml
文件 #
RMT 图表包含 values.yaml
文件,其中记录了所有参数并定义了它们的默认值。您可以通过提供自己的值文件来覆盖这些值,例如:
>
helm install rmtsle rmt/rmt-helm-0.1 -f myvalues-sle.yaml
- 键:app.cronjob.mirror.schedule
类型:字符串
默认值:
"30 2 * * *"
说明:运行
rmt-cli mirror
命令(实际软件包镜像)的日程表- 键:app.cronjob.sync.schedule
类型:字符串
默认值:
"* 1 * * *"
说明:运行
rmt-cli sync
命令(与 SUSE 数据库同步)的日程表- 键:app.image.pullPolicy
类型:字符串
默认值:
"Always"
说明:
- 键:app.image.repository
类型:字符串
默认值:
"registry.suse.com/suse/rmt-server"
说明:RMT 服务器映像
- 键:app.image.tag
类型:字符串
默认值:
"2.7"
说明:RMT 服务器映像标记
- 键:app.init.image.pullPolicy
类型:字符串
默认值:
"Always"
说明:
- 键:app.init.image.repository
类型:字符串
默认值:
"registry.suse.com/suse/rmt-mariadb-client"
说明:
- 键:app.init.image.tag
类型:字符串
默认值:
"latest"
说明:
- 键:app.mysql.host
类型:字符串
默认值:
nil
说明:要连接的 MariaDB 主机(默认目标是数据库容器)
- 键:app.scc.password
类型:字符串
默认值:
nil
说明:SUSE Customer Center 口令
- 键:app.scc.username
类型:字符串
默认值:
nil
说明:SUSE Customer Center 用户名
- 键:app.service.port
类型:int
默认值:
4224
说明:RMT 服务器端口
- 键:app.storage.class
类型:字符串
默认值:
"local-path"
说明:
- 键:app.storage.size
类型:字符串
默认值:
"300Mi"
说明:RMT 服务器储存卷要求。其值可能因要镜像的模块数量而异。
- 键:db.autoscaling.enabled
类型:布尔
默认值:
false
说明:
- 键:db.autoscaling.maxReplicas
类型:int
默认值:
100
说明:
- 键:db.autoscaling.minReplicas
类型:int
默认值:
1
说明:
- 键:db.autoscaling.targetCPUUtilizationPercentage
类型:int
默认值:
80
说明:
- 键:db.image.pullPolicy
类型:字符串
默认值:
"Always"
说明:
- 键:db.image.repository
类型:字符串
默认值:
"registry.suse.com/suse/rmt-mariadb"
说明:数据库映像
- 键:db.image.tag
类型:字符串
默认值:
"10.5"
说明:数据库映像标记
- 键:db.mysql.database
类型:字符串
默认值:
"rmt"
说明:数据库名称
- 键:db.mysql.password
类型:字符串
默认值:
nil
说明:数据库口令(如未指定,则自动创建)
- 键:db.mysql.rootPassword
类型:字符串
默认值:
nil
说明:数据库 root 口令(如未指定,则自动创建)
- 键:db.mysql.user
类型:字符串
默认值:
"rmt"
说明:数据库用户
- 键:db.replicaCount
类型:int
默认值:
1
说明:
- 键:db.storage.class
类型:字符串
默认值:
"local-path"
说明:
- 键:db.storage.size
类型:字符串
默认值:
"100Mi"
说明:数据库储存卷空间要求
- 键:front.image.pullPolicy
类型:字符串
默认值:
"Always"
说明:
- 键:front.image.repository
类型:字符串
默认值:
"registry.suse.com/suse/rmt-nginx"
说明:Nginx 映像
- 键:front.image.tag
类型:字符串
默认值:
"latest"
说明:Nginx 映像标记
- 键:front.init.image.pullPolicy
类型:字符串
默认值:
"Always"
说明:
- 键:front.init.image.repository
类型:字符串
默认值:
"registry.suse.com/bci/bci-micro"
说明:
- 键:front.init.image.tag
类型:字符串
默认值:
"15.3"
说明:
- 键:front.service.port
类型:int
默认值:
80
说明:Nginx 服务端口
- 键:ingress.annotations
类型:对象
默认值:
{}
说明:
- 键:ingress.enabled
类型:布尔
默认值:
false
说明:
- 键:ingress.hosts[0]
类型:对象
默认值:
{"host":"chart-example.local","paths":[{"path":"/","pathType":"Prefix"}]}
说明:可以从客户端访问 RMT 服务的 DNS 名称
- 键:ingress.tls[0].hosts[0]
类型:字符串
默认值:
"chart-example.local"
说明:可用于从客户端访问 RMT 服务的 DNS 名称
- 键:ingress.tls[0].secretName
类型:字符串
默认值:
"rmt-cert"
说明:
- 键:serviceAccount.annotations
类型:对象
默认值:
{}
说明:
- 键:serviceAccount.create
类型:布尔
默认值:
true
说明:
- 键:serviceAccount.name
类型:字符串
默认值:
""
说明:
2.5 使用 YaST 配置 RMT #
按以下过程所述使用 YaST 配置 RMT。假设在新安装的系统上执行此过程。
使用
rmt
模块启动 YaST。>
sudo
yast2 rmt
或者,您也可以启动 YaST,然后选择
› 。输入您的组织身份凭证。要获取您的身份凭证,请参见第 4.1 节 “镜像身份凭证”。
输入新 MariaDB 用户和数据库名称的身份凭证。系统即会创建此用户。然后选择
。如果已设置 MariaDB
root
用户的口令,您需要输入该口令。如果未设置root
的口令,系统会要求您输入一个新口令。输入 SSL 证书的常用名。该常用名通常应为服务器的完全限定域名 (FQDN)。输入您要用来作为其他常用名连接 RMT 服务器的所有域名和 IP 地址。
输入所有常用名后,选择
。提示:RMT 的证书位置/etc/rmt/ssl/rmt-ca.crt
此为
yast2 rmt
用来验证 RMT 服务器证书的 CA 证书束。仅当此文件不存在时,yast2 rmt
才会创建该文件。/etc/rmt/ssl/rmt-server.crt
和/etc/rmt/ssl/rmt-server.key
仅当服务器证书和私用密钥不存在时,
yast2 rmt
才会生成新的服务器证书和私用密钥。要重新生成此证书,请参见第 8.1 节 “重新生成 HTTPS 证书”。
如果此系统上启用了
firewalld
,请选中相应复选框打开必需的端口。图 2.2︰ 在firewalld
中启用端口 #如果现在尚未启用
firewalld
而您打算稍后启用它,可始终通过运行yast2 rmt
模块来打开相应端口。提示:微调firewalld
设置单击
,可仅打开特定网络接口的相应端口。按
继续。要查看摘要,请单击
。单击 关闭 YaST。YaST 即会启用并启动所有systemd
服务和计时器。
2.6 启用 SLP 声明 #
RMT 包含 SLP 服务说明文件 /etc/slp.reg.d/rmt-server.reg
。要启用 RMT 服务的 SLP 声明,请执行以下步骤:
如果
firewalld
正在运行,请打开相应端口并重新装载firewalld
配置:>
sudo
firewall-cmd --permanent --add-port=427/tcp success>
sudo
firewall-cmd --permanent --add-port=427/udp success>
sudo
firewall-cmd --reload校验是否安装了 SLP 服务器,如果可能,安装该服务器:
>
sudo
zypper install openslp-server启用并启动 SLP 服务:
>
sudo
systemctl enable slpd.service>
sudo
systemctl restart slpd.service