From e655386bc74311b1bcaf97fc382e833801981077 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= <valtri@civ.zcu.cz>
Date: Fri, 14 Jun 2024 07:30:03 +0000
Subject: [PATCH] Update versions - kubernetes to 1.30.2

* k8s
* helm
* calico
* prometheus
* grafana
---
 cesnet-central/playbooks/files/calico.yaml | 90 ++++++++++++++--------
 cesnet-central/playbooks/k8s.yaml          | 16 ++--
 cesnet-central/playbooks/upgrade.yaml      |  6 +-
 3 files changed, 69 insertions(+), 43 deletions(-)

diff --git a/cesnet-central/playbooks/files/calico.yaml b/cesnet-central/playbooks/files/calico.yaml
index 3998fd1..7f4cb47 100644
--- a/cesnet-central/playbooks/files/calico.yaml
+++ b/cesnet-central/playbooks/files/calico.yaml
@@ -475,7 +475,7 @@ spec:
               numAllowedLocalASNumbers:
                 description: Maximum number of local AS numbers that are allowed in
                   the AS path for received routes. This removes BGP loop prevention
-                  and should only be used if absolutely necesssary.
+                  and should only be used if absolutely necessary.
                 format: int32
                 type: integer
               password:
@@ -1057,6 +1057,13 @@ spec:
                   Loose]'
                 pattern: ^(?i)(Disabled|Strict|Loose)?$
                 type: string
+              bpfExcludeCIDRsFromNAT:
+                description: BPFExcludeCIDRsFromNAT is a list of CIDRs that are to
+                  be excluded from NAT resolution so that host can handle them. A
+                  typical usecase is node local DNS cache.
+                items:
+                  type: string
+                type: array
               bpfExtToServiceConnmark:
                 description: 'BPFExtToServiceConnmark in BPF mode, control a 32bit
                   mark that is set on connections from an external client to a local
@@ -1099,8 +1106,9 @@ spec:
                 - Disabled
                 type: string
               bpfKubeProxyEndpointSlicesEnabled:
-                description: BPFKubeProxyEndpointSlicesEnabled in BPF mode, controls
-                  whether Felix's embedded kube-proxy accepts EndpointSlices or not.
+                description: BPFKubeProxyEndpointSlicesEnabled is deprecated and has
+                  no effect. BPF kube-proxy always accepts endpoint slices. This option
+                  will be removed in the next release.
                 type: boolean
               bpfKubeProxyIptablesCleanupEnabled:
                 description: 'BPFKubeProxyIptablesCleanupEnabled, if enabled in BPF
@@ -1219,11 +1227,23 @@ spec:
                 type: string
               debugDisableLogDropping:
                 type: boolean
+              debugHost:
+                description: DebugHost is the host IP or hostname to bind the debug
+                  port to.  Only used if DebugPort is set. [Default:localhost]
+                type: string
               debugMemoryProfilePath:
                 type: string
+              debugPort:
+                description: DebugPort if set, enables Felix's debug HTTP port, which
+                  allows memory and CPU profiles to be retrieved.  The debug port
+                  is not secure, it should not be exposed to the internet.
+                type: integer
               debugSimulateCalcGraphHangAfter:
                 pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
                 type: string
+              debugSimulateDataplaneApplyDelay:
+                pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
+                type: string
               debugSimulateDataplaneHangAfter:
                 pattern: ^([0-9]+(\\.[0-9]+)?(ms|s|m|h))*$
                 type: string
@@ -1263,6 +1283,12 @@ spec:
                 type: string
               endpointReportingEnabled:
                 type: boolean
+              endpointStatusPathPrefix:
+                description: "EndpointStatusPathPrefix is the path to the directory
+                  where endpoint status will be written. Endpoint status file reporting
+                  is disabled if field is left empty. \n Chosen directory should match
+                  the directory used by the CNI for PodStartupDelay. [Default: \"\"]"
+                type: string
               externalNodesList:
                 description: ExternalNodesCIDRList is a list of CIDR's of external-non-calico-nodes
                   which may source tunnel traffic and have the tunneled traffic be
@@ -1534,7 +1560,7 @@ spec:
                 description: 'MetadataAddr is the IP address or domain name of the
                   server that can answer VM queries for cloud-init metadata. In OpenStack,
                   this corresponds to the machine running nova-api (or in Ubuntu,
-                  nova-api-metadata). A value of none (case insensitive) means that
+                  nova-api-metadata). A value of none (case-insensitive) means that
                   Felix should not set up any NAT rule for the metadata path. [Default:
                   127.0.0.1]'
                 type: string
@@ -2627,17 +2653,17 @@ spec:
                   any DNAT.
                 type: boolean
               selector:
-                description: "The selector is an expression used to pick pick out
-                  the endpoints that the policy should be applied to. \n Selector
-                  expressions follow this syntax: \n \tlabel == \"string_literal\"
-                  \ ->  comparison, e.g. my_label == \"foo bar\" \tlabel != \"string_literal\"
-                  \  ->  not equal; also matches if label is not present \tlabel in
-                  { \"a\", \"b\", \"c\", ... }  ->  true if the value of label X is
-                  one of \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\",
-                  ... }  ->  true if the value of label X is not one of \"a\", \"b\",
-                  \"c\" \thas(label_name)  -> True if that label is present \t! expr
-                  -> negation of expr \texpr && expr  -> Short-circuit and \texpr
-                  || expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
+                description: "The selector is an expression used to pick out the endpoints
+                  that the policy should be applied to. \n Selector expressions follow
+                  this syntax: \n \tlabel == \"string_literal\"  ->  comparison, e.g.
+                  my_label == \"foo bar\" \tlabel != \"string_literal\"   ->  not
+                  equal; also matches if label is not present \tlabel in { \"a\",
+                  \"b\", \"c\", ... }  ->  true if the value of label X is one of
+                  \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\", ... }
+                  \ ->  true if the value of label X is not one of \"a\", \"b\", \"c\"
+                  \thas(label_name)  -> True if that label is present \t! expr ->
+                  negation of expr \texpr && expr  -> Short-circuit and \texpr ||
+                  expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
                   or the empty selector -> matches all endpoints. \n Label names are
                   allowed to contain alphanumerics, -, _ and /. String literals are
                   more permissive but they do not support escape characters. \n Examples
@@ -4295,17 +4321,17 @@ spec:
                   type: string
                 type: array
               selector:
-                description: "The selector is an expression used to pick pick out
-                  the endpoints that the policy should be applied to. \n Selector
-                  expressions follow this syntax: \n \tlabel == \"string_literal\"
-                  \ ->  comparison, e.g. my_label == \"foo bar\" \tlabel != \"string_literal\"
-                  \  ->  not equal; also matches if label is not present \tlabel in
-                  { \"a\", \"b\", \"c\", ... }  ->  true if the value of label X is
-                  one of \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\",
-                  ... }  ->  true if the value of label X is not one of \"a\", \"b\",
-                  \"c\" \thas(label_name)  -> True if that label is present \t! expr
-                  -> negation of expr \texpr && expr  -> Short-circuit and \texpr
-                  || expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
+                description: "The selector is an expression used to pick out the endpoints
+                  that the policy should be applied to. \n Selector expressions follow
+                  this syntax: \n \tlabel == \"string_literal\"  ->  comparison, e.g.
+                  my_label == \"foo bar\" \tlabel != \"string_literal\"   ->  not
+                  equal; also matches if label is not present \tlabel in { \"a\",
+                  \"b\", \"c\", ... }  ->  true if the value of label X is one of
+                  \"a\", \"b\", \"c\" \tlabel not in { \"a\", \"b\", \"c\", ... }
+                  \ ->  true if the value of label X is not one of \"a\", \"b\", \"c\"
+                  \thas(label_name)  -> True if that label is present \t! expr ->
+                  negation of expr \texpr && expr  -> Short-circuit and \texpr ||
+                  expr  -> Short-circuit or \t( expr ) -> parens for grouping \tall()
                   or the empty selector -> matches all endpoints. \n Label names are
                   allowed to contain alphanumerics, -, _ and /. String literals are
                   more permissive but they do not support escape characters. \n Examples
@@ -4591,7 +4617,7 @@ rules:
       - create
       - update
   # Calico must update some CRDs.
-  - apiGroups: [ "crd.projectcalico.org" ]
+  - apiGroups: ["crd.projectcalico.org"]
     resources:
       - caliconodestatuses
     verbs:
@@ -4770,7 +4796,7 @@ spec:
         # It can be deleted if this is a fresh installation, or if you have already
         # upgraded to use calico-ipam.
         - name: upgrade-ipam
-          image: docker.io/calico/cni:v3.27.0
+          image: docker.io/calico/cni:v3.28.0
           imagePullPolicy: IfNotPresent
           command: ["/opt/cni/bin/calico-ipam", "-upgrade"]
           envFrom:
@@ -4798,7 +4824,7 @@ spec:
         # This container installs the CNI binaries
         # and CNI network config file on each node.
         - name: install-cni
-          image: docker.io/calico/cni:v3.27.0
+          image: docker.io/calico/cni:v3.28.0
           imagePullPolicy: IfNotPresent
           command: ["/opt/cni/bin/install"]
           envFrom:
@@ -4841,7 +4867,7 @@ spec:
         # i.e. bpf at /sys/fs/bpf and cgroup2 at /run/calico/cgroup. Calico-node initialisation is executed
         # in best effort fashion, i.e. no failure for errors, to not disrupt pod creation in iptable mode.
         - name: "mount-bpffs"
-          image: docker.io/calico/node:v3.27.0
+          image: docker.io/calico/node:v3.28.0
           imagePullPolicy: IfNotPresent
           command: ["calico-node", "-init", "-best-effort"]
           volumeMounts:
@@ -4867,7 +4893,7 @@ spec:
         # container programs network policy and routes on each
         # host.
         - name: calico-node
-          image: docker.io/calico/node:v3.27.0
+          image: docker.io/calico/node:v3.28.0
           imagePullPolicy: IfNotPresent
           envFrom:
           - configMapRef:
@@ -5084,7 +5110,7 @@ spec:
       priorityClassName: system-cluster-critical
       containers:
         - name: calico-kube-controllers
-          image: docker.io/calico/kube-controllers:v3.27.0
+          image: docker.io/calico/kube-controllers:v3.28.0
           imagePullPolicy: IfNotPresent
           env:
             # Choose which controllers to run.
diff --git a/cesnet-central/playbooks/k8s.yaml b/cesnet-central/playbooks/k8s.yaml
index 5ff3340..96a651e 100644
--- a/cesnet-central/playbooks/k8s.yaml
+++ b/cesnet-central/playbooks/k8s.yaml
@@ -142,10 +142,10 @@
         # kube_nvidia_device_plugin_version: "v0.12.2"
         # kube_nvidia_driver_version: "515" # "525"
         kube_nvidia_support: true
-        kube_version: 1.29.4
+        kube_version: 1.30.2
         kube_network: 'none'  # custom network installation
         kube_install_helm: true
-        kube_install_helm_version: 'v3.13.0'
+        kube_install_helm_version: 'v3.15.2'
         kube_install_metrics: true
   tasks:
     - name: Create kubectl config dir
@@ -170,11 +170,11 @@
 - name: K8s network deployment
   hosts: master
   vars:
-    calicoctl_version: 3.27.0
+    calicoctl_version: 3.28.0
   tasks:
     - name: Calico config
       copy:
-        # https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yaml
+        # https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml
         src: files/calico.yaml
         dest: /tmp/calico-net.yaml
         mode: 0644
@@ -205,7 +205,7 @@
         # must be IPv4 address or hostname
         kube_server: "{{ hostvars[groups['master'][0]].kube_server | default(groups['master'][0]) }}"
         kube_type_of_node: wn
-        kube_version: 1.29.4
+        kube_version: 1.30.2
         kubelet_extra_args: '--volume-stats-agg-period 0'
   tasks:
     - name: Overlay2 mountpoint workaround to docker.service unit
@@ -353,7 +353,7 @@
       when: true
     - name: Cert-manager
       vars:
-        version: 1.13.3
+        version: 1.15.0
         config: >-
           --version={{ version }}
           --set ingressShim.defaultIssuerName=letsencrypt-prod
@@ -465,7 +465,7 @@
     - name: Prometheus
       vars:
         config: >-
-          --version=25.8.2
+          --version=25.21.0
           -f /tmp/prometheus.yaml
       shell: |-
         helm status --namespace prometheus prometheus
@@ -513,7 +513,7 @@
     - name: Grafana
       vars:
         config: >-
-          --version=7.0.3
+          --version=8.0.2
           -f /tmp/grafana.yaml
       shell: |-
         helm status --namespace grafana grafana
diff --git a/cesnet-central/playbooks/upgrade.yaml b/cesnet-central/playbooks/upgrade.yaml
index 9c041da..2c76219 100644
--- a/cesnet-central/playbooks/upgrade.yaml
+++ b/cesnet-central/playbooks/upgrade.yaml
@@ -6,7 +6,7 @@
 #
 # Usage example:
 #
-# VERSION=1.29.4
+# VERSION=1.30.2
 # ansible-playbook playbooks/upgrade.yaml --extra-vars "version=$VERSION"
 #
 - name: Upgrade and hold kubeadm package
@@ -15,8 +15,8 @@
   tasks:
     - name: New k8s repository
       copy:
-        dest: /etc/apt/sources.list.d/pkgs_k8s_io_core_stable_v1_29_deb.list
-        content: deb https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /
+        dest: /etc/apt/sources.list.d/pkgs_k8s_io_core_stable_v1_30_deb.list
+        content: deb https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /
         mode: 0644
     - name: Upgrade packages
       apt:
-- 
GitLab