Skip to content

cstanislawski/kubernetes-apt-version-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Kubernetes APT Version Manager

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).

Features

  • 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 and X.Y.Z version formats (normalizes to X.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.

Requirements

  • bash
  • curl
  • gpg
  • apt
  • grep
  • mktemp
  • sudo privileges

Installation

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

Usage

./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 or X.Y.Z format.
  • X.Y.Z formats will be automatically normalized to X.Y for repository configuration (as pkgs.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).

Examples

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

How it Works

  • Adding:
    • Downloads the GPG key for the specified minor version (X.Y) from pkgs.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.
  • 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.
  • Listing:
    • Parses /etc/apt/sources.list.d/kubernetes.list.
    • Extracts version numbers (X.Y) from the signed-by= paths using regex.
    • Prints the unique, sorted list of versions.

Contributing

Feel free to open issues or pull requests for improvements.

About

Easily add, remove, and list multiple Kubernetes APT repositories

Topics

Resources

License

Stars

Watchers

Forks

Languages