Skip to content

Commit

Permalink
make install error workaround added in faq
Browse files Browse the repository at this point in the history
  • Loading branch information
Sajiyah-Salat committed Aug 22, 2023
1 parent 4d43972 commit 378300f
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions docs/book/src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,36 @@ securityContext:
```
However, note that this problem is fixed and will not occur if you deploy the project in high versions (maybe >= 1.22).
## The error `Too long: must have at most 262144 bytes` is faced when I run `make install` to apply the CRD manifests . How to solve it? Why this error is faced?
The Kubernetes API has a size limit. Then, when the apply is used the API will add the annotation last-applied-configuration with all previous configuration which is exceeding this amount. [More info][k8s-obj-creation]
Therefore, you have a few options to workround this scenario such as:
- You can use the option `maxDescLen=0` to remove the description of your CRDs. Following an example:
```shell

.PHONY: manifests
manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
# Note that the option maxDescLen=0 was added in the default scaffold in order to sort out the issue
# Too long: must have at most 262144 bytes. By using kubectl apply to create / update resources an annotation
# is created by K8s API to store the latest version of the resource ( kubectl.kubernetes.io/last-applied-configuration).
# However, it has a size limit and if the CRD is too big with so many long descriptions as this one it will cause the failure.
$(CONTROLLER_GEN) rbac:roleName=manager-role crd:maxDescLen=0 webhook paths="./..." output:crd:artifacts:config=config/crd/bases

Instead of Kubectl create command use Kubectl apply and it will work because kubectl create will send the request at once and it will fail while kubect apply send the request in small chunks so the desc len will be divided.

By using the maxDescLen=0 [controller-gen][cont-gen] will generate the CRD without description which will consequently reduce its size which might sort out the issue

Permanent solution is to work on server-side. but it is not yet supported by controller-gen. Take a look at [this][controller-tool-pr]

[k8s-obj-creation]: https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/#how-to-create-objects
[gvk]: ./cronjob-tutorial/gvks.md
[project-file-def]: ./reference/project-config.md
[klog]: https://github.com/kubernetes/klog
[zap]: https://github.com/uber-go/zap
[permission-issue]: https://github.com/kubernetes/kubernetes/issues/82573
[permission-PR]: https://github.com/kubernetes/kubernetes/pull/89193
[cont-gen]: ./reference/controller-gen.html
[controller-tool-pr]: https://github.com/kubernetes-sigs/controller-tools/pull/536

0 comments on commit 378300f

Please sign in to comment.