From 47c66f968ff4de6037192ac5770584ec9e40846b Mon Sep 17 00:00:00 2001 From: Victor Hang Date: Fri, 4 Oct 2024 20:40:28 +0200 Subject: [PATCH] =?UTF-8?q?chore=20=F0=9F=A7=B9:=20upgrade=20k8s=20to=201.?= =?UTF-8?q?31.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Victor Hang --- .github/workflows/build-frieren.yaml | 1 - .github/workflows/build-gojo.yaml | 1 - README.md | 34 ++++++++++++++++++++++++++++ base.nix | 22 +++++++++++++++++- nixosModules/kubernetes/default.nix | 22 +++++++++++++++--- nixosModules/kubernetes/kubeadm.nix | 7 +++--- nixosModules/kubernetes/kubelet.nix | 7 +++--- npins/sources.json | 30 ++++++++++++++++++++++++ 8 files changed, 112 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-frieren.yaml b/.github/workflows/build-frieren.yaml index 3324d55..a5f1c76 100644 --- a/.github/workflows/build-frieren.yaml +++ b/.github/workflows/build-frieren.yaml @@ -48,6 +48,5 @@ jobs: - name: Build run: nix-build '' -A config.system.build.toplevel -I nixos-config=profiles/frieren/configuration.nix - name: Push - if: github.ref == 'refs/heads/main' run: | cachix push didactiklabs ./result diff --git a/.github/workflows/build-gojo.yaml b/.github/workflows/build-gojo.yaml index 2bea2a3..5c189a7 100644 --- a/.github/workflows/build-gojo.yaml +++ b/.github/workflows/build-gojo.yaml @@ -48,6 +48,5 @@ jobs: - name: Build run: nix-build '' -A config.system.build.toplevel -I nixos-config=profiles/gojo/configuration.nix - name: Push - if: github.ref == 'refs/heads/main' run: | cachix push didactiklabs ./result diff --git a/README.md b/README.md index 2427a25..cfb1d49 100644 --- a/README.md +++ b/README.md @@ -17,3 +17,37 @@ Install or upgrade with a simple command: ```bash colmena apply ``` + +#### - Kubernetes + +To upgrade kubernetes version you must do the following: + +##### Upgrade the control plane and kubelet configs + +Run this with this repo to update the pkgs pinning: + +```bash +npins add --name kubeadm github kubernetes kubernetes --at v1.31.1 +colmena apply +``` + +Then for the first controlplane: + +```bash +colmena exec --on "sudo kubeadm upgrade apply v1.31.1 -y" +``` + +Then for others and workers: + +```bash +colmena exec --on , "sudo kubeadm upgrade node" +``` + +##### Upgrade kubelet + +Now get back to the repo and run: + +```bash +npins add --name kubelet github kubernetes kubernetes --at v1.31.1 +colmena apply +``` diff --git a/base.nix b/base.nix index 10bbb1d..31df8c1 100644 --- a/base.nix +++ b/base.nix @@ -7,6 +7,18 @@ let sources = import ./npins; pkgs = import sources.nixpkgs { }; + + kubernetesComponent = + component: source: + pkgs.kubernetes.overrideAttrs (oldAttrs: { + src = source; + components = [ component ]; + }); + + # Define kubelet and kubeadm using the common function with different versions and hashes + kubelet = kubernetesComponent "cmd/kubelet" sources.kubelet; + kubeadm = kubernetesComponent "cmd/kubeadm" sources.kubeadm; + hostProfile = import ./profiles/${hostname} { inherit lib @@ -22,7 +34,15 @@ in ./tools.nix (import "${sources.nixbook}//nixosModules/caCertificates.nix") ./nixosModules/k3s - ./nixosModules/kubernetes + (import ./nixosModules/kubernetes { + inherit + pkgs + config + lib + kubelet + kubeadm + ; + }) (import ./nixosModules/networkManager.nix { inherit lib config pkgs; }) (import "${sources.home-manager}/nixos") hostProfile diff --git a/nixosModules/kubernetes/default.nix b/nixosModules/kubernetes/default.nix index 5b20b59..7e185db 100644 --- a/nixosModules/kubernetes/default.nix +++ b/nixosModules/kubernetes/default.nix @@ -1,6 +1,8 @@ { config, pkgs, + kubelet, + kubeadm, lib, ... }: @@ -18,8 +20,22 @@ in }; }; imports = [ - ./kubeadm.nix - ./kubelet.nix + (import ./kubeadm.nix { + inherit + pkgs + kubeadm + config + lib + ; + }) + (import ./kubelet.nix { + inherit + pkgs + kubelet + config + lib + ; + }) ]; config = lib.mkIf cfg.kubernetes.enable { system = { @@ -100,7 +116,7 @@ in "-/etc/sysconfig/kubelet" ]; ExecStart = [ - "${pkgs.kubernetes}/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS" + "${kubelet}/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS" ]; }; wantedBy = [ "multi-user.target" ]; diff --git a/nixosModules/kubernetes/kubeadm.nix b/nixosModules/kubernetes/kubeadm.nix index 1ebfb9c..ba058bf 100644 --- a/nixosModules/kubernetes/kubeadm.nix +++ b/nixosModules/kubernetes/kubeadm.nix @@ -1,16 +1,17 @@ { config, pkgs, + kubeadm, lib, ... }: let cfg = config.customNixOSModules; - kubeadm = pkgs.runCommand "get-kubeadm" { nativeBuildInputs = [ ]; } '' + kubeadm-bin = pkgs.runCommand "get-kubeadm" { nativeBuildInputs = [ ]; } '' mkdir -p $out/bin - cp ${pkgs.kubernetes}/bin/kubeadm $out/bin/ + cp ${kubeadm}/bin/kubeadm $out/bin/ ''; in { - config = lib.mkIf cfg.kubernetes.enable { environment.systemPackages = [ kubeadm ]; }; + config = lib.mkIf cfg.kubernetes.enable { environment.systemPackages = [ kubeadm-bin ]; }; } diff --git a/nixosModules/kubernetes/kubelet.nix b/nixosModules/kubernetes/kubelet.nix index 2eac4a5..2b2a162 100644 --- a/nixosModules/kubernetes/kubelet.nix +++ b/nixosModules/kubernetes/kubelet.nix @@ -1,16 +1,17 @@ { config, pkgs, + kubelet, lib, ... }: let cfg = config.customNixOSModules; - kubelet = pkgs.runCommand "get-kubelet" { nativeBuildInputs = [ ]; } '' + kubelet-bin = pkgs.runCommand "get-kubelet" { nativeBuildInputs = [ ]; } '' mkdir -p $out/bin - cp ${pkgs.kubernetes}/bin/kubelet $out/bin/ + cp ${kubelet}/bin/kubelet $out/bin/ ''; in { - config = lib.mkIf cfg.kubernetes.enable { environment.systemPackages = [ kubelet ]; }; + config = lib.mkIf cfg.kubernetes.enable { environment.systemPackages = [ kubelet-bin ]; }; } diff --git a/npins/sources.json b/npins/sources.json index 3f186ac..0e3b098 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -27,6 +27,36 @@ "url": "https://github.com/nix-community/home-manager/archive/2f23fa308a7c067e52dfcc30a0758f47043ec176.tar.gz", "hash": "00wp0s9b5nm5rsbwpc1wzfrkyxxmqjwsc1kcibjdbfkh69arcpsn" }, + "kubeadm": { + "type": "GitRelease", + "repository": { + "type": "GitHub", + "owner": "kubernetes", + "repo": "kubernetes" + }, + "pre_releases": false, + "version_upper_bound": null, + "release_prefix": null, + "version": "v1.31.1", + "revision": "4190e7226e6c56f2317388e88511f3f73cfbe29c", + "url": "https://api.github.com/repos/kubernetes/kubernetes/tarball/v1.31.1", + "hash": "09gx0hd2aisk0y3pih7vx5c5s4kk9x9fzmgqsxd4pq52cqsds8aq" + }, + "kubelet": { + "type": "GitRelease", + "repository": { + "type": "GitHub", + "owner": "kubernetes", + "repo": "kubernetes" + }, + "pre_releases": false, + "version_upper_bound": null, + "release_prefix": null, + "version": "v1.31.0", + "revision": "e73bd2e33f000c5a2886771e712d6c90796a4873", + "url": "https://api.github.com/repos/kubernetes/kubernetes/tarball/v1.31.0", + "hash": "1p0vgjw56x3sbkzg888p4xxzp1133rsmh1pkarb6rkrffbrbfbiv" + }, "nixbook": { "type": "Git", "repository": {