{"id":13820513,"url":"https://github.com/kubermatic/machine-controller","last_synced_at":"2025-05-15T03:04:22.163Z","repository":{"id":37750994,"uuid":"115267126","full_name":"kubermatic/machine-controller","owner":"kubermatic","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-04T14:26:09.000Z","size":20607,"stargazers_count":314,"open_issues_count":24,"forks_count":133,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-04-06T21:11:28.183Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubermatic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-24T14:12:56.000Z","updated_at":"2025-04-04T14:26:12.000Z","dependencies_parsed_at":"2022-07-13T19:30:33.782Z","dependency_job_id":"9fae381d-9a6f-42c7-94aa-e5e0da0a20d2","html_url":"https://github.com/kubermatic/machine-controller","commit_stats":null,"previous_names":[],"tags_count":281,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubermatic%2Fmachine-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubermatic%2Fmachine-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubermatic%2Fmachine-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubermatic%2Fmachine-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubermatic","download_url":"https://codeload.github.com/kubermatic/machine-controller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804791,"owners_count":21164132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T08:01:04.656Z","updated_at":"2025-04-14T01:01:21.593Z","avatar_url":"https://github.com/kubermatic.png","language":"Go","funding_links":[],"categories":["others"],"sub_categories":[],"readme":"# Kubermatic machine-controller\n\n**Important Note: 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][8] for more details.**\n\n## Table of Contents\n\n- [Kubermatic machine-controller](#kubermatic-machine-controller)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n    - [What Works](#what-works)\n    - [Supported Kubernetes Versions](#supported-kubernetes-versions)\n    - [Community Providers](#community-providers)\n  - [What Doesn't Work](#what-doesnt-work)\n  - [Quickstart](#quickstart)\n    - [Deploy machine-controller](#deploy-machine-controller)\n    - [Creating a `MachineDeployment`](#creating-a-machinedeployment)\n  - [Advanced Usage](#advanced-usage)\n    - [Specifying the Apiserver Endpoint](#specifying-the-apiserver-endpoint)\n    - [CA Data](#ca-data)\n    - [Apiserver Endpoint](#apiserver-endpoint)\n      - [Example cluster-info ConfigMap](#example-cluster-info-configmap)\n  - [Development](#development)\n    - [Testing](#testing)\n      - [Unit Tests](#unit-tests)\n      - [End-to-End Locally](#end-to-end-locally)\n  - [Troubleshooting](#troubleshooting)\n  - [Contributing](#contributing)\n    - [Before You Start](#before-you-start)\n    - [Pull Requests](#pull-requests)\n  - [Changelog](#changelog)\n\n## Features\n\n### What Works\n\n- Creation of worker nodes on AWS, Digitalocean, Openstack, Azure, Google Cloud Platform, Nutanix, VMWare Cloud Director, VMWare vSphere, Hetzner Cloud and Kubevirt\n- Using Ubuntu, Flatcar, or Rocky Linux 8 distributions ([not all distributions work on all providers](/docs/operating-system.md))\n\n### Supported Kubernetes Versions\n\nmachine-controller tries to follow the Kubernetes version\n[support policy](https://kubernetes.io/docs/setup/release/version-skew-policy/) as close as possible.\n\nCurrently supported K8S versions are:\n\n- 1.31\n- 1.30\n- 1.29\n\n### Community Providers\n\nSome cloud providers implemented in machine-controller have been graciously contributed by community members. Those cloud providers are not part of the automated end-to-end\ntests run by the machine-controller developers and thus, their status cannot be guaranteed. The machine-controller developers assume that they are functional, but can only\noffer limited support for new features or bugfixes in those providers.\n\nThe current list of community providers is:\n\n- Linode\n- Vultr\n- OpenNebula\n\n## What Doesn't Work\n\n- Master creation (Not planned at the moment)\n\n## Quickstart\n\n### Deploy machine-controller\n\n- Install [cert-manager](https://cert-manager.io/) for generating certificates used by webhooks since they serve using HTTPS\n\n```terminal\nkubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.2/cert-manager.yaml\n```\n\n- Run `kubectl apply -f examples/operating-system-manager.yaml` to deploy the operating-system-manager which is responsible for managing user data for worker machines.\n- Run `kubectl apply -f examples/machine-controller.yaml` to deploy the machine-controller.\n\n### Creating a `MachineDeployment`\n\n```bash\n# edit examples/$cloudprovider-machinedeployment.yaml \u0026 create the machineDeployment\nkubectl create -f examples/$cloudprovider-machinedeployment.yaml\n```\n\n## Advanced Usage\n\n### Specifying the Apiserver Endpoint\n\nBy default the controller looks for a `cluster-info` ConfigMap within the `kube-public` Namespace.\nIf one is found which contains a minimal kubeconfig (kubeadm cluster have them by default), this kubeconfig will be used for the node bootstrapping.\nThe kubeconfig only needs to contain two things:\n\n- CA-Data\n- The public endpoint for the Apiserver\n\nIf no ConfigMap can be found:\n\n### CA Data\n\nThe Certificate Authority (CA) will be loaded from the passed kubeconfig when running outside the cluster or from `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` when running inside the cluster.\n\n### Apiserver Endpoint\n\nThe first endpoint from the kubernetes endpoints will be taken. `kubectl get endpoints kubernetes -o yaml`\n\n#### Example cluster-info ConfigMap\n\n```yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cluster-info\n  namespace: kube-public\ndata:\n  kubeconfig: |\n    apiVersion: v1\n    clusters:\n    - cluster:\n        certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURHRENDQWdDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREE5TVRzd09RWURWUVFERXpKeWIyOTAKTFdOaExtaG1kblEwWkd0bllpNWxkWEp2Y0dVdGQyVnpkRE10WXk1a1pYWXVhM1ZpWlhKdFlYUnBZeTVwYnpBZQpGdzB4TnpFeU1qSXdPVFUyTkROYUZ3MHlOekV5TWpBd09UVTJORE5hTUQweE96QTVCZ05WQkFNVE1uSnZiM1F0ClkyRXVhR1oyZERSa2EyZGlMbVYxY205d1pTMTNaWE4wTXkxakxtUmxkaTVyZFdKbGNtMWhkR2xqTG1sdk1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTNPMFZBZm1wcHM4NU5KMFJ6ckhFODBQTQo0cldvRk9iRXpFWVQ1Unc2TjJ0V3lqazRvMk5KY1R1YmQ4bUlONjRqUjFTQmNQWTB0ZVRlM2tUbEx0OWMrbTVZCmRVZVpXRXZMcHJoMFF5YjVMK0RjWDdFZG94aysvbzVIL0txQW1VT0I5TnR1L2VSM0EzZ0xxNHIvdnFpRm1yTUgKUUxHbllHNVVPN25WSmc2RmJYbGxtcmhPWlUvNXA3c0xwQUpFbCtta3RJbzkybVA5VGFySXFZWTZTblZTSmpDVgpPYk4zTEtxU0gxNnFzR2ZhclluZUl6OWJGKzVjQTlFMzQ1cFdQVVhveXFRUURSNU1MRW9NY0tzYVF1V2g3Z2xBClY3SUdYUzRvaU5HNjhDOXd5REtDd3B2NENkbGJxdVRPMVhDb2puS1o0OEpMaGhFVHRxR2hIa2xMSkEwVXpRSUQKQVFBQm95TXdJVEFPQmdOVkhROEJBZjhFQkFNQ0FxUXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU5CZ2txaGtpRwo5dzBCQVFzRkFBT0NBUUVBamlNU0kxTS9VcUR5ZkcyTDF5dGltVlpuclBrbFVIOVQySVZDZXp2OUhCUG9NRnFDCmpENk5JWVdUQWxVZXgwUXFQSjc1bnNWcXB0S0loaTRhYkgyRnlSRWhxTG9DOWcrMU1PZy95L1FsM3pReUlaWjIKTysyZGduSDNveXU0RjRldFBXamE3ZlNCNjF4dS95blhyZG5JNmlSUjFaL2FzcmJxUXd5ZUgwRjY4TXd1WUVBeQphMUNJNXk5Q1RmdHhxY2ZpNldOTERGWURLRXZwREt6aXJ1K2xDeFJWNzNJOGljWi9Tbk83c3VWa0xUNnoxcFBRCnlOby9zNXc3Ynp4ekFPdmFiWTVsa2VkVFNLKzAxSnZHby9LY3hsaTVoZ1NiMWVyOUR0VERXRjdHZjA5ZmdpWlcKcUd1NUZOOUFoamZodTZFcFVkMTRmdXVtQ2ttRHZIaDJ2dzhvL1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\n        server: https://hfvt4dkgb.europe-west3-c.dev.kubermatic.io:30002\n      name: \"\"\n    contexts: []\n    current-context: \"\"\n    kind: Config\n    preferences: {}\n    users: []\n```\n\n## Development\n\n### Testing\n\n#### Unit Tests\n\nSimply run `make test-unit`\n\n#### End-to-End Locally\n\n**_[WIP]_**\n\n## Troubleshooting\n\nIf you encounter issues [file an issue][1] or talk to us on the [#kubermatic channel][2] on the [Kubermatic Slack][3].\n\n## Contributing\n\nThanks for taking the time to join our community and start contributing!\n\n### Before You Start\n\n- Please familiarize yourself with the [Code of Conduct][4] before contributing.\n- See [CONTRIBUTING.md][5] for instructions on the developer certificate of origin that we require.\n\n### Pull Requests\n\n- We welcome pull requests. Feel free to dig through the [issues][1] and jump in.\n\n## Changelog\n\nSee [the list of releases][7] to find out about feature changes.\n\n[1]: https://github.com/kubermatic/machine-controller/issues\n[2]: https://kubermatic.slack.com/messages/kubermatic\n[3]: http://slack.kubermatic.io/\n[4]: code-of-conduct.md\n[5]: CONTRIBUTING.md\n[7]: https://github.com/kubermatic/machine-controller/releases\n[8]: https://docs.kubermatic.com/operatingsystemmanager\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubermatic%2Fmachine-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubermatic%2Fmachine-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubermatic%2Fmachine-controller/lists"}