KubeOps 2.2.0
Categories:
4 minute read
KubeOps 2.2.0 - Release Date 30.09.2026
Changelog KubeOpsCtl 2.2.0
Whats new?
- Added Traefik support for kubeopsctl
- Added Kubevirt-Manager support for kubeopsctl
- Added Kubernetes 1.36 support
- Added Advanced Parameters for static Registry mount path, check out the file format [Cluster Values YAML](/kubeopsctl-2.0/reference/fileformats/#cluster-valuesyaml)
Fixes
- fixed a podman bug affecting pull packages
- fixed a harbor bug setting up cluster
- added creation of nginx ingressclass, when installing traefik for backwards compatabilty
- fixed default secret for kubeops-dashboard
- kubeopsctl pull command now verifies if the specified tool value file exists
- Added kubeops-harbor-secret for pulling images from the internal private harbor project 'kubeops'
- fixed a bug that prevented to create the kubeops harbor project as private
- fixed a bug that prevented to change the kubeops harbor project to private
- fixed a bug that prevented the image push of the kubernetes images to local-registry
- changed the 'localhost' reference to '127.0.0.1' for enterprise-tools in preperation for the kubernetes 1.36 support
- fix image push in local registry
- fixed duplicated coredns in 1.36.1
- updated kosi versions for consistent installation
- updated Harbor ImagePullSecret with 127.0.0.1 instead of master1 IP
- remove hardcoded plugin versions in cluster prepare node
- fixed a bug in rook delete section
- fixed a bug in nginx ingressclass for traefik
- added default secret for grafana
- added role bindings for the kubevirt roles
- fixed delete ingresses in update process
- OpenSearch users created in the Dashboards Security UI now persist across package updates
- OpenSearch TLS certificates are no longer regenerated on every install/update, preventing certificate rotation on running clusters
- Fixed OpenSearch SSO returning 401 Unauthorized by reliably applying the openid security configuration to the backend after deploy
- Added a Keycloak protocol mapper so realm roles are propagated to OpenSearch for backend role mapping
- Added Single Sign-On (SSO) with Keycloak (OpenID Connect) for OpenSearch and OpenSearch Dashboards
- Added username/password fallback authentication for OpenSearch alongside SSO
- Made the OpenSearch admin password configurable via the new `adminPassword` package value (opensearch-os & opensearch-dashboards)
- Added `hostname` package value for opensearch-os to point OpenSearch at the Keycloak SSO endpoint
- Refresh the Keycloak admin token before each step of the OpenSearch Dashboards OIDC join so long-running joins no longer fail with 401 once the 60s token lifespan is exceeded
- fixed an error in OpenSearch when it was not installed in the `logging` namespace
- fixed an issue in kubeopsctl where `tools-values.yaml` and `cluster-values.yaml` were not always stored as secrets in the cluster
- changed the netpols for traefik-nginx and ingress-nginx to make the dashboards available
- helm-plugin now parses the flags correctly in all possible actions (install, upgrade, delete)
- fixed missing kosi update on nodes, if packageRepository: local
- fixed missing opensearch-dashboards plugins and wrong version
- template network policies with default deny rules
- by default, netpols are not enabled
- when installing the tools, apply cluster- and tools-values
Known Issues
⚠ Warning
In an air-gapped scenario, the Harbor external URL cannot be set to a public domain name. It must remain http://«controlplane1-ip»:30002.
⚠ Warning
WireGuard installation may fail when
packagerepo: local is used on cluster nodes that are not running Red Hat Enterprise Linux 9.6, due to its dependency on the systemd-resolved version included in the release.
⚠ Warning
If Cilium is selected as the CNI, all dashboards are currently unavailable.
Versions KubeOps 2.2.0
| Tool | App Version | Chart Version | Package Version | SHA256 Checksum |
|---|---|---|---|---|
| kernelmodules | kubeops/kernelmodules:2.2.0 | 6c9a8176e97f72fb115fcb07d101466a6fce5a11aa9ad6a9a90b0b21bf42c469 | ||
| sysctl | kubeops/sysctl:2.2.0 | c593117756ef3466dc6c464c99f05c4dd50fc36ead773a2231f199b451117bfa | ||
| disable-swap | kubeops/disable-swap:2.2.0 | 5b2e7900f47d3d4ab2708f48b4a2a5e116d5a75eabe52b8dd1e7b48011a7bb5c | ||
| runtime-setup | kubeops/runtime-setup:2.2.0 | fc3ddcdd19aa61edc7e2037c1b3e20a8ad5cce291064ce53a54226d2fbb16eca | ||
| kubeadm-init | kubeops/kubeadm-init:2.2.0 | 5aaa8fa898cbb727074a8a7b11ff664a3bc967e763d476d63a4aa37888c8bc14 | ||
| local-registry | kubeops/local-registry:2.2.0 | 4b099fedc19503f640baff9b778f5c55031eafff783ef260cf27622ce4fd44c2 | ||
| load-balancer | kubeops/load-balancer:2.2.0 | e9801f64433446c78bc8ead2fe06b0e92b35ee298b7b7cb1f77ef27b02a5845a | ||
| initial-controlplane | kubeops/initial-controlplane:2.2.0 | 478d5277ff64095095d0f7ba749b08f255e81ec10097e038681dccd4d38f0a22 | ||
| clustersetup | kubeops/clustersetup:2.2.0 | d97436eb0380432a8a23f4750555849901e43c1f031ca0cb5c9db915a6fc59ed | ||
| kubernetes-cni | kubeops/kubernetes-cni:2.2.0 | c74e203929e14185822267d73871470a8cc763e01b36d80168b1362ba396ea5d | ||
| join-controlplane | kubeops/join-controlplane:2.2.0 | b627b1c19ea50175cb3bfd42ec7db455105620bc579ba62388dc10b4926116ba | ||
| join-worker | kubeops/join-worker:2.2.0 | 1edecba8439e2887e5e0bd410a04cea62e0265f92a3fa24a3a886f8915288015 | ||
| pull-packages | kubeops/pull-packages:2.2.0 | 3a2b643ce05d91da28006476a641b452724786f7fef0ee40912151aa0614786f | ||
| prepare-node | kubeops/prepare-node:2.2.0 | b7e35ff3ded0544f2ca98aaaff8cfe81448c4abda0e0dd6357ed809ccd9b32e2 | ||
| firewall-setup | kubeops/firewall-setup:2.2.0 | 618ef8f42b62edf76dd4b0f456c51b632661a74607b144b9645ce29c88b44ba8 | ||
| kube-vip | kubeops/kube-vip:2.2.0 | a83fb705b6c7dc46706adc9eafd1a9b02e4757e6d4019727673f7b2ec2e7ccae | ||
| delete-node | kubeops/delete-node:2.2.0 | 8c6ff87ef1a09e291f9c08419c526d6443af38d74020e633eb00d6d8098dcde1 | ||
| auditlog | kubeops/auditlog:2.2.0 | 435e0afd4aaeece1f3cb2bdef50a35ed4aa0273bcf0e8dad6b730e8e58ec4743 | ||
| kubeadm-upgrade-initial-controlplane | kubeops/kubeadm-upgrade-initial-controlplane:2.2.0 | 85c3ead7a9749c0474ba4908564150d97d90ec067f9ff7d7d2b977da067da0f2 | ||
| kubeadm-upgrade-nodes | kubeops/kubeadm-upgrade-nodes:2.2.0 | 5f39951279bc42a1ef298bc42fff6ad21073871379bb814db8485df7eba8e9e5 | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.30.8 | ee9e8e41552be2d90f1f19700c251fd77fe01da31eabec6a3fcab318b01ceb2c | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.30.8 | 2677d909cd257c0b75de2d4bd9e9d198148310a9ecbbca384996700a54d3a9df | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.31.6 | 0af110107067c17851375742d301f1da68aac2f732b626f8210ece17e17fd30b | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.31.6 | 41ac4282be31a9127ca403be3d0f03bab912e16e66f05febb506479574b3c4f1 | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.32.2 | ff8634ae7237bb8ded1a4903f610bcc6fbd47fd09aa347fa8ab7575bc0398505 | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.32.2 | ee6c7c3328408fc1fcc3948d60c4da111d114428b51f448db913ddd7e9e4938d | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.32.9 | 257ae96710967072878b69e0122c5b296b207670f22b4f5d92c32d3c6ca0b90a | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.32.9 | 4e9c6b70198bdcaa316a1f798467975737b0ca73db49dbdfcade0c3b0fb185ee | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.33.5 | f5b867b6fe95fae57f1ff146eff6d2c661f9b9dc7c26f96e9de42d61c8600f64 | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.33.5 | 33f6aaeb3e5934c20a0f85e1c2f548ec263f21c09da11370893451730759aebb | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.34.1 | 0198f733a6ae26e63da1e52ccaca24b15127441288a51b18cfbe029ce720a920 | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.34.1 | 4ce2e131915169587c7e51199f9fd6e27f3546330656dcae5b81e79c6fe65783 | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.35.0 | 6c3f1a22a75edb1e1404eb888a0bd5be7f61d99e7e499c8a753ba552ca4dd222 | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.35.0 | 1017e3b3134315f2752063992b89f63d31004adade365f1b0f383b4885643389 | ||
| kubernetes-tools | kubeops/kubernetes-tools:1.36.1 | e8ece406938019d0581da945d6a4d35506a37208dffa9d059ce971a50ca6743d | ||
| kubernetes-tools-airgap | kubeops/kubernetes-tools-airgap:1.36.1 | 0d6aaf098bcb7d1bd066cc9b471b2f5ac685416f178441d5f8fc369a7b7809ab | ||
| calico | v3.29.1 | v3.29.1 | kubeops/calico:v3.29.2 | 186ebf9f1a4fd8512d4866f68b4865f7aa98c96215ef37387fe583f14f1312fd |
| calico-airgap | kubeops/calico-airgap:v3.29.2 | 5923f633ea4136a64f0c0ddf56069b109704b61e542a530378a686292b4d034c | ||
| cilium | 1.18.2 | 1.18.2 | kubeops/cilium:v1.18.3 | a26bf6918e5b2768f78b253391982b707d881a16d9965672b476882b9932c4d6 |
| cilium-airgap | kubeops/cilium-airgap:v1.18.3 | a334071a23cdd2330ea2c723993e18822522c900481fabe7f1ee12b4c849f5ab | ||
| multus | kubeops/multus:snapshot-thick2 | f3bbcbf000867c5429914c948b08a8af947216f3c06507ca128c788bbc70d0fa | ||
| multus-airgap | kubeops/multus-airgap:snapshot-thick2 | a6d6d31b36c62236ebd95634b77bc1b3909f9f5709ca80c362fff09f00b75ba8 | ||
| wireguard-tools | kubeops/wireguard-tools:v1.0.20210914 | 529723a4a4db6501a3fdedc55e5f4248240a7d6d68293ffd37e2b83bfc5a7883 | ||
| helm | kubeops/helm:v3.16.4 | 8e2def3efd54f2d149235e3ef71116c37514f7dcda81e8c793e081120c16f323 | ||
| podman | kubeops/podman:5.2.2 | a3fcc454fe61e595b91131d8d7b5006bd1fbaae72f19b0ff7d21c9bae70757ea | ||
| ingress-nginx | 1.15.6 | 4.15.6 | kubeops/ingress-nginx:2.2.0 | b5a6db56a34be02ac65e7a20a791c76b5b3c41575a55340f14fe37705902ebd8 |
| cert-manager | v1.18.2 | v1.18.2 | kubeops/cert-manager:2.2.0 | f699dbf88d48995f0cfd7d043053ecc7c1eca01f7f70146bdf70ef8cc6521f6c |
| opa-gatekeeper | v3.17.1 | 3.17.1 | kubeops/opa-gatekeeper:2.2.0 | 59a5febc1fa41bf7e4d2d2a9c85214b5ed2d14cdb95d45bb6aedcdf16d665387 |
| velero | 1.16.2 | 10.1.0 | kubeops/velero:2.2.0 | dd9901e5d30c46d7a41da5298140056aba793bf4164ab4917f760758d1f5456d |
| rook-ceph | v1.15.6 | v1.15.6 | kubeops/rook-ceph:2.2.0 | 20354cd416c84759b1214649f87f04ce0c05bcba8e2f3ccefe474e1dfe92cfa4 |
| rook-ceph-airgap | kubeops/rook-ceph-airgap:2.2.0 | 71c05aeb10a8553b41e65068a4aedeee482a8587346bffc72ddbf4ed2ceae07f | ||
| harbor | 2.14.0 | 1.18.0 | kubeops/harbor:2.2.0 | e31d31b186386dd81ba57c03e66561a1fdbb532c25e17329fc71d54e3c5d398e |
| harbor-airgap | kubeops/harbor-airgap:2.2.0 | d75512698b4349389104bf8d653b6ffd5e7d877913b9237cd14788290b36ba9a | ||
| kube-prometheus-stack | v0.85.0 | 77.0.2 | kubeops/kube-prometheus-stack:2.2.0 | 62767bb128ff8d579bc4fea19920d7b8f6c53ea8ea8ccb564e7081660c3f3eae |
| keycloak | 16.8.0 | 1.2.0 | kubeops/keycloak:2.2.0 | 07b2224accbf96d49103afb4c771f1c48b47de730e5dee90ca7b98f70713ac41 |
| kubeops-dashboard | 0.26.0 | 0.26.0 | kubeops/kubeops-dashboard:2.2.0 | eb1e29f3859cb9216be370366738e8faa0a3906f863169a819ab095833bad66c |
| filebeat-os | 8.5.1 | 8.5.1 | kubeops/filebeat-os:2.2.0 | 18906cc4ae6daf900736c7b30fafced9f078147134d0268f1b2a67a08becaaab |
| logstash-os | 8.4.0 | 8.4.0 | kubeops/logstash-os:2.2.0 | ce7f77865bf783181ba4cab89372a8d51ec97c18058a72f1649c49489eaf10d3 |
| opensearch-os | 3.4.0 | 3.4.0 | kubeops/opensearch-os:2.2.0 | c28cbe849505f9ddfd615558369d547f080ead686641642197ca0a7f6e25e8cf |
| opensearch-dashboards | 3.4.0 | 3.4.0 | kubeops/opensearch-dashboards:2.2.0 | f0488dec098bf56624c987b719d666e6d2192b80c04dd14646e86c6a02dc04f3 |
| traefik | v3.6.7 | 39.0.0 | kubeops/traefik:2.2.0 | 6f59d80d15317b580b12be7969b9e8b46467a031a0b68135c79c80e67b01f70e |
| kubevirt-manager | kubeops/kubevirt-manager:2.2.0 | 9cfae808aa8114f9b91513232352d498631e0dfff8710cffcd38bcefccca6cac | ||
| kubevirt | kubeops/kubevirt:2.2.0 | b5b6502ca5dc9e53d522d0a4febd42fb728f4c5da6552b3435b4bae8ba142a0b |