The controller-gen tool is quite rude and won't tell you when one of the
CRD manifests cannot be parsed when the option schemapatch is used. As
an example, the following:
sed -i 's/RFC8555/RFC8556/g' pkg/apis/certmanager/v1/types_issuer.go
controller-gen schemapatch:manifests=./deploy/crds output:dir=./deploy/crds paths=./pkg/apis/...
should trigger a change in the crd-clusterissuers.yaml:
@@ -3184,7 +3184,7 @@ spec:
type: object
properties:
acme:
- description: ACME [...] communicate with a RFC8555
+ description: ACME [...] communicate with a RFC8556
type: object
Unfortunately, controller-gen v0.2.9-0.20200414181213-645d44dca7c0
silently skips faulty CRD manifests. In our case, the CRD had become a
non-YAML file (we need to use some if statements):
{{- if .Values.webhook.url.host }}
url: https://{{ .Values.webhook.url.host }}/convert
{{- else }}
service:
name: {{ template "webhook.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
path: /convert
{{- end }}
Two issues can be found (we can use a YAML parser like yq for that):
1. The pipe "|" used in ".Release.Namespace | quote" makes it an invalid
YAML file. We could rewrite that to
{{ quote .Release.Namespace }}
but I decided to go with actual quotes like with the rest of the
file.
2. The {{ if }}, {{ else }} and {{ end }} are also invalid YAML syntax,
and one easy workaround is to comment them.
So many workarounds... but it now works!
Signed-off-by: Maël Valais <mael@vls.dev>
|
||
|---|---|---|
| .. | ||
| BUILD.bazel | ||
| crd-certificaterequests.yaml | ||
| crd-certificates.yaml | ||
| crd-challenges.yaml | ||
| crd-clusterissuers.yaml | ||
| crd-issuers.yaml | ||
| crd-orders.yaml | ||
| README.md | ||
CRDs source directory
Warning
: if you are an end-user, you do NOT need to use the files in this directory. These files are for development purposes only.
This directory contains 'source code' used to build our CustomResourceDefinition resources in a way that can be consumed by all our different deployment methods.
This package exposes a number of different Bazel targets:
templates: the Helm templates for the CRD manifestscrds: the templated CRD manifests (after runninghelm template)crd.templated: for each CRD type, the one CRD after runninghelm templatetemplated_files: a filegroup containing all of the individual templated CRD files
Most users should never utilise the files in this directory directly. Instead, Bazel
build targets in other packages (i.e. //deploy/manifests, //deploy/charts etc)
will be configured to automatically consume the appropriate artifact listed above.