NAME
client-go-examples — Collection of mini-programs demonstrating Kubernetes client-go usage.
SYNOPSIS
INFO
DESCRIPTION
Collection of mini-programs demonstrating Kubernetes client-go usage.
README
Kubernetes client-go examples
! Support development of this project > patreon.com/iximiuz
A collection of mini-programs demonstrating various client-go use cases augmented by a preconfigured online development environment. Inspired by client-go/examples.
The intention is to test a (more or less) fresh version of Go and k8s.io packages against the currently maintained Kubernetes release branches.
What is tested at the moment:
go 1.22.10k8s.io/client-go 0.28.14 0.29.12 0.30.8 0.31.4(maintained release branches)Kubernetes 1.28.9 1.29.12 1.30.8 1.31.4(best-effort match with versions supported bykind)
Setup
Most examples expect at least two Kubernetes clusters - shared1 and shared2.
curl -sLS https://get.arkade.dev | sudo sh arkade get kind kubectl
kind create cluster --name shared1 kind create cluster --name shared2
Run
Oversimplified (for now):
cd <program> make testor from the root folder:
make test-all
TODO
- Add more assertions to mini-programs
- Examples to be covered
- setting API request timeout
- configuring API request throttling
deletedelete collectionlistfiltrationwatchfiltrationinformerfiltrationpatchwith different strategiesServer Side Apply(SSA)- working with subresources
ownerReference(one and many)- optimistic locking
- https://stackoverflow.com/questions/56115197/how-to-idiomatically-fill-empty-fields-with-default-values-for-kubernetes-api-ob
Contribution
Contributions are always welcome! Want to participate but don't know where to start? The TODO list above could give you some ideas. Before jumping to the code, please create an issue describing the addition/change first. This will allow me to coordinate the effort and make sure multiple people don't work on the same task.