From Fedora Project Wiki
(add tracker bug and release notes ticket)
 
(2 intermediate revisions by 2 users not shown)
Line 27: Line 27:
* [https://discussion.fedoraproject.org/t/f40-change-proposal-restructure-kubernetes-packages/87806 discussion thread]
* [https://discussion.fedoraproject.org/t/f40-change-proposal-restructure-kubernetes-packages/87806 discussion thread]
* FESCo issue: [https://pagure.io/fesco/issue/3067 #3067]
* FESCo issue: [https://pagure.io/fesco/issue/3067 #3067]
* Tracker bug: [bugzilla.redhat.com/show_bug.cgi?id=2241263 #2241263]
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=2241263 #2241263]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/1032 #1032]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/1032 #1032]


Line 70: Line 70:


== Feedback ==
== Feedback ==
<!-- Summarize the feedback from the community and address why you chose not to accept proposed alternatives. This section is optional for all change proposals but is strongly suggested. Incorporating feedback here as it is raised gives FESCo a clearer view of your proposal and leaves a good record for the future. If you get no feedback, that is useful to note in this section as well. For innovative or possibly controversial ideas, consider collecting feedback before you file the change proposal. -->
19 Feb 2024. Addition feedback from user via email. User tested updated package in rawhide and noted that (a) not all deployments use kubeadm (upstream provided) to provision a cluster, and (b) that installing kubeadm changes how the kublet daemon functions by adding a systemd dropin. Based on this feedback, a separate kubeadm rpm will be retained. Final (as of 19 Feb) subpackages and content below.
 
Feedback can be found in the discussion thread (https://discussion.fedoraproject.org/t/f40-change-proposal-restructure-kubernetes-packages/87806). Much of the feedback was asking for clarification and to offer corrections to my mis-statements.
 
One comment focused attention on naming and potential confusion of "kubernetes-client" which contains the command line client and other clients that are language specific libraries available for developers. I decided to stay with kubernetes-client as that would be the least disruptive and familiar to uses of the kubernetes rpms in Fedora.
 
The final (sub) package names are (19 Feb revision):
 
1. kubernetes - package. Contains kubelet. Will replace the kubernetes-node package.
 
2. kubernetes-kubeadm - sub package. Contains kubeadm, the kubernetes cluster provisioning tool.
 
2. kubernetes-client - sub package. Contains kubectl, the kubernetes command line client. No change from existing structure.
 
3.kubernetes-systemd - sub package. Contains legacy systemd units for kube-apiserver, kube-controller, etc. Replaces kubernetes-master.
 
Users will be able to install kubernetes with 'sudo dnf install kubernetes' on all machines. Control plane machines will also need kubernetes-client. Cluster managers that use kubeadm to provision will install kubernetes-kubeadm on all machines.


== Benefit to Fedora ==
== Benefit to Fedora ==

Latest revision as of 17:14, 19 February 2024

Restructure Kubernetes Packages

Summary

New or revised (sub)package names are proposed for Kubernetes packages in Fedora. The new names will better align Kubernetes with current usage as documented upstream and improve alignment of package content with current Fedora practices and standards.

Owner

Current status

Detailed Description

Kubernetes provides "Open Source Production-Grade Container Scheduling And Management".

The existing Kubernetes package and sub-packages are outlined in the table below. All packages include relevant configuration files and documentation (man pages).

Current package and sub-packages in the Kubernetes package
Name Status (Sub )Package Notes
Kubernetes Main Package Empty. Requires the Client sub-package.
Client Sub-package Kubectl - Command line client. Used to manage a cluster from any computer connected to network.
Kubeadm Sub-package Kubeadm - Administrative client. Used to join or remove a node to/from a cluster.
Master Sub-package Kubernetes services packaged as obsolete systemd services. Modern installations of Kubernetes install these services as static pods.
Node Subpackage Kubelet - Kubernetes runtime.

Proposed sub package names and associate content are in the table below.

Proposed package and sub-packages in the Kubernetes package
Name Status (Sub )Package Notes
Kubernetes Main Package Provides kubelet (runtime) and kuberadm (node administation) binaries and configuration files. Requires the Client sub-package.
Kubernetes-doc Sub-package Documentation (man pages) for kubectl and kubeadm.
Client Sub-package Kubectl - Command line client. Used to manage a cluster from any computer connected to network.
Client-doc Sub-package Documentation for kubectl, command line client.

With the proposed sub packages a user that wants to install Kubernetes on a Fedora machine will only need to install the kubernetes rpm and optionally the kubernetes.doc rpm. This action installs all 3 needed Kubernetes binaries and configuration files and aligns with guidance from upstream (i.e. install kubectl, kubeadm, and kubelet on each machine in a cluster).

Kubernetes cluster managers will install, as before, the kubernetes-client rpm on any machine used by the manager to manage a cluster. The kubernetes-client-doc rpm will be optional.

Feedback

19 Feb 2024. Addition feedback from user via email. User tested updated package in rawhide and noted that (a) not all deployments use kubeadm (upstream provided) to provision a cluster, and (b) that installing kubeadm changes how the kublet daemon functions by adding a systemd dropin. Based on this feedback, a separate kubeadm rpm will be retained. Final (as of 19 Feb) subpackages and content below.

Feedback can be found in the discussion thread (https://discussion.fedoraproject.org/t/f40-change-proposal-restructure-kubernetes-packages/87806). Much of the feedback was asking for clarification and to offer corrections to my mis-statements.

One comment focused attention on naming and potential confusion of "kubernetes-client" which contains the command line client and other clients that are language specific libraries available for developers. I decided to stay with kubernetes-client as that would be the least disruptive and familiar to uses of the kubernetes rpms in Fedora.

The final (sub) package names are (19 Feb revision):

1. kubernetes - package. Contains kubelet. Will replace the kubernetes-node package.

2. kubernetes-kubeadm - sub package. Contains kubeadm, the kubernetes cluster provisioning tool.

2. kubernetes-client - sub package. Contains kubectl, the kubernetes command line client. No change from existing structure.

3.kubernetes-systemd - sub package. Contains legacy systemd units for kube-apiserver, kube-controller, etc. Replaces kubernetes-master.

Users will be able to install kubernetes with 'sudo dnf install kubernetes' on all machines. Control plane machines will also need kubernetes-client. Cluster managers that use kubeadm to provision will install kubernetes-kubeadm on all machines.

Benefit to Fedora

The primary beneficiary will be Fedora users that want to install Kubernetes on a Fedora machine and use that machine as a node in a cluster or as a management console to manage one or more local or remote clusters. It will also segregate out documentation (man files) so that a minimal install can be done with just the needed executables and supporting configuration files. Installation of the kubernetes rpm is all that is needed to install all necessary binaries on a Fedora machine to participate as a node in a cluster. The current package structure requires the user to install either the kubernetes, kubernetes-kubeadm, and kubernetes-node rpms or install the kubernetes-client, kubernetes-kubeadm, and kubernetes-node rpms to obtain the same level of functionality.

Scope

  • Proposal owners:

Modify the kubernetes.spec file to reflect the new package organization and new package content. Build and test new installs and updates across multiple Fedora flavors including server, workstation, and CoreOS.

  • Other developers:

N/A

N/A

  • Policies and guidelines: N/A (not needed for this Change)

N/A

  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Community Initiatives:

Upgrade/compatibility impact

The primary effect will be changes to some of the kubernetes-related rpms, but there will not be any effects to existing functionality or configuration. Any scripts or system provisioning tools such as Ansible should continue to function.

How To Test

Two test scenarios are needed.

1. Upgrade Test. Install Kubernetes or the Kubernetes client on a Fedora machine using legacy rpms. Optionally configure a cluster or the client. Upgrade the system using the new packages. No change in functionality or configuration should be detected.

2. New Install Test. Install kubernetes or the client on a Fedora machine using the new rpms. Compare functionality to another machine that has Kubernetes or the client installed using the legacy rpms. No change in functionality should be detected.


User Experience

Users doing a new installation of Kubernetes on a Fedora machine will have a simplified experience. Installing the kubernetes rpm will actually install all needed components of Kubernetes and not just the client as the current rpms do. Similarly, updating a Fedora node in a Kubernetes cluster will only need updating one (1) rpm and not 3 as before.


Dependencies

N/A


Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No


Documentation

N/A (not a System Wide Change)

Release Notes

TBD