在 k3s 上安装容器化 SUSE Manager 代理

1. 安装 k3s

在容器主机计算机上,安装 k3s 并禁用负载平衡器和 traefik 路由器(将 <K3S_HOST_FQDN> 替换为 k3s 主机的 FQDN):

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik --disable=servicelb --tls-san=<K3S_HOST_FQDN>" sh -

2. 配置群集访问权限

helm 需要使用配置文件来连接目标 Kubernetes 群集。

在群集服务器计算机上运行以下命令来创建 kubeconfig-k3s.yaml 配置文件。您也可以根据需要将 kubeconfig-k3s.yaml 文件传输到一台正常运行的计算机:

kubectl config view --flatten=true | sed 's/127.0.0.1/<K3S_HOST_FQDN>/' >kubeconfig-k3s.yaml

在调用 helm 前运行以下命令:

export KUBECONFIG=/path/to/kubeconfig-k3s.yaml

3. 安装 helm

需要使用 Containers 模块来安装 helm

要进行安装,请运行以下命令:

zypper in helm

4. 安装 metalLB

MetalLB 是负载平衡器,会将 SUSE Manager 代理 Pod 服务向外部公开。要安装该工具,请运行以下命令:

helm repo add metallb https://metallb.github.io/metallb
helm install --create-namespace -n metallb metallb metallb/metallb

MetalLB 也需要通过配置文件来获知要使用的虚拟 IP 地址范围。在此示例中,虚拟 IP 地址范围为 192.168.122.240192.168.122.250,但如果主机只公开 SUSE Manager 代理,则该范围可以缩小为单个地址。这些地址必须是服务器网络的子集。

创建 metallb-config.yaml 配置文件,在其中包含如下设置以及与所部署网络一致的 IP 地址范围:

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: l2-pool
  namespace: metallb
spec:
  addresses:
  - 192.168.122.240-192.168.122.250
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2
  namespace: metallb
spec:
  ipAddressPools:
  - l2-pool

运行以下命令应用此配置:

kubectl apply -f metallb-config.yaml

5. 部署 SUSE Manager 代理 helm 图表

创建一个配置文件,强制指定 MetalLB 将为 SUSE Manager Proxy 服务使用的 IP 地址。此 IP 地址必须是创建代理配置时所输入代理 FQDN 对应的 IP 地址。此外,该 IP 地址必须可由 SUSE Manager 服务器和要连接到代理的客户端系统解析。

此示例将使用 192.168.122.241

创建包含以下内容的 custom-values.yaml 文件。如果 MetalLB IP 地址范围只包含单个地址,则可以去除最后一行。

services:
  annotations:
    metallb.universe.tf/allow-shared-ip: key-to-share-ip
    metallb.universe.tf/loadBalancerIPs: 192.168.122.241

不需要更改 metallb.universe.tf/allow-shared-ip 参数。您需要根据您的网络设置调整 metallb.universe.tf/loadBalancerIPs 参数。

要配置 SUSE Manager 代理 Pod 使用的卷存储,请定义以下声明的永久性卷。有关详细信息,请参见 https://kubernetes.io/docs/concepts/storage/persistent-volumes/ (kubernetes) 或 https://rancher.com/docs/k3s/latest/en/storage/ (k3s) 文档。永久性卷声明命名如下:

  • squid-cache-pv-claim

  • /package-cache-pv-claim

  • /tftp-boot-pv-claim

按照 容器化 SUSE Manager Proxy 设置 中所述创建 SUSE Manager 代理的配置。复制并解压缩 tar.gz 配置文件,然后部署 helm 图表:

tar xf /path/to/config.tar.gz
helm install uyuni-proxy oci://registry.suse.com/suse/manager/4.3/proxy -f config.yaml -f httpd.yaml -f ssh.yaml -f custom-values.yaml