使用内部注册表部署容器化代理

您可以在未连接互联网的环境中部署容器化映像。在这种情况下,可以将映像从 SUSE 注册表复制到内部注册表,或保存到 tar 文件。

1. 将映像从 SUSE 注册表复制到内部注册表

下面的示例仅说明 Salt 代理的部署过程。

过程:从内部映像注册表部署 Salt 代理
  1. 在可访问 registry.suse.com 的计算机上安装 skopeo

    zypper in skopeo

    这可以是 SUSE Manager 服务器。

  2. 在不同注册表之间复制映像:

    for image in httpd salt-broker squid ssh tftpd; do
        skopeo copy docker://registry.suse.com/suse/manager/4.3/proxy-$image:latest docker://<your_server>/registry.suse.com/suse/manager/4.3/proxy-$image
    done
    skopeo copy docker://k8s.gcr.io/pause:latest docker://<your_server>/k8s.gcr.io/pause:latest

    如果注册表不安全,请在每条 skopeo 命令中添加 --dest-tls-verify=false

  3. 如果注册表不安全(例如未配置 SSL),请编辑容器化代理虚拟机上的如下文件,在 registries.insecure 部分添加注册表域:

    /etc/containers/registries.conf
  4. 启动 pod 前,将 Podman 指向获取内部注册表中的 pause 映像的位置:

    echo -e '[engine]\ninfra_image = "<your_server>/pause:latest"'>>/etc/containers/containers.conf
  5. 要开始使用内部注册表中的映像,请修改 /etc/sysconfig/uyuni-proxy-systemd-services.config 文件中的 NAMESPACE 值。

    要进行 k3s 部署,请在 helm 安装命令行中添加 --set repository=<your_server>

2. Podman 的物理隔离解决方案

下面的示例说明在无法连接互联网的计算机上部署容器化映像的过程。

过程:部署物理隔离的代理
  1. 启动 pod 前,将 Podman 指向获取内部注册表中的 pause 映像的位置:

    echo -e '[engine]\ninfra_image = "<your_server>/pause:latest"'>>/etc/containers/containers.conf

    此命令在 SLE 15 SP3 和更低版本的容器主机上不适用。

  2. 在连接到互联网的计算机上,运行以下命令:

    for image in httpd salt-broker squid ssh tftpd; do
        podman pull registry.suse.com/suse/manager/4.3/proxy-$image
    done
    podman pull k8s.gcr.io/pause
    
    podman save -m -o proxy-images.tar \
        k8s.gcr.io/pause \
        registry.suse.com/suse/manager/4.3/proxy-httpd \
        registry.suse.com/suse/manager/4.3/proxy-salt-broker \
        registry.suse.com/suse/manager/4.3/proxy-squid \
        registry.suse.com/suse/manager/4.3/proxy-ssh \
        registry.suse.com/suse/manager/4.3/proxy-tftpd

    要进行 k3s 部署,请在 helm 安装命令行中添加 --set repository=<your_server>

  3. proxy-images.tar 传输到物理隔离的代理上。

  4. 要让映像在需要时可供启动,请运行以下命令:

    podman load -i proxy-images.tar