https://github.com/nevidanniu/sample-apispec
sample CRD api specs and client-go generation for such CRD for kubernetes api
https://github.com/nevidanniu/sample-apispec
client-go client-go-examples client-go-sample kubernetes
Last synced: 22 days ago
JSON representation
sample CRD api specs and client-go generation for such CRD for kubernetes api
- Host: GitHub
- URL: https://github.com/nevidanniu/sample-apispec
- Owner: nevidanniu
- Created: 2025-04-16T09:54:24.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2025-04-26T19:19:52.000Z (26 days ago)
- Last Synced: 2025-04-30T20:59:00.467Z (22 days ago)
- Topics: client-go, client-go-examples, client-go-sample, kubernetes
- Language: Go
- Homepage:
- Size: 135 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# structure
CRD specs:
```
core/v1alpha1
ldap/v1alpha1
```
kubernetes code-generator binaries docker:
```
docker/Dockerfile
```
script parts:
```
Makefile
groups.txt - path to CRD specs
modules.txt - go import paths for CRD specs
hack/boilerplate.go.txt - boilerplate text for generated code
```# build code-generator
```bash
docker buildx build --progress=plain -f docker/Dockerfile -t code-generator:latest .
```# generate deepcopy, openapi
```bash
docker run -ti -v $(pwd):/data code-generator:latest
for PKG in core ldap; do PKG_VERSION=v1alpha1 make pkg=$PKG openapigen; make generate pkg=$PKG; done
```# generate client-go
## create client-go structure
```bash
docker run -ti -v $(pwd):/data code-generator:latest
go mod init github.com/nevidanniu/sample-apispec/client-go
go get -x github.com/nevidanniu/sample-apispec
```## update api ver & generate client-go
```bash
docker run -ti -v $(pwd):/data code-generator:latest
cd client-go
rm -rf applyconfigurations ssp listers informers# should be tag, but git sha commit also works
# 6be1838 is git sha commit
go get -x -u github.com/nevidanniu/sample-apispec@6be1838# take version from go.mod
export API_TAG=v0.0.0-20250416125607-6be1838903ad
/go/bin/applyconfiguration-gen --input-dirs $( paste -d, -s "/go/pkg/mod/github.com/nevidanniu/sample-apispec@$API_TAG/modules.txt" ) --output-base "." --output-package "github.com/nevidanniu/sample-apispec/client-go/applyconfigurations" --trim-path-prefix "github.com/nevidanniu/sample-apispec/client-go" --go-header-file hack/boilerplate.go.txt -v 2/go/bin/client-gen --clientset-name "ssp" --input-base "github.com/nevidanniu/sample-apispec" --input $( paste -d, -s "/go/pkg/mod/github.com/nevidanniu/sample-apispec@$API_TAG/groups.txt" ) --output-base "." --output-package "github.com/nevidanniu/sample-apispec/client-go" --trim-path-prefix "github.com/nevidanniu/sample-apispec/client-go" --apply-configuration-package "github.com/nevidanniu/sample-apispec/client-go/applyconfigurations" --go-header-file hack/boilerplate.go.txt -v 2
/go/bin/lister-gen --input-dirs $( paste -d, -s "/go/pkg/mod/github.com/nevidanniu/sample-apispec@$API_TAG/modules.txt" ) --output-base "." --trim-path-prefix "github.com/nevidanniu/sample-apispec/client-go" --output-package "github.com/nevidanniu/sample-apispec/client-go/listers" --go-header-file hack/boilerplate.go.txt -v 2
/go/bin/informer-gen --input-dirs $( paste -d, -s "/go/pkg/mod/github.com/nevidanniu/sample-apispec@$API_TAG/modules.txt" ) --output-base "." --trim-path-prefix "github.com/nevidanniu/sample-apispec/client-go" --versioned-clientset-package github.com/nevidanniu/sample-apispec/client-go/ssp --listers-package github.com/nevidanniu/sample-apispec/client-go/listers --output-package "github.com/nevidanniu/sample-apispec/client-go/informers" --go-header-file hack/boilerplate.go.txt -v 2
```# how to use
[sample code](usage/main.go)