cert-manager/deploy/crds
Maël Valais 39c9c662f7 controller-gen can now update CRDs like before
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>
2021-05-11 17:29:06 +02:00
..
BUILD.bazel Fix CRD targets 2020-12-01 16:43:16 +01:00
crd-certificaterequests.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
crd-certificates.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
crd-challenges.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
crd-clusterissuers.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
crd-issuers.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
crd-orders.yaml controller-gen can now update CRDs like before 2021-05-11 17:29:06 +02:00
README.md Remove the legacy release 2020-12-01 16:17:07 +01:00

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 manifests
  • crds: the templated CRD manifests (after running helm template)
  • crd.templated: for each CRD type, the one CRD after running helm template
  • templated_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.