Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove user-data plugins from machine-controller #1789

Merged

Conversation

ahmedwaleedmalik
Copy link
Member

@ahmedwaleedmalik ahmedwaleedmalik commented Apr 30, 2024

User data plugins from machine-controller have been removed in favor of OSM.

What this PR does / why we need it:

Historically, machine-controller relied on user data plugins to generate configurations(cloud-config) for worker machines. Each operating system requires its own user-data plugin. These configs are then injected into the worker nodes using provisioning utilities such as cloud-init or ignition. Eventually, the nodes are bootstrapped.

Over time, it has been observed that this workflow has certain limitations.

  • Machine Controller expects ALL the supported user-data plugins to exist and be ready. User might only be interested in a subset of the available operating systems. For example, user might only want to work with ubuntu.
  • The user-data plugins have templates defined in-code. Which is not ideal since code changes are required to update those templates. Then those code changes need to become a part of the subsequent releases for machine-controller and KubeOne. So we need a complete release cycle to ship those changes to customers.
  • Managing configs for multiple cloud providers, OS flavors and OS versions, adds a lot of complexity and redundancy in machine-controller.
  • Since the templates are defined in-code, there is no way for an end user to customize them to suit their use-cases.
  • Each cloud provider sets some sort of limits for the size of user-data, machine won't be created in case of non-compliance. For example, at the time of writing this, AWS has set a hard limit of 16KB.
  • Better support for air-gapped environments is required.

To overcome these limitations; Kubermatic built Operating System Manager a few years ago. Please refer to Operating System Manager for more details.

These plugins were deprecated about a year ago in #1642.

User data plugins from machine-controller have been removed in favor of OSM.

Which issue(s) this PR fixes:

Fixes #1788

What type of PR is this?

/kind cleanup

Special notes for your reviewer:
There will be a follow-up PR with some more cleanup, moving things around from MC to OSM. But since it requires changes in OSM first, we'll do it later in another PR.

Does this PR introduce a user-facing change? Then add your Release Note here:

[ACTION REQUIRED] User data plugins for machine-controller have been removed. [Operating System Manager](https://github.com/kubermatic/operating-system-manager) is the successor of user data plugins. It's responsible for creating and managing the required configurations for worker nodes in a Kubernetes cluster with better modularity and extensibility. Please refer to [Operating System Manager](https://github.com/kubermatic/operating-system-manager#kubermatic-operating-system-manager) for more details.

Documentation:

https://docs.kubermatic.com/operatingsystemmanager

Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
@ahmedwaleedmalik ahmedwaleedmalik self-assigned this Apr 30, 2024
@kubermatic-bot kubermatic-bot added release-note-action-required Denotes a PR that introduces potentially breaking changes that require user action. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. docs/provided Denotes a PR that has a valid documentation reference. dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. sig/cluster-management Denotes a PR or issue as being assigned to SIG Cluster Management. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Apr 30, 2024
@ahmedwaleedmalik ahmedwaleedmalik removed the request for review from moadqassem April 30, 2024 13:52
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
@ahmedwaleedmalik
Copy link
Member Author

@xrstf pull-machine-controller-e2e-vsphere, pull-machine-controller-e2e-azure-custom-image-reference needs to be overridden.

Maybe in the future, we can run these tests periodically, once a day, so that we are more aware of issues like kubermatic/operating-system-manager#381 and generally failing tests like pull-machine-controller-e2e-azure-custom-image-reference

Copy link
Member

@kron4eg kron4eg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LOVE IT!

small change proposed

cmd/webhook/main.go Outdated Show resolved Hide resolved
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
@kron4eg
Copy link
Member

kron4eg commented May 2, 2024

/approve
/lgtm

@kubermatic-bot kubermatic-bot added the lgtm Indicates that a PR is ready to be merged. label May 2, 2024
@kubermatic-bot
Copy link
Contributor

LGTM label has been added.

Git tree hash: 081522b2ad4b314ff3be7fc7dfe94316ae16727a

@kubermatic-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: kron4eg

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubermatic-bot kubermatic-bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 2, 2024
@kron4eg
Copy link
Member

kron4eg commented May 2, 2024

/lgtm cancel

there is failing linter job

@kubermatic-bot kubermatic-bot removed the lgtm Indicates that a PR is ready to be merged. label May 2, 2024
Signed-off-by: Waleed Malik <ahmedwaleedmalik@gmail.com>
@ahmedwaleedmalik
Copy link
Member Author

/lgtm cancel

there is failing linter job

Should be fixed now, even more cleanup :D

@kron4eg
Copy link
Member

kron4eg commented May 2, 2024

/lgtm

@kubermatic-bot kubermatic-bot added the lgtm Indicates that a PR is ready to be merged. label May 2, 2024
@kubermatic-bot
Copy link
Contributor

LGTM label has been added.

Git tree hash: 70398970b434ded79958a79173597d5a4f2d4de8

@xrstf
Copy link
Contributor

xrstf commented May 2, 2024

/override pull-machine-controller-e2e-azure
/override pull-machine-controller-e2e-azure-custom-image-reference
/override pull-machine-controller-e2e-vsphere

@kubermatic-bot
Copy link
Contributor

@xrstf: Overrode contexts on behalf of xrstf: pull-machine-controller-e2e-azure, pull-machine-controller-e2e-azure-custom-image-reference, pull-machine-controller-e2e-vsphere

In response to this:

/override pull-machine-controller-e2e-azure
/override pull-machine-controller-e2e-azure-custom-image-reference
/override pull-machine-controller-e2e-vsphere

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@kubermatic-bot kubermatic-bot merged commit 0231d55 into kubermatic:main May 2, 2024
20 checks passed
@ahmedwaleedmalik ahmedwaleedmalik deleted the remove-userdata-plugins branch May 2, 2024 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. dco-signoff: yes Denotes that all commits in the pull request have the valid DCO signoff message. docs/provided Denotes a PR that has a valid documentation reference. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. lgtm Indicates that a PR is ready to be merged. release-note-action-required Denotes a PR that introduces potentially breaking changes that require user action. sig/cluster-management Denotes a PR or issue as being assigned to SIG Cluster Management. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remove user-data plugins from machine-controller
4 participants