Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
// New
err = r.client.List(context.TODO(), podList, client.UseListOptions(listOps))
```
- CRD file names were previously of the form `<group>_<version>_<kind>_crd.yaml`. Now that CRD manifest `spec.version` is deprecated in favor of `spec.versions`, i.e. multiple versions can be specified in one CRD, CRD file names have the form `<full group>_<resource>_crd.yaml`. `<resource>` is the plural lower-case CRD Kind found at `spec.names.plural`.
Comment thread
estroz marked this conversation as resolved.
Outdated

### Deprecated

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ $ kubectl create -f deploy/service_account.yaml
$ kubectl create -f deploy/role.yaml
$ kubectl create -f deploy/role_binding.yaml
# Setup the CRD
$ kubectl create -f deploy/crds/app_v1alpha1_appservice_crd.yaml
$ kubectl create -f deploy/crds/app.example.com_appservices_crd.yaml
# Deploy the app-operator
$ kubectl create -f deploy/operator.yaml

Expand Down Expand Up @@ -125,7 +125,7 @@ $ kubectl delete -f deploy/operator.yaml
$ kubectl delete -f deploy/role.yaml
$ kubectl delete -f deploy/role_binding.yaml
$ kubectl delete -f deploy/service_account.yaml
$ kubectl delete -f deploy/crds/app_v1alpha1_appservice_crd.yaml
$ kubectl delete -f deploy/crds/app.example.com_appservices_crd.yaml
```
## Command Line Interface

Expand Down
8 changes: 4 additions & 4 deletions ci/tests/e2e-ansible.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@ deploy_operator() {
fi
kubectl create -f "$OPERATORDIR/deploy/role.yaml"
kubectl create -f "$OPERATORDIR/deploy/role_binding.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/ansible_v1alpha1_memcached_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/ansible_v1alpha1_foo_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/ansible.example.com_memcacheds_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/ansible.example.com_foos_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/operator.yaml"
}

remove_operator() {
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/service_account.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/role.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/role_binding.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/ansible_v1alpha1_memcached_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/ansible_v1alpha1_foo_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/ansible.example.com_memcacheds_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/ansible.example.com_foos_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/operator.yaml"
}

Expand Down
4 changes: 2 additions & 2 deletions ci/tests/e2e-helm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ deploy_operator() {
kubectl create -f "$OPERATORDIR/deploy/service_account.yaml"
kubectl create -f "$OPERATORDIR/deploy/role.yaml"
kubectl create -f "$OPERATORDIR/deploy/role_binding.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/helm_v1alpha1_nginx_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/crds/helm.example.com_nginxes_crd.yaml"
kubectl create -f "$OPERATORDIR/deploy/operator.yaml"
}

remove_operator() {
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/service_account.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/role.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/role_binding.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/helm_v1alpha1_nginx_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/crds/helm.example.com_nginxes_crd.yaml"
kubectl delete --wait=true --ignore-not-found=true -f "$OPERATORDIR/deploy/operator.yaml"
}

Expand Down
4 changes: 2 additions & 2 deletions cmd/operator-sdk/add/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ This command runs Kubernetes deepcopy and OpenAPI V3 generators on tagged
types in all paths under pkg/apis. Go code is generated under
pkg/apis/<group>/<version>/zz_generated.{deepcopy,openapi}.go. CRD's are
generated, or updated if they exist for a particular group + version + kind,
under deploy/crds/<group>_<version>_<kind>_crd.yaml; OpenAPI V3 validation YAML
under deploy/crds/<full group>_<resource>_crd.yaml; OpenAPI V3 validation YAML
is generated as a 'validation' object.

Example:
Expand All @@ -67,7 +67,7 @@ Example:
├── zz_generated.openapi.go
$ tree deploy/crds
├── deploy/crds/app_v1alpha1_appservice_cr.yaml
├── deploy/crds/app_v1alpha1_appservice_crd.yaml
├── deploy/crds/app.example.com_appservices_crd.yaml
`,
RunE: apiRun,
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/operator-sdk/add/crd.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func newAddCRDCmd() *cobra.Command {
Short: "Adds a Custom Resource Definition (CRD) and the Custom Resource (CR) files",
Long: `The operator-sdk add crd command will create a Custom Resource Definition (CRD) and the Custom Resource (CR) files for the specified api-version and kind.

Generated CRD filename: <project-name>/deploy/crds/<group>_<version>_<kind>_crd.yaml
Generated CRD filename: <project-name>/deploy/crds/<full group>_<resource>_crd.yaml
Generated CR filename: <project-name>/deploy/crds/<group>_<version>_<kind>_cr.yaml

<project-name>/deploy path must already exist
Expand Down
4 changes: 2 additions & 2 deletions cmd/operator-sdk/generate/openapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func newGenerateOpenAPICmd() *cobra.Command {
in all pkg/apis/<group>/<version> directories. Go code is generated under
pkg/apis/<group>/<version>/zz_generated.openapi.go. CRD's are generated, or
updated if they exist for a particular group + version + kind, under
deploy/crds/<group>_<version>_<kind>_crd.yaml; OpenAPI V3 validation YAML
deploy/crds/<full group>_<resource>_crd.yaml; OpenAPI V3 validation YAML
is generated as a 'validation' object.

Example:
Expand All @@ -41,7 +41,7 @@ Example:
├── zz_generated.openapi.go
$ tree deploy/crds
├── deploy/crds/app_v1alpha1_appservice_cr.yaml
├── deploy/crds/app_v1alpha1_appservice_crd.yaml
├── deploy/crds/app.example.com_appservices_crd.yaml
`,
RunE: openAPIFunc,
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/operator-sdk/scorecard/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func NewCmd() *cobra.Command {
scorecardCmd.Flags().StringSlice(scplugins.CRManifestOpt, nil, "Path to manifest for Custom Resource (required) (specify flag multiple times for multiple CRs)")
scorecardCmd.Flags().String(scplugins.ProxyImageOpt, fmt.Sprintf("quay.io/operator-framework/scorecard-proxy:%s", strings.TrimSuffix(version.Version, "+git")), "Image name for scorecard proxy")
scorecardCmd.Flags().String(scplugins.ProxyPullPolicyOpt, "Always", "Pull policy for scorecard proxy image")
scorecardCmd.Flags().String(scplugins.CRDsDirOpt, scaffold.CRDsDir, "Directory containing CRDs (all CRD manifest filenames must have the suffix 'crd.yaml')")
scorecardCmd.Flags().String(scplugins.CRDsDirOpt, scaffold.CRDsDir, "Directory containing CRD manifests")
scorecardCmd.Flags().StringP(scorecard.OutputFormatOpt, "o", scorecard.HumanReadableOutputFormat, fmt.Sprintf("Output format for results. Valid values: %s, %s", scorecard.HumanReadableOutputFormat, scorecard.JSONOutputFormat))
scorecardCmd.Flags().String(scorecard.PluginDirOpt, "scorecard", "Scorecard plugin directory (plugin exectuables must be in a \"bin\" subdirectory")

Expand Down
4 changes: 2 additions & 2 deletions doc/ansible/dev/developer_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ Create a Custom Resource Definition (CRD) and proper Role-Based Access Control
(RBAC) definitions for resource Foo. `operator-sdk` auto-generates these files
inside of the `deploy` folder:
```bash
$ kubectl create -f deploy/crds/foo_v1alpha1_foo_crd.yaml
$ kubectl create -f deploy/crds/foo.example.com_foos_crd.yaml
$ kubectl create -f deploy/service_account.yaml
$ kubectl create -f deploy/role.yaml
$ kubectl create -f deploy/role_binding.yaml
Expand Down Expand Up @@ -306,7 +306,7 @@ $ sed -i "" 's|REPLACE_IMAGE|quay.io/example/foo-operator:v0.0.1|g' deploy/opera
Deploy the foo-operator:

```sh
$ kubectl create -f deploy/crds/foo_v1alpha1_foo_crd.yaml # if CRD doesn't exist already
$ kubectl create -f deploy/crds/foo.example.com_foos_crd.yaml # if CRD doesn't exist already
$ kubectl create -f deploy/service_account.yaml
$ kubectl create -f deploy/role.yaml
$ kubectl create -f deploy/role_binding.yaml
Expand Down
4 changes: 2 additions & 2 deletions doc/ansible/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ resource definition the operator will be watching.
Deploy the CRD:

```sh
$ kubectl create -f deploy/crds/cache_v1alpha1_memcached_crd.yaml
$ kubectl create -f deploy/crds/cache.example.com_memcacheds_crd.yaml
```

Once this is done, there are two ways to run the operator:
Expand Down Expand Up @@ -400,7 +400,7 @@ $ kubectl delete -f deploy/operator.yaml
$ kubectl delete -f deploy/role_binding.yaml
$ kubectl delete -f deploy/role.yaml
$ kubectl delete -f deploy/service_account.yaml
$ kubectl delete -f deploy/crds/cache_v1alpha1_memcached_crd.yaml
$ kubectl delete -f deploy/crds/cache.example.com_memcacheds_crd.yaml
```

[operator-scope]:./../operator-scope.md
Expand Down
8 changes: 4 additions & 4 deletions doc/helm/dev/developer_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ INFO[0000] Created deploy/service_account.yaml
INFO[0000] Created deploy/role.yaml
INFO[0000] Created deploy/role_binding.yaml
INFO[0000] Created deploy/operator.yaml
INFO[0000] Created deploy/crds/foo_v1alpha1_foo_crd.yaml
INFO[0000] Created deploy/crds/foo.example.com_foos_crd.yaml
INFO[0000] Created deploy/crds/foo_v1alpha1_foo_cr.yaml
INFO[0000] Created helm-charts/foo/
INFO[0000] Run git init ...
Initialized empty Git repository in /home/joe/go/src/github.com/operator-framework/foo-operator/.git/
Initialized empty Git repository in /home/user/go/src/github.com/operator-framework/foo-operator/.git/
INFO[0000] Run git init done
INFO[0000] Project creation complete.

Expand Down Expand Up @@ -283,7 +283,7 @@ Create a Custom Resource Definition (CRD) for resource Foo. `operator-sdk` autog
inside of the `deploy` folder:

```sh
kubectl create -f deploy/crds/foo_v1alpha1_foo_crd.yaml
kubectl create -f deploy/crds/foo.example.com_foos_crd.yaml
```

**NOTE:** When running the Helm operator locally, the `up local` command will default to using the kubeconfig file specified by `$KUBECONFIG` with a fallback to `$HOME/.kube/config` if not set. In this case, the autogenerated RBAC definitions do not need to be applied to the cluster.
Expand Down Expand Up @@ -407,7 +407,7 @@ sed -i "" 's|REPLACE_IMAGE|quay.io/example/foo-operator:v0.0.1|g' deploy/operato
Deploy the foo-operator:

```sh
kubectl create -f deploy/crds/foo_v1alpha1_foo_crd.yaml # if CRD doesn't exist already
kubectl create -f deploy/crds/foo.example.com_foos_crd.yaml # if CRD doesn't exist already
kubectl create -f deploy/service_account.yaml
kubectl create -f deploy/role.yaml
kubectl create -f deploy/role_binding.yaml
Expand Down
26 changes: 13 additions & 13 deletions doc/helm/user-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ cd nginx-operator
```

This creates the nginx-operator project specifically for watching the
Nginx resource with APIVersion `example.com/v1alpha1` and Kind
Nginx resource with APIVersion `helm.example.com/v1alpha1` and Kind
`Nginx`.

For Helm-based projects, `operator-sdk new` also generates the RBAC rules
Expand Down Expand Up @@ -87,7 +87,7 @@ in `watches.yaml` and executes Helm releases using the specified chart:
```yaml
---
- version: v1alpha1
group: example.com
group: helm.example.com
kind: Nginx
chart: /opt/helm/helm-charts/nginx
```
Expand Down Expand Up @@ -118,10 +118,10 @@ value called `replicaCount` and it is set to `1` by default. If we want to have
2 nginx instances in our deployment, we would need to make sure our CR spec
contained `replicaCount: 2`.

Update `deploy/crds/example_v1alpha1_nginx_cr.yaml` to look like the following:
Update `deploy/crds/helm_v1alpha1_nginx_cr.yaml` to look like the following:

```yaml
apiVersion: example.com/v1alpha1
apiVersion: helm.example.com/v1alpha1
kind: Nginx
metadata:
name: example-nginx
Expand All @@ -130,11 +130,11 @@ spec:
```

Similarly, we see that the default service port is set to `80`, but we would
like to use `8080`, so we'll again update `deploy/crds/example_v1alpha1_nginx_cr.yaml`
like to use `8080`, so we'll again update `deploy/crds/helm_v1alpha1_nginx_cr.yaml`
by adding the service port override:

```yaml
apiVersion: example.com/v1alpha1
apiVersion: helm.example.com/v1alpha1
kind: Nginx
metadata:
name: example-nginx
Expand All @@ -156,7 +156,7 @@ resource definition the operator will be watching.
Deploy the CRD:

```sh
kubectl create -f deploy/crds/example_v1alpha1_nginx_crd.yaml
kubectl create -f deploy/crds/helm.example.com_nginxes_crd.yaml
```

Once this is done, there are two ways to run the operator:
Expand Down Expand Up @@ -247,7 +247,7 @@ INFO[0000] operator-sdk Version: v0.2.0+git
Apply the nginx CR that we modified earlier:

```sh
kubectl apply -f deploy/crds/example_v1alpha1_nginx_cr.yaml
kubectl apply -f deploy/crds/helm_v1alpha1_nginx_cr.yaml
```

Ensure that the nginx-operator creates the deployment for the CR:
Expand Down Expand Up @@ -281,15 +281,15 @@ Change the `spec.replicaCount` field from 2 to 3, remove the `spec.service`
field, and apply the change:

```sh
$ cat deploy/crds/example_v1alpha1_nginx_cr.yaml
apiVersion: "example.com/v1alpha1"
$ cat deploy/crds/helm_v1alpha1_nginx_cr.yaml
apiVersion: "helm.example.com/v1alpha1"
kind: "Nginx"
metadata:
name: "example-nginx"
spec:
replicaCount: 3

$ kubectl apply -f deploy/crds/example_v1alpha1_nginx_cr.yaml
$ kubectl apply -f deploy/crds/helm_v1alpha1_nginx_cr.yaml
```

Confirm that the operator changes the deployment size:
Expand All @@ -313,12 +313,12 @@ example-nginx-b9phnoz9spckcrua7ihrbkrt1 ClusterIP 10.96.26.3 <none>
Clean up the resources:

```sh
kubectl delete -f deploy/crds/example_v1alpha1_nginx_cr.yaml
kubectl delete -f deploy/crds/helm_v1alpha1_nginx_cr.yaml
kubectl delete -f deploy/operator.yaml
kubectl delete -f deploy/role_binding.yaml
kubectl delete -f deploy/role.yaml
kubectl delete -f deploy/service_account.yaml
kubectl delete -f deploy/crds/example_v1alpha1_nginx_crd.yaml
kubectl delete -f deploy/crds/helm.example.com_nginxes_crd.yaml
```

[operator-scope]:./../operator-scope.md
Expand Down
6 changes: 3 additions & 3 deletions doc/operator-scope.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Additionally the CustomResourceDefinition (CRD) scope can also be changed for cl

For each CRD that needs to be cluster-scoped, update its manifest to be cluster-scoped.

* `deploy/crds/<group>_<version>_<kind>_crd.yaml`
* `deploy/crds/<full group>_<resource>_crd.yaml`
* Set `spec.scope: Cluster`

To ensure that the CRD is always generated with `scope: Cluster`, add the tag `// +genclient:nonNamespaced` above the CRD's Go type defintion in `pkg/apis/<group>/<version>/<kind>_types.go`.
Expand Down Expand Up @@ -61,7 +61,7 @@ With the above changes the specified manifests should look as follows:
...
```
* `deploy/role_binding.yaml`:
```YAML
```YAML
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
Expand All @@ -75,7 +75,7 @@ With the above changes the specified manifests should look as follows:
name: memcached-operator
apiGroup: rbac.authorization.k8s.io
```
* `deploy/crds/cache_v1alpha1_memcached_crd.yaml`
* `deploy/crds/cache.example.com_memcacheds_crd.yaml`
```YAML
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
Expand Down
2 changes: 1 addition & 1 deletion doc/proposals/helm-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ The resulting structure will be:
| | service_account.yaml
| |
| |-- crds
| | <gvk>_crd.yaml
| | <full group>_<resource>_crd.yaml
| | <gvk>_cr.yaml
```

Expand Down
10 changes: 5 additions & 5 deletions doc/sdk-cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ pkg/apis/app/v1alpha1/

$ operator-sdk generate openapi
INFO[0000] Running OpenAPI code-generation for Custom Resource group versions: [app:[v1alpha1], ]
INFO[0001] Created deploy/crds/app_v1alpha1_appservice_crd.yaml
INFO[0001] Created deploy/crds/app.example.com_appservices_crd.yaml
INFO[0001] Code-generation complete.

$ tree pkg/apis/app/v1alpha1/
Expand Down Expand Up @@ -345,11 +345,11 @@ INFO[0000] Created pkg/apis/addtoscheme_app_v1alpha1.go
INFO[0000] Created pkg/apis/app/v1alpha1/register.go
INFO[0000] Created pkg/apis/app/v1alpha1/doc.go
INFO[0000] Created deploy/crds/app_v1alpha1_appservice_cr.yaml
INFO[0000] Created deploy/crds/app_v1alpha1_appservice_crd.yaml
INFO[0000] Created deploy/crds/app.example.com_appservices_crd.yaml
INFO[0001] Running deepcopy code-generation for Custom Resource group versions: [app:[v1alpha1], ]
INFO[0002] Code-generation complete.
INFO[0002] Running OpenAPI code-generation for Custom Resource group versions: [app:[v1alpha1], ]
INFO[0004] Created deploy/crds/app_v1alpha1_appservice_crd.yaml
INFO[0004] Created deploy/crds/app.example.com_appservices_crd.yaml
INFO[0004] Code-generation complete.
INFO[0004] API generation complete.
```
Expand Down Expand Up @@ -386,7 +386,7 @@ Generates the CRD and the CR files for the specified api-version and kind.
```console
$ operator-sdk add crd --api-version app.example.com/v1alpha1 --kind AppService
Generating custom resource definition (CRD) files
Created deploy/crds/app_v1alpha1_appservice_crd.yaml
Created deploy/crds/app.example.com_appservices_crd.yaml
Created deploy/crds/app_v1alpha1_appservice_cr.yaml
```

Expand Down Expand Up @@ -435,7 +435,7 @@ Run scorecard tests on an operator
* `basic-tests` - Enable basic operator checks (default true)
* `config` string - config file (default is '<project_dir>/.osdk-scorecard'; the config file's extension and format can be .yaml, .json, or .toml)
* `cr-manifest` string - (required) Path to manifest for Custom Resource
* `crds-dir` string - Directory containing CRDs (all CRD manifest filenames must have the suffix 'crd.yaml') (default "deploy/crds")
* `crds-dir` string - Directory containing CRD manifests (default "deploy/crds")
* `csv-path` string - (required if `olm-tests` is set) Path to CSV being tested
* `global-manifest` string - Path to manifest for Global resources (e.g. CRD manifests)
* `init-timeout` int - Timeout for status block on CR to be created, in seconds (default 10)
Expand Down
6 changes: 3 additions & 3 deletions doc/test-framework/writing-e2e-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ $ operator-sdk test local ./test/e2e --namespace operator-test --up-local
If you would prefer to create the resources yourself and skip resource creation, you can use the `--no-setup` flag:
```shell
$ kubectl create namespace operator-test
$ kubectl create -f deploy/crds/cache_v1alpha1_memcached_crd.yaml
$ kubectl create -f deploy/crds/cache.example.com_memcacheds_crd.yaml
$ kubectl create -f deploy/service_account.yaml --namespace operator-test
$ kubectl create -f deploy/role.yaml --namespace operator-test
$ kubectl create -f deploy/role_binding.yaml --namespace operator-test
Expand All @@ -289,7 +289,7 @@ $ cat deploy/role_binding.yaml >> deploy/namespace-init.yaml
$ echo -e "\n---\n" >> deploy/namespace-init.yaml
$ cat deploy/operator.yaml >> deploy/namespace-init.yaml
# Run tests
$ go test ./test/e2e/... -root=$(pwd) -kubeconfig=$HOME/.kube/config -globalMan deploy/crds/example_v1alpha1_app_crd.yaml -namespacedMan deploy/namespace-init.yaml -v -parallel=2
$ go test ./test/e2e/... -root=$(pwd) -kubeconfig=$HOME/.kube/config -globalMan deploy/crds/cache.example.com_apps_crd.yaml -namespacedMan deploy/namespace-init.yaml -v -parallel=2
```

## Manual Cleanup
Expand Down Expand Up @@ -323,7 +323,7 @@ $ kubectl delete namespace main-153428703
Since the CRD is not namespaced, it must be deleted separately. Clean up the CRD created by the tests using the CRD manifest `deploy/crd.yaml`:

```shell
$ kubectl delete -f deploy/crds/cache_v1alpha1_memcached_crd.yaml
$ kubectl delete -f deploy/crds/cache.example.com_memcacheds_crd.yaml
```

[memcached-sample]:https://github.com/operator-framework/operator-sdk-samples/tree/master/memcached-operator
Expand Down
Loading