Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel7

External Libraries for SCS

Three external libraries to install SCS are:

...

Podman 3.0.1 - Required for HTTP support. Version 3.0.1 is the source from the Kubic repo maintained by SUSE. 

...

Minimal Requirements and Their Needs

Requirement

Need

CentOS/RHEL

Minimum 7.9 version or higher

Offline repository

Creating an offline repository of RPM dependencies is required to install SCS on VMs with air-gapped network.

io_pause container image

k8s.gcr.io_pause:3.2 is a container and their offline copy is required to hold the network namespace for the

...

Bash Autocompletion - Required for tabbing on scsctl. It is sourced from the EPEL repository for CentOS.

Set up the Environment

Offline installation for CentOS requires RPMs and dependencies for all those packages on a repository. This is a real challenge in air-gapped networks or networks with no internet access, so the best way is to create a local offline repository.

Here are the minimal installation requirements to start with:

  1. Install a VM with CentOS 7.9 (or the previous version) and the “Minimal Server” profile.

  2. Run yum to resolve dependencies for a package.

  3. Need CentOS 7 server with internet access and some disk space to pull repo files.

SCS Dependencies

Install a set of packages to download RPMs and dependencies then create a repository. To pull, RPMs and their dependencies use a yum-plugin called downloadonly. To create the repository for offline usage, we use a tool called createrepo.

Steps to check SCS dependencies

  1. Install the yum-downloadonly plugin
    yum -y install yum-plugin-downloadonly
    By default, this package comes in large installations.

  2. Create a directory for download packages.
    mkdir packages

  3. Query RPM’s dependencies. First, install SCS and then query the RPM for dependencies.
    rpm -qpR swarm-scs-{version}.x86_64.rpm

Result is:

...

glibc >= 2.17 
bash-completion 
bash-completion-extras 
dhcp 
python3 
iproute 
chrony 
NetworkManager 
rsyslog 
logrotate 
cronie 
/bin/sh 
/bin/sh 
/bin/sh 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1 
rpmlib(CompressedFileNames) <= 3.0.4-1

Download SCS Dependencies

Pull the following from the above list to download SCS and RPM’s dependencies:

...

Query

...

Command

...

bash-completion

...

yum -y install --downloadonly --downloaddir=packages/ bash-completion 

...

bash-completion-extras

...

yum -y install --downloadonly --downloaddir=packages/ bash-completion-extras 

...

chrony

...

yum -y install --downloadonly --downloaddir=packages/ chrony 

...

cronie

...

yum -y install --downloadonly --downloaddir=packages/ cronie 

...

dhcp

...

yum -y install --downloadonly --downloaddir=packages/ dhcp

...

iproute

...

yum -y install --downloadonly --downloaddir=packages/ iproute 

...

logrotate

...

yum -y install --downloadonly --downloaddir=packages/ logrotate

...

NetworkManager

...

yum -y install --downloadonly --downloaddir=packages/ NetworkManager

...

python3

...

yum -y install --downloadonly --downloaddir=packages/ python3

...

rsyslog

...

yum -y install --downloadonly --downloaddir=packages/ rsyslog

Download Podman 3.0.1 Repo

To pull the correct version and its dependencies, enable the Kubic repository.

  1. Download Kubic repo from SUSE.

    Code Block
    languagebash
    cd /etc/yum.repo.d/ 
    curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo
    https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_7/devel:kubic:libcontainers:stable.repo 
  2. Download Podman packages and dependencies.
    yum -y install --downloadonly --downloaddir=packages/ podman

Result:

Code Block
languagebash
yum -y install --downloadonly --downloaddir=packages/ podman 
Loaded plugins: fastestmirror 
Loading mirror speeds from cached hostfile 
base:   
epel:   
extras:   
updates: mirror.sjc02.svwh.net 
Resolving Dependencies 
--> Running transaction check 
---> Package podman.x86_64 0:3.0.1-2.el7.3.1 will be installed 
--> Processing Dependency: podman-plugins = 3.0.1-2.el7.3.1 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: slirp4netns >= 0.3.0-2 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: runc >= 2:1.0.0-148.rc93 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: containers-common >= 4:1-4 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: containernetworking-plugins >= 0.9.1-1 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: conmon >= 2:2.0.16-1 for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: nftables for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: container-selinux for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Processing Dependency: catatonit for package: podman-3.0.1-2.el7.3.1.x86_64 
--> Running transaction check 
---> Package catatonit.x86_64 0:0.1.5-6.el7.3.1 will be installed 
---> Package conmon.x86_64 2:2.0.29-1.el7.3.2 will be installed 
---> Package container-selinux.noarch 2:2.119.2-1.911c772.el7_8 will be installed 
--> Processing Dependency: policycoreutils-python for package: 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 
---> Package containernetworking-plugins.x86_64 0:1.0.0-0.2.rc1.el7.6.2 will be installed 
---> Package containers-common.noarch 4:1-18.el7.20.1 will be installed 
--> Processing Dependency: fuse-overlayfs for package: 4:containers-common-1-18.el7.20.1.noarch 
---> Package nftables.x86_64 1:0.8-14.el7 will be installed 
--> Processing Dependency: libnftnl.so.7(LIBNFTNL_5)(64bit) for package: 1:nftables-0.8-14.el7.x86_64 
--> Processing Dependency: libnftnl.so.7()(64bit) for package: 1:nftables-0.8-14.el7.x86_64 
---> Package podman-plugins.x86_64 0:3.0.1-2.el7.3.1 will be installed
--> Processing Dependency: dnsmasq for package: podman-plugins-3.0.1-2.el7.3.1.x86_64 
---> Package runc.x86_64 2:1.0.1-0.el7.1.2 will be installed 
--> Processing Dependency: criu for package: 2:runc-1.0.1-0.el7.1.2.x86_64 
---> Package slirp4netns.x86_64 0:1.1.8-4.el7.7.1 will be installed 
--> Processing Dependency: libslirp.so.0(SLIRP_4.1)(64bit) for package: slirp4netns-1.1.8-4.el7.7.1.x86_64 
--> Processing Dependency: libslirp.so.0(SLIRP_4.0)(64bit) for package: slirp4netns-1.1.8-4.el7.7.1.x86_64 
--> Processing Dependency: libslirp.so.0()(64bit) for package: slirp4netns-1.1.8-4.el7.7.1.x86_64 
--> Running transaction check 
---> Package criu.x86_64 0:3.12-2.el7 will be installed 
--> Processing Dependency: libprotobuf-c.so.1(LIBPROTOBUF_C_1.0.0)(64bit) for package: criu-3.12-2.el7.x86_64 
--> Processing Dependency: libprotobuf-c.so.1()(64bit) for package: criu-3.12-2.el7.x86_64 
--> Processing Dependency: libnet.so.1()(64bit) for package: criu-3.12-2.el7.x86_64 
---> Package dnsmasq.x86_64 0:2.76-17.el7_9.3 will be installed 
--> Processing Dependency: libnettle.so.4()(64bit) for package: dnsmasq-2.76-17.el7_9.3.x86_64 
---> Package fuse-overlayfs.x86_64 0:1.5.0-1.el7.1.1 will be installed 
--> Processing Dependency: libfuse3.so.3(FUSE_3.2)(64bit) for package: fuse-overlayfs-1.5.0-1.el7.1.1.x86_64 
--> Processing Dependency: libfuse3.so.3(FUSE_3.0)(64bit) for package: fuse-overlayfs-1.5.0-1.el7.1.1.x86_64 
--> Processing Dependency: fuse3 for package: fuse-overlayfs-1.5.0-1.el7.1.1.x86_64 
--> Processing Dependency: libfuse3.so.3()(64bit) for package: fuse-overlayfs-1.5.0-1.el7.1.1.x86_64 
---> Package libnftnl.x86_64 0:1.0.8-3.el7 will be installed 
---> Package libslirp.x86_64 0:4.3.1-4.el7 will be installed 
---> Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed 
--> Processing Dependency: setools-libs >= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libsemanage-python >= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: audit-libs-python >= 2.1.3-4 for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: python-IPy for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libqpol.so.1(VERS_1.4)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libqpol.so.1(VERS_1.2)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libcgroup for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libapol.so.4(VERS_4.0)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libqpol.so.1()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Processing Dependency: libapol.so.4()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64 
--> Running transaction check 
---> Package audit-libs-python.x86_64 0:2.8.5-4.el7 will be installed 
---> Package checkpolicy.x86_64 0:2.5-8.el7 will be installed 
---> Package fuse3.x86_64 0:3.6.1-4.el7 will be installed 
--> Processing Dependency: /etc/fuse.conf for package: fuse3-3.6.1-4.el7.x86_64 
---> Package fuse3-libs.x86_64 0:3.6.1-4.el7 will be installed 
---> Package libcgroup.x86_64 0:0.41-21.el7 will be installed 
---> Package libnet.x86_64 0:1.1.6-7.el7 will be installed 
---> Package libsemanage-python.x86_64 0:2.5-14.el7 will be installed 
---> Package nettle.x86_64 0:2.7.1-9.el7_9 will be installed 
---> Package protobuf-c.x86_64 0:1.0.2-3.el7 will be installed 
---> Package python-IPy.noarch 0:0.75-6.el7 will be installed 
---> Package setools-libs.x86_64 0:3.3.8-4.el7 will be installed 
--> Running transaction check 
---> Package fuse.x86_64 0:2.9.2-11.el7 will be installed 
--> Finished Dependency Resolution 

Dependencies Resolved

====================================================================================== 

Package                       Arch     Version                       Repository
                                                                                 Size 
====================================================================================== 
Installing:
 podman                        x86_64   3.0.1-2.el7.3.1               kubic      21 M 
Installing for dependencies: 
 audit-libs-python             x86_64   2.8.5-4.el7                   base       76 k 
 catatonit                     x86_64   0.1.5-6.el7.3.1               kubic     326 k 
 checkpolicy                   x86_64   2.5-8.el7                     base      295 k 
 conmon                        x86_64   2:2.0.29-1.el7.3.2            kubic      45 k 
 container-selinux             noarch   2:2.119.2-1.911c772.el7_8     extras     40 k 
 containernetworking-plugins   x86_64   1.0.0-0.2.rc1.el7.6.2         kubic      39 M 
 containers-common             noarch   4:1-18.el7.20.1               kubic      57 k 
 criu                          x86_64   3.12-2.el7                    base      453 k 
 dnsmasq                       x86_64   2.76-17.el7_9.3               updates   281 k 
 fuse                          x86_64   2.9.2-11.el7                  base       86 k 
 fuse-overlayfs                x86_64   1.5.0-1.el7.1.1               kubic      67 k 
 fuse3                         x86_64   3.6.1-4.el7                   extras     47 k 
 fuse3-libs                    x86_64   3.6.1-4.el7                   extras     82 k 
 libcgroup                     x86_64   0.41-21.el7                   base       66 k 
 libnet                        x86_64   1.1.6-7.el7                   base       59 k 
 libnftnl                      x86_64   1.0.8-3.el7                   base       78 k 
 libsemanage-python            x86_64   2.5-14.el7                    base      113 k 
 libslirp                      x86_64   4.3.1-4.el7                   kubic      60 k 
 nettle                        x86_64   2.7.1-9.el7_9                 updates   328 k 
 nftables                      x86_64   1:0.8-14.el7                  base      186 k 
 podman-plugins                x86_64   3.0.1-2.el7.3.1               kubic     2.5 M 
 policycoreutils-python        x86_64   2.5-34.el7                    base      457 k 
 protobuf-c                    x86_64   1.0.2-3.el7                   base       28 k 
 python-IPy                    noarch   0.75-6.el7                    base       32 k 
 runc                          x86_64   2:1.0.1-0.el7.1.2             kubic     6.0 M 
 setools-libs                  x86_64   3.3.8-4.el7                   base      620 k 
 slirp4netns                   x86_64   1.1.8-4.el7.7.1               kubic      49 k 

Transaction Summary
====================================================================================== 
Install  1 Package (+27 Dependent packages)

Total download size: 72 M 
Installed size: 180 M 
Background downloading packages, then exiting: 
(1/28): container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm   |  40 kB  00:00:00 
(2/28): audit-libs-python-2.8.5-4.el7.x86_64.rpm               |  76 kB  00:00:00 
(3/28): checkpolicy-2.5-8.el7.x86_64.rpm                       | 295 kB  00:00:00 
warning: /root/packages/conmon-2.0.29-1.el7.3.2.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 75060aa4: NOKEY 
Public key for conmon-2.0.29-1.el7.3.2.x86_64.rpm is not installed 
(4/28): conmon-2.0.29-1.el7.3.2.x86_64.rpm                     |  45 kB  00:00:01 
(5/28): catatonit-0.1.5-6.el7.3.1.x86_64.rpm                   | 326 kB  00:00:01 
(6/28): fuse-2.9.2-11.el7.x86_64.rpm                           |  86 kB  00:00:00 
(7/28): containers-common-1-18.el7.20.1.noarch.rpm             |  57 kB  00:00:00 
(8/28): dnsmasq-2.76-17.el7_9.3.x86_64.rpm                     | 281 kB  00:00:00 
(9/28): fuse3-3.6.1-4.el7.x86_64.rpm                           |  47 kB  00:00:00 
(10/28): fuse-overlayfs-1.5.0-1.el7.1.1.x86_64.rpm             |  67 kB  00:00:00 
(11/28): libcgroup-0.41-21.el7.x86_64.rpm                      |  66 kB  00:00:00 
(12/28): fuse3-libs-3.6.1-4.el7.x86_64.rpm                     |  82 kB  00:00:00 
(13/28): libnet-1.1.6-7.el7.x86_64.rpm                         |  59 kB  00:00:00 
(14/28): libnftnl-1.0.8-3.el7.x86_64.rpm                       |  78 kB  00:00:00 
(15/28): libsemanage-python-2.5-14.el7.x86_64.rpm              | 113 kB  00:00:00 
(16/28): libslirp-4.3.1-4.el7.x86_64.rpm                       |  60 kB  00:00:00 
(17/28): nettle-2.7.1-9.el7_9.x86_64.rpm                       | 328 kB  00:00:00 
(18/28): nftables-0.8-14.el7.x86_64.rpm                        | 186 kB  00:00:00 
(19/28): criu-3.12-2.el7.x86_64.rpm                            | 453 kB  00:00:02 
(20/28): podman-3.0.1-2.el7.3.1.x86_64.rpm                     |  21 MB  00:00:07 
(21/28): protobuf-c-1.0.2-3.el7.x86_64.rpm                     |  28 kB  00:00:00 
(22/28): policycoreutils-python-2.5-34.el7.x86_64.rpm          | 457 kB  00:00:00 
(23/28): python-IPy-0.75-6.el7.noarch.rpm                      |  32 kB  00:00:00 
(24/28): podman-plugins-3.0.1-2.el7.3.1.x86_64.rpm             | 2.5 MB  00:00:02 
(25/28): setools-libs-3.3.8-4.el7.x86_64.rpm                   | 620 kB  00:00:00 
(26/28): runc-1.0.1-0.el7.1.2.x86_64.rpm                       | 6.0 MB  00:00:03 
(27/28): slirp4netns-1.1.8-4.el7.7.1.x86_64.rpm                |  49 kB  00:00:00 
(28/28): containernetworking-plugins-1.0.0-0.2.rc1.el7.6.2.x86 |  39 MB  00:00:17 
-------------------------------------------------------------------------------------- 
Total                                                    3.8 MB/s |  72 MB  00:18 
exiting because "Download Only" specified

...

Note

Downloaded packages are not enough to install SCS Server due to their 3rd parties external packages. Suggest query on each downloaded RPM packages to get the new list for additional download.

...

Podman.

There are two ways to set up repositories:

Child pages (Children Display)