Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/metal-stack/os-metal-extension
gardener extension to handle userdata creation in the ignition format
https://github.com/metal-stack/os-metal-extension
debian gardener ignition kubernetes metal ubuntu
Last synced: about 2 months ago
JSON representation
gardener extension to handle userdata creation in the ignition format
- Host: GitHub
- URL: https://github.com/metal-stack/os-metal-extension
- Owner: metal-stack
- Created: 2019-06-17T09:24:09.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-22T11:04:01.000Z (4 months ago)
- Last Synced: 2024-08-22T12:34:08.826Z (4 months ago)
- Topics: debian, gardener, ignition, kubernetes, metal, ubuntu
- Language: Go
- Homepage:
- Size: 8.8 MB
- Stars: 3
- Watchers: 8
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# [Gardener Extension for Ignition on Ubuntu and Debian on Metal](https://gardener.cloud)
Project Gardener implements the automated management and operation of [Kubernetes](https://kubernetes.io/) clusters as a service. It's main principle is to leverage Kubernetes concepts for all of its tasks.
Recently, most of the vendor specific logic has been developed [in-tree](https://github.com/gardener/gardener). However, the project has grown to a size where it is very hard to extend, maintain, and test. With [GEP-1](https://github.com/gardener/gardener/blob/master/docs/proposals/01-extensibility.md) we have proposed how the architecture can be changed in a way to support external controllers that contain their very own vendor specifics. This way, we can keep Gardener core clean and independent.
This controller operates on the `OperatingSystemConfig` resource in the `extensions.gardener.cloud/v1alpha1` API group. It manages those objects that are requesting [Ubuntu with Ignition](https://coreos.com/ignition/) (Metal) configuration (`.spec.type=ubuntu`) or (`.spec.type=debian`):
```yaml
---
apiVersion: extensions.gardener.cloud/v1alpha1
kind: OperatingSystemConfig
metadata:
name: pool-01-original
namespace: default
spec:
type: ubuntu
units:
...
files:
...
```Please find [a concrete example](example/operatingsystemconfig.yaml) in the `example` folder.
After reconciliation the resulting data will be stored in a secret within the same namespace (as the config itself might contain confidential data). The name of the secret will be written into the resource's `.status` field:
```yaml
...
status:
...
cloudConfig:
secretRef:
name: osc-result-pool-01-original
namespace: default
command: /usr/bin/env bash
units:
- docker-monitor.service
- kubelet-monitor.service
- kubelet.service
```The secret has one data key `cloud_config` that stores the generation.
An example for a `ControllerRegistration` resource that can be used to register this controller to Gardener can be found [here](example/controller-registration.yaml).
Please find more information regarding the extensibility concepts and a detailed proposal [here](https://github.com/gardener/gardener/blob/master/docs/proposals/01-extensibility.md).
----
## How to start using or developing this extension controller locally
You can run the controller locally on your machine by executing `make start-os-metal`. Please make sure to have the kubeconfig to the cluster you want to connect to ready in the `./dev/kubeconfig` file.
Static code checks and tests can be executed by running `VERIFY=true make all`. We are using go modules for Golang package dependency management and [Ginkgo](https://github.com/onsi/ginkgo)/[Gomega](https://github.com/onsi/gomega) for testing.## Feedback and Support
Feedback and contributions are always welcome. Please report bugs or suggestions as [GitHub issues](https://github.com/gardener/gardener/extensions/issues) or join our [Slack channel #gardener](https://kubernetes.slack.com/messages/gardener) (please invite yourself to the Kubernetes workspace [here](http://slack.k8s.io)).
## Learn more!
Please find further resources about out project here:
* [Our landing page gardener.cloud](https://gardener.cloud/)
* ["Gardener, the Kubernetes Botanist" blog on kubernetes.io](https://kubernetes.io/blog/2018/05/17/gardener/)
* [GEP-1 (Gardener Enhancement Proposal) on extensibility](https://github.com/gardener/gardener/blob/master/docs/proposals/01-extensibility.md)