Use a private package repository server

GKE on Bare Metal supports using your own private package repository server. Use this feature to skip adding package repositories to each bare metal machine in your deployment. To ensure GKE on Bare Metal has all the required packages available, this page lists all the packages and dependencies you need to prepare in your private package repository server.

Before you begin

Ensure your package repository includes all needed packages and dependencies for your Linux distribution.

Ensure that all your bare metal machines can reach and already use your own package repository server.

Skip adding the default package repository

By default, GKE on Bare Metal adds the Docker apt repository and the needed GPG key to your machines.

To use your own package repository instead, set the addPackageRepo field to false under the osEnvironmentConfig section in your cluster's configuration file.

The entry in your configuration should look similar to the following example:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  osEnvironmentConfig:
    addPackageRepo: false

Needed packages and their dependencies

GKE on Bare Metal tries to install the following packages in your machines. Your private package repository server must contain all the packages and their dependencies with the versions listed below.

Ubuntu 18.04 and 20.04

Package Dependencies
python3 (>= 3.6.7-1) python3.6 (>= 3.6.7-1~), libpython3-stdlib (= 3.6.7-1~18.04)
apt-transport-https (>= 1.6.12) apt (>= 1.5)
ca-certificates (>=20210119) openssl (>= 1.1.0), debconf (>= 0.5) | debconf-2.0
conntrack (>= 1:1.4.4+snapshot20161117-6) libc6 (>= 2.14), libmnl0 (>= 1.0.3-4~), libnetfilter-conntrack3, libnfnetlink0
curl (>= 7.58.0) libc6 (>= 2.17), libcurl4 (= 7.58.0-2ubuntu3.12), zlib1g (>= 1:1.1.4)
software-properties-common (>= 0.96.24.32.14) python3:any (>= 3.3.2-2~), python3, python3-gi, gir1.2-glib-2.0, python-apt-common (>= 0.9), python3-dbus, python3-software-properties (= 0.96.24.32.14), ca-certificates
gnupg2 (>= 2.2.4) gnupg (>= 2.2.4-1ubuntu1.4)
socat (>= 1.7.3.2) libc6 (>= 2.15), libssl1.1 (>= 1.1.0), libwrap0 (>= 7.6-4~)
iproute2 (>= 4.15.0) libc6 (>= 2.27), libdb5.3, libelf1 (>= 0.131), libmnl0 (>= 1.0.3-4~), libselinux1 (>= 2.0.15)
ebtables (>= 2.0.10.4-3.5) libc6 (>= 2.14)
ethtool (>= 1:4.15-0)

CentOS 8 and RHEL

Package Dependencies
python36 (>= 3.6.8) /bin/sh
/usr/libexec/platform-python
/usr/sbin/alternatives
python3-pip
python3-setuptools
conntrack (>= 1.4.4-10.el8) /bin/sh
libc.so.6(GLIBC_2.15)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libmnl.so.0()(64bit)
libmnl.so.0(LIBMNL_1.0)(64bit)
libnetfilter_conntrack.so.3()(64bit)
libnetfilter_cthelper.so.0()(64bit)
libnetfilter_cthelper.so.0(LIBNETFILTER_CTHELPER_1.0)(64bit)
libnetfilter_cttimeout.so.1()(64bit)
libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.0)(64bit)
libnetfilter_cttimeout.so.1(LIBNETFILTER_CTTIMEOUT_1.1)(64bit)
libnetfilter_queue.so.1()(64bit)
libnfnetlink.so.0()(64bit)
libsystemd.so.0()(64bit)
libsystemd.so.0(LIBSYSTEMD_209)(64bit)
rtld(GNU_HASH)
systemd
device-mapper-persistent-data (>= 0.8.5-4.el8) expat
libaio.so.1()(64bit)
libaio.so.1(LIBAIO_0.1)(64bit)
libaio.so.1(LIBAIO_0.4)(64bit)
libc.so.6(GLIBC_2.16)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libexpat.so.1()(64bit)
libgcc_s.so.1()(64bit)
libgcc_s.so.1(GCC_3.0)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.15)(64bit)
libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
rtld(GNU_HASH)
dnf-plugins-core (>= 4.0.17-5.el8) python3-dnf-plugins-core = 4.0.17-5.el8
lvm2 (>= 8:2.03.09-5.el8) /bin/bash
/bin/sh
bash >= 4.0
device-mapper-persistent-data >= 0.7.0-0.1.rc6
libaio.so.1()(64bit)
libaio.so.1(LIBAIO_0.1)(64bit)
libaio.so.1(LIBAIO_0.4)(64bit)
libblkid.so.1()(64bit)
libblkid.so.1(BLKID_1.0)(64bit)
libblkid.so.1(BLKID_2.15)(64bit)
libblkid.so.1(BLKID_2.17)(64bit)
libblkid.so.1(BLKID_2.23)(64bit)
libc.so.6(GLIBC_2.28)(64bit)
libdevmapper-event.so.1.02()(64bit)
libdevmapper-event.so.1.02(Base)(64bit)
libdevmapper.so.1.02()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libreadline.so.7()(64bit)
libselinux.so.1()(64bit)
libsepol.so.1()(64bit)
libsystemd.so.0()(64bit)
libsystemd.so.0(LIBSYSTEMD_221)(64bit)
libsystemd.so.0(LIBSYSTEMD_222)(64bit)
libudev.so.1()(64bit)
libudev.so.1(LIBUDEV_183)(64bit)
lvm2-libs = 8:2.03.09-5.el8
module-init-tools
rtld(GNU_HASH)
systemd-sysv
systemd-units >= 189-3
socat (>= 1.7.3.3-2.el8) libc.so.6(GLIBC_2.15)(64bit)
libcrypto.so.1.1()(64bit)
libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
libreadline.so.7()(64bit)
librt.so.1()(64bit)
librt.so.1(GLIBC_2.2.5)(64bit)
libssl.so.1.1()(64bit)
libssl.so.1.1(OPENSSL_1_1_0)(64bit)
libutil.so.1()(64bit)
libutil.so.1(GLIBC_2.2.5)(64bit)
rtld(GNU_HASH)
iproute (>= 5.3.0-5.el8) /bin/sh
libc.so.6(GLIBC_2.27)(64bit)
libdb-5.3.so()(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libelf.so.1()(64bit)
libelf.so.1(ELFUTILS_1.0)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libmnl.so.0()(64bit)
libmnl.so.0(LIBMNL_1.0)(64bit)
libselinux.so.1()(64bit)
rtld(GNU_HASH)
iproute-tc (>= 5.3.0-5.el8)
iptables-ebtables (>= 1.8.4-15.el8_3.3) /bin/bash
/bin/sh
iptables = 1.8.4-15.el8_3.3
ethtool (>= 2:5.0-2.el8 ) libc.so.6(GLIBC_2.14)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
rtld(GNU_HASH)

Docker requires the following additional packages:

Ubuntu 18.04 and 20.04

Package Dependencies
containerd.io (= 1.4.3*) libc6 (>= 2.14), libseccomp2 (>= 2.4.0)
docker-ce (= 5:19.03.13*) containerd.io (>= 1.4.1), docker-ce-cli, iptables, libseccomp2 (>= 2.3.0), libc6 (>= 2.8), libdevmapper1.02.1 (>= 2:1.02.97), libsystemd0
docker-ce-cli version: (= 5:19.03.13*) libc6 (>= 2.4)

CentOS 8 and RHEL

Package Dependencies
containerd.io (= 1.4.3*) container-selinux >= 2:2.74
libseccomp
systemd
docker-ce (= 3:19.03.13*) (iptables or nftables)
container-selinux >= 2:2.74
containerd.io >= 1.2.2-3
device-mapper-libs >= 1.02.90-1
docker-ce-cli
libc.so.6(GLIBC_2.3)(64bit)
libcgroup
libdevmapper.so.1.02()(64bit)
libdevmapper.so.1.02(Base)(64bit)
libdevmapper.so.1.02(DM_1_02_97)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
libseccomp >= 2.3
libseccomp.so.2()(64bit)
libsystemd.so.0()(64bit)
libsystemd.so.0(LIBSYSTEMD_209)(64bit)
rtld(GNU_HASH)
systemd
tar
xz
docker-ce-cli version: (= 1:19.03.13*) libc.so.6(GLIBC_2.3)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libpthread.so.0(GLIBC_2.3.2)(64bit)
rtld(GNU_HASH)