The Kubernetes controller-runtime Project is a set of go libraries for building Controllers. It is leveraged by Kubebuilder and Operator SDK. Both are a great place to start for new projects. See Kubebuilder's Quick Start to see how it can be used.
Documentation:
- Package overview
- Basic controller using builder
- Creating a manager
- Creating a controller
- Examples
- Designs
The full documentation can be found at VERSIONING.md, but TL;DR:
Users:
- We follow Semantic Versioning (semver)
- Use releases with your dependency management to ensure that you get compatible code
- The main branch contains all the latest code, some of which may break compatibility (so "normal"
go get
is not recommended)
Contributors:
- All code PR must be labeled with 🐛 (patch fixes), ✨ (backwards-compatible features), or
⚠️ (breaking changes) - Breaking changes will find their way into the next major release, other changes will go into an semi-immediate patch or minor release
- For a quick PR template suggesting the right information, use one of these PR templates:
Every minor version of controller-runtime has been tested with a specific minor version of client-go. A controller-runtime minor version may be compatible with other client-go minor versions, but this is by chance and neither supported nor tested. In general, we create one minor version of controller-runtime for each minor version of client-go and other k8s.io/* dependencies.
The minimum Go version of controller-runtime is the highest minimum Go version of our Go dependencies. Usually, this will be identical to the minimum Go version of the corresponding k8s.io/* dependencies.
Compatible k8s.io/*, client-go and minimum Go versions can be looked up in our go.mod file.
k8s.io/*, client-go | minimum Go version | |
---|---|---|
CR v0.20 | v0.32 | 1.23 |
CR v0.19 | v0.31 | 1.22 |
CR v0.18 | v0.30 | 1.22 |
CR v0.17 | v0.29 | 1.21 |
CR v0.16 | v0.28 | 1.20 |
CR v0.15 | v0.27 | 1.20 |
See FAQ.md
Learn how to engage with the Kubernetes community on the community page.
controller-runtime is a subproject of the kubebuilder project in sig apimachinery.
You can reach the maintainers of this project at:
- Slack channel: #controller-runtime
- Google Group: kubebuilder@googlegroups.com
Contributions are greatly appreciated. The maintainers actively manage the issues list, and try to highlight issues suitable for newcomers. The project follows the typical GitHub pull request model. See CONTRIBUTING.md for more details. Before starting any work, please either comment on an existing issue, or file a new one.
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
#Turkish
Kubernetes controller-runtime Projesi, denetleyiciler (controllers) oluşturmak için Go kütüphanelerinden oluşan bir set sunar. Bu proje, Kubebuilder ve Operator SDK tarafından kullanılmaktadır. Her iki proje de yeni projeler için harika başlangıç noktalarıdır. Nasıl kullanılabileceğini görmek için Kubebuilder Hızlı Başlangıç sayfasına göz atabilirsiniz.
- Paket genel bakış
- Builder kullanarak basit bir denetleyici
- Manager oluşturma
- Denetleyici oluşturma
- Örnekler
- Tasarım belgeleri
Tam dökümantasyona VERSIONING.md üzerinden ulaşabilirsiniz, ama kısa özet:
- Semantik Sürümleme (semver) izlenir.
- Uyumlu kod almak için, bağımlılık yönetiminizle sürümleri kullanın.
- Ana dal (main branch) en son kodları içerir, bazıları uyumluluğu bozabilir (bu yüzden doğrudan
go get
kullanımı tavsiye edilmez).
- Tüm kod PR'lerine şu etiketlerden biri eklenmelidir: 🐛 (hata düzeltmeleri), ✨ (geriye dönük uyumlu özellikler) veya
⚠️ (uyumsuzluk yaratacak değişiklikler). - Uyumsuz değişiklikler bir sonraki ana sürümde yer alacaktır, diğer değişiklikler ise küçük sürüm veya yama güncellemesi olarak yapılır.
- PR için uygun şablonu kullanarak kolayca bilgi ekleyebilirsiniz:
Her controller-runtime küçük sürümü, belirli bir client-go küçük sürümü ile test edilmiştir. Bir controller-runtime küçük sürümü, diğer client-go sürümleri ile uyumlu olabilir, ancak bu tamamen tesadüftür ve desteklenmez veya test edilmez. Genel olarak, her client-go ve diğer k8s.io/* bağımlılıkları için bir controller-runtime küçük sürümü oluşturuyoruz.
Controller-runtime'ın minimum Go sürümü, Go bağımlılıklarımızın en yüksek minimum Go sürümüdür. Genellikle, bu, ilgili k8s.io/* bağımlılıklarının minimum Go sürümü ile aynı olacaktır.
Uyumlu k8s.io/*, client-go ve minimum Go sürümleri, go.mod dosyamızdan kontrol edilebilir.
k8s.io/*, client-go | minimum Go sürümü | |
---|---|---|
CR v0.20 | v0.32 | 1.23 |
CR v0.19 | v0.31 | 1.22 |
CR v0.18 | v0.30 | 1.22 |
CR v0.17 | v0.29 | 1.21 |
CR v0.16 | v0.28 | 1.20 |
CR v0.15 | v0.27 | 1.20 |
SSS (Sıkça Sorulan Sorular) için FAQ.md sayfasına bakın.
Kubernetes topluluğu ile nasıl etkileşim kurabileceğinizi öğrenmek için topluluk sayfasını ziyaret edin.
Controller-runtime, sig apimachinery içindeki kubebuilder projesinin bir alt projesidir.
Bu projenin sorumlularına şu kanallar üzerinden ulaşabilirsiniz:
- Slack kanalı: #controller-runtime
- Google Grubu: kubebuilder@googlegroups.com
Katkılarınız büyük memnuniyetle karşılanır. Sorumlular, sorunlar listesini aktif olarak yönetir ve yeni başlayanlar için uygun olanları vurgulamaya çalışırlar. Proje, tipik GitHub pull request modelini takip eder. Daha fazla ayrıntı için CONTRIBUTING.md belgesine bakın. Herhangi bir çalışmaya başlamadan önce, lütfen ya mevcut bir soruna yorum yapın ya da yeni bir sorun oluşturun.
Kubernetes topluluğuna katılım, Kubernetes Davranış Kuralları ile yönetilmektedir.