Skip to content

Commit

Permalink
🌱: refact testdata
Browse files Browse the repository at this point in the history
  • Loading branch information
Kavinjsir committed Nov 22, 2022
1 parent 5e2b056 commit 972dc6e
Show file tree
Hide file tree
Showing 184 changed files with 4,170 additions and 142 deletions.
36 changes: 18 additions & 18 deletions docs/book/src/plugins/declarative-v1.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,30 @@
# Declarative Plugin

The declarative plugin allows you to create [controllers][controller-runtime] using the [kubebuilder-declarative-pattern][kubebuilder-declarative-pattern].
By using the declarative plugin, you can make the required changes on top of what is scaffolded by default when you create a Go project with Kubebuilder and the Golang plugins (i.e. go/v2, go/v3).
The declarative plugin allows you to create [controllers][controller-runtime] using the [kubebuilder-declarative-pattern][kubebuilder-declarative-pattern].
By using the declarative plugin, you can make the required changes on top of what is scaffolded by default when you create a Go project with Kubebuilder and the Golang plugins (i.e. go/v2, go/v3).

<aside class="note">
<h1>Examples</h1>

You can check samples using this plugin by looking at the "addon" samples inside the [testdata][testdata] directory of the Kubebuilder project.

</aside>

</aside>

## When to use it ?

- If you are looking to scaffold one or more [controllers][controller-runtime] following [the pattern][kubebuilder-declarative-pattern] ( See an e.g. of the reconcile method implemented [here][addon-v3-controller])
- If you are looking to scaffold one or more [controllers][controller-runtime] following [the pattern][kubebuilder-declarative-pattern] ( See an e.g. of the reconcile method implemented [here][addon-v3-controller])
- If you want to have manifests shipped inside your Manager container. The declarative plugin works with channels, which allow you to push manifests. [More info][addon-channels-info]

## How to use it ?

The declarative plugin requires to be used with one of the available Golang plugins
If you want that any API(s) and its respective controller(s) generate to reconcile them of your project adopt this partner then:
If you want that any API(s) and its respective controller(s) generate to reconcile them of your project adopt this partner then:

```sh
kubebuilder init --plugins=go/v3,declarative/v1 --domain example.org --repo example.org/guestbook-operator
```

If you want to adopt this pattern for specific API(s) and its respective controller(s) (not for any API/controller scaffold using Kubebuilder CLI) then:
If you want to adopt this pattern for specific API(s) and its respective controller(s) (not for any API/controller scaffold using Kubebuilder CLI) then:

```sh
kubebuilder create api --plugins=go/v3,declarative/v1 --version v1 --kind Guestbook
Expand All @@ -35,29 +34,30 @@ kubebuilder create api --plugins=go/v3,declarative/v1 --version v1 --kind Guestb

The declarative plugin implements the following subcommands:

* init (`$ kubebuilder init [OPTIONS]`)
* create api (`$ kubebuilder create api [OPTIONS]`)
- init (`$ kubebuilder init [OPTIONS]`)
- create api (`$ kubebuilder create api [OPTIONS]`)

## Affected files

The following scaffolds will be created or updated by this plugin:

* `controllers/*_controller.go`
* `api/*_types.go`
* `channels/packages/<packagename>/<version>/manifest.yaml`
* `channels/stable`
* `Dockerfile`
- `controllers/*_controller.go`
- `api/*_types.go`
- `channels/packages/<packagename>/<version>/manifest.yaml`
- `channels/stable`
- `Dockerfile`

## Further resources

* Read more about the [declarative pattern][kubebuilder-declarative-pattern]
* Watch the KubeCon 2018 Video [Managing Addons with Operators][kubecon-video]
* Check the [plugin implementation][plugin-implementation]
- Read more about the [declarative pattern][kubebuilder-declarative-pattern]
- Watch the KubeCon 2018 Video [Managing Addons with Operators][kubecon-video]
- Check the [plugin implementation][plugin-implementation]

[addon-channels-info]: https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/blob/master/docs/addon/walkthrough/README.md#adding-a-manifest
[controller-runtime]: https://github.com/kubernetes-sigs/controller-runtime
[kubebuilder-declarative-pattern]: https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern
[testdata]: https://github.com/kubernetes-sigs/kubebuilder/tree/master/testdata/
[kubecon-video]: https://www.youtube.com/watch?v=LPejvfBR5_w
[plugin-implementation]: https://github.com/kubernetes-sigs/kubebuilder/tree/master/pkg/plugins/golang/declarative
[addon-v3-controller]: https://github.com/kubernetes-sigs/kubebuilder/tree/master/testdata/project-v3-addon-and-grafana
[addon-v3-controller]: https://github.com/kubernetes-sigs/kubebuilder/tree/master/testdata/project-v3-declarative-v1

2 changes: 1 addition & 1 deletion docs/book/src/plugins/grafana-v1-alpha.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The Grafana plugin is an optional plugin that can be used to scaffold Grafana Da
<aside class="note">
<h1>Examples</h1>

You can check its default scaffold by looking at the `project-v3-with-grafana` projects under the [testdata][testdata] directory on the root directory of the Kubebuilder project.
You can check its default scaffold by looking at the `project-v3-with-metrics` projects under the [testdata][testdata] directory on the root directory of the Kubebuilder project.

</aside>

Expand Down
12 changes: 7 additions & 5 deletions test/testdata/generate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ function scaffold_test_project {
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false --force
$kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation
if [ $project == "project-v3" ] || [ $project == "project-v3-with-kustomize-v2" ]; then
if [ $project == "project-v3" ]; then
$kb create webhook --group crew --version v1 --kind Captain --defaulting --programmatic-validation --force
fi

Expand Down Expand Up @@ -102,7 +102,7 @@ function scaffold_test_project {
$kb create api --version v1 --kind Lakers --controller=true --resource=true --make=false
$kb create webhook --version v1 --kind Lakers --defaulting --programmatic-validation
fi
elif [[ $project =~ addon ]]; then
elif [[ $project =~ declarative ]]; then
header_text 'Creating APIs ...'
$kb create api --group crew --version v1 --kind Captain --controller=true --resource=true --make=false
$kb create api --group crew --version v1 --kind FirstMate --controller=true --resource=true --make=false
Expand All @@ -113,7 +113,7 @@ function scaffold_test_project {
$kb create api --group example.com --version v1alpha1 --kind Busybox --image=busybox:1.28 --plugins="deploy-image/v1-alpha" --make=false
header_text 'Creating Memcached webhook ...'
$kb create webhook --group example.com --version v1alpha1 --kind Memcached --programmatic-validation
elif [[ $project == "project-v3" || $project == "project-v4" ]]; then
elif [[ $project =~ "with-metrics" ]]; then
header_text 'Editing project with Grafana plugin ...'
$kb edit --plugins=grafana.kubebuilder.io/v1-alpha
fi
Expand All @@ -132,14 +132,16 @@ scaffold_test_project project-v2 --project-version=2
# [Currently, default CLI plugin] - Project version 3 (default) uses plugin go/v3 (default).
scaffold_test_project project-v3
scaffold_test_project project-v3-multigroup
scaffold_test_project project-v3-addon-and-grafana --plugins="go/v3,declarative,grafana/v1-alpha"
scaffold_test_project project-v3-declarative-v1 --plugins="go/v3,declarative,grafana/v1-alpha"
scaffold_test_project project-v3-config --component-config
scaffold_test_project project-v3-with-deploy-image
scaffold_test_project project-v3-with-metrics

# [Next version, alpha] Project version v4-alpha
scaffold_test_project project-v4 --plugins="go/v4-alpha"
scaffold_test_project project-v4-multigroup --plugins="go/v4-alpha"
scaffold_test_project project-v4-addon-and-grafana --plugins="go/v4-alpha,declarative,grafana/v1-alpha"
scaffold_test_project project-v4-declarative-v1 --plugins="go/v4-alpha,declarative,grafana/v1-alpha"
scaffold_test_project project-v4-config --component-config --plugins="go/v4-alpha"
scaffold_test_project project-v4-with-deploy-image --plugins="go/v4-alpha"
scaffold_test_project project-v4-with-metrics

6 changes: 4 additions & 2 deletions test/testdata/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ build_kb
# Test project v3
test_project project-v3
test_project project-v3-multigroup
test_project project-v3-addon-and-grafana
test_project project-v3-declarative-v1
test_project project-v3-config
test_project project-v3-with-deploy-image
test_project project-v3-with-metrics

# Project version v4-alpha
test_project project-v4
test_project project-v4-multigroup
test_project project-v4-addon-and-grafana
test_project project-v4-declarative-v1
test_project project-v4-config
test_project project-v4-with-deploy-image
test_project project-v4-with-metrics
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ plugins:
kind: Admiral
version: v1
grafana.kubebuilder.io/v1-alpha: {}
projectName: project-v3-addon-and-grafana
repo: sigs.k8s.io/kubebuilder/testdata/project-v3-addon-and-grafana
projectName: project-v3-declarative-v1
repo: sigs.k8s.io/kubebuilder/testdata/project-v3-declarative-v1
resources:
- api:
crdVersion: v1
Expand All @@ -29,7 +29,7 @@ resources:
domain: testproject.org
group: crew
kind: Captain
path: sigs.k8s.io/kubebuilder/testdata/project-v3-addon-and-grafana/api/v1
path: sigs.k8s.io/kubebuilder/testdata/project-v3-declarative-v1/api/v1
version: v1
- api:
crdVersion: v1
Expand All @@ -38,14 +38,14 @@ resources:
domain: testproject.org
group: crew
kind: FirstMate
path: sigs.k8s.io/kubebuilder/testdata/project-v3-addon-and-grafana/api/v1
path: sigs.k8s.io/kubebuilder/testdata/project-v3-declarative-v1/api/v1
version: v1
- api:
crdVersion: v1
controller: true
domain: testproject.org
group: crew
kind: Admiral
path: sigs.k8s.io/kubebuilder/testdata/project-v3-addon-and-grafana/api/v1
path: sigs.k8s.io/kubebuilder/testdata/project-v3-declarative-v1/api/v1
version: v1
version: "3"
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# project-v4-addon-and-grafana
# project-v3-declarative-v1
// TODO(user): Add simple overview of use/purpose

## Description
Expand All @@ -18,13 +18,13 @@ kubectl apply -f config/samples/
2. Build and push your image to the location specified by `IMG`:

```sh
make docker-build docker-push IMG=<some-registry>/project-v4-addon-and-grafana:tag
make docker-build docker-push IMG=<some-registry>/project-v3-declarative-v1:tag
```

3. Deploy the controller to the cluster with the image specified by `IMG`:

```sh
make deploy IMG=<some-registry>/project-v4-addon-and-grafana:tag
make deploy IMG=<some-registry>/project-v3-declarative-v1:tag
```

### Uninstall CRDs
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Adds namespace to all resources.
namespace: project-v3-addon-and-grafana-system
namespace: project-v3-declarative-v1-system

# Value of this field is prepended to the
# names of all resources, e.g. a deployment named
# "wordpress" becomes "alices-wordpress".
# Note that it should also match with the prefix (text before '-') of the namespace
# field above.
namePrefix: project-v3-addon-and-grafana-
namePrefix: project-v3-declarative-v1-

# Labels to add to all resources and selectors.
#commonLabels:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: namespace
app.kubernetes.io/instance: system
app.kubernetes.io/component: manager
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: system
---
Expand All @@ -21,8 +21,8 @@ metadata:
app.kubernetes.io/name: deployment
app.kubernetes.io/instance: controller-manager
app.kubernetes.io/component: manager
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
spec:
selector:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ metadata:
app.kubernetes.io/name: servicemonitor
app.kubernetes.io/instance: controller-manager-metrics-monitor
app.kubernetes.io/component: metrics
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: controller-manager-metrics-monitor
namespace: system
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: admiral-editor-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: admiral-editor-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: admiral-viewer-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: admiral-viewer-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: metrics-reader
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: metrics-reader
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: proxy-role
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: proxy-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
app.kubernetes.io/name: clusterrolebinding
app.kubernetes.io/instance: proxy-rolebinding
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: proxy-rolebinding
roleRef:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: service
app.kubernetes.io/instance: controller-manager-metrics-service
app.kubernetes.io/component: kube-rbac-proxy
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: controller-manager-metrics-service
namespace: system
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: captain-editor-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: captain-editor-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: captain-viewer-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: captain-viewer-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: firstmate-editor-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v3-addon-and-grafana
app.kubernetes.io/part-of: project-v3-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: firstmate-editor-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: clusterrole
app.kubernetes.io/instance: firstmate-viewer-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: firstmate-viewer-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ metadata:
app.kubernetes.io/name: role
app.kubernetes.io/instance: leader-election-role
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: leader-election-role
rules:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ metadata:
app.kubernetes.io/name: rolebinding
app.kubernetes.io/instance: leader-election-rolebinding
app.kubernetes.io/component: rbac
app.kubernetes.io/created-by: project-v4-addon-and-grafana
app.kubernetes.io/part-of: project-v4-addon-and-grafana
app.kubernetes.io/created-by: project-v3-declarative-v1
app.kubernetes.io/part-of: project-v3-declarative-v1
app.kubernetes.io/managed-by: kustomize
name: leader-election-rolebinding
roleRef:
Expand Down
Loading

0 comments on commit 972dc6e

Please sign in to comment.