A simple bash script (k8s-apt-manager.sh
) to manage multiple Kubernetes version repositories in Debian/Ubuntu-based systems using the official pkgs.k8s.io
APT repository.
This script allows you to easily add, remove, and list Kubernetes APT repository configurations for different minor versions (e.g., 1.31, 1.32).
- Add: Add APT repositories for one or more Kubernetes minor versions.
- Remove: Remove APT repositories for specific Kubernetes minor versions.
- List: List the Kubernetes minor versions currently configured by this script.
- Handles
X.Y
andX.Y.Z
version formats (normalizes toX.Y
). - Downloads and manages GPG keys for each version in
/etc/apt/keyrings/
. - Adds/removes repository lines in a single file:
/etc/apt/sources.list.d/kubernetes.list
. - Only adds repository lines if they don't already exist.
- Updates APT cache (
apt update
) only when changes are made.
bash
curl
gpg
apt
grep
mktemp
sudo
privileges
To make the script available for use, you can download it and make it executable:
curl -fsSL -o k8s-apt-manager.sh https://raw.githubusercontent.com/cstanislawski/kubernetes-apt-version-manager/main/k8s-apt-manager.sh
chmod +x k8s-apt-manager.sh
./k8s-apt-manager.sh [command] [version(s)]
Commands:
--add <versions>
: Add repositories for specified comma-separated versions (e.g.,1.32,1.31.0
). This is the default action if no command is specified.--remove <versions>
: Remove repositories and GPG keys for specified comma-separated versions.--list
: List currently configured Kubernetes repository versions found in/etc/apt/sources.list.d/kubernetes.list
.--help
: Display the help message.
Versions:
- Versions can be specified in
X.Y
orX.Y.Z
format. X.Y.Z
formats will be automatically normalized toX.Y
for repository configuration (aspkgs.k8s.io
is structured by minor version).- Multiple versions must be comma-separated without spaces (e.g.,
1.32.0,1.31.5,1.30
).
1. Add repositories for Kubernetes v1.32 and v1.31:
sudo ./k8s-apt-manager.sh --add 1.32.5,1.31
# OR (default command is --add)
sudo ./k8s-apt-manager.sh 1.32,1.31.0
2. List currently configured versions:
./k8s-apt-manager.sh --list
Output might look like:
Listing configured Kubernetes repository versions from /etc/apt/sources.list.d/kubernetes.list...
Configured versions:
1.31
1.32
3. Remove the repository for Kubernetes v1.31:
sudo ./k8s-apt-manager.sh --remove 1.31
4. Get help:
./k8s-apt-manager.sh --help
- Adding:
- Downloads the GPG key for the specified minor version (
X.Y
) frompkgs.k8s.io
. - Saves the key to
/etc/apt/keyrings/kubernetes-apt-keyring-vX.Y.gpg
. - Checks if the corresponding
deb
line already exists in/etc/apt/sources.list.d/kubernetes.list
. - If the line doesn't exist, it appends it.
- Runs
apt-get update
if any repository lines were added.
- Downloads the GPG key for the specified minor version (
- Removing:
- Deletes the GPG key
/etc/apt/keyrings/kubernetes-apt-keyring-vX.Y.gpg
. - Removes the corresponding
deb
line from/etc/apt/sources.list.d/kubernetes.list
. - Runs
apt-get update
if any repository lines were removed.
- Deletes the GPG key
- Listing:
- Parses
/etc/apt/sources.list.d/kubernetes.list
. - Extracts version numbers (
X.Y
) from thesigned-by=
paths using regex. - Prints the unique, sorted list of versions.
- Parses
Feel free to open issues or pull requests for improvements.