sigs.k8s.io/kubebuilder/v3@v3.14.0/pkg/plugins/common/kustomize/v2/scaffolds/internal/templates/config/certmanager/certificate.go (about) 1 /* 2 Copyright 2020 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package certmanager 18 19 import ( 20 "path/filepath" 21 22 "sigs.k8s.io/kubebuilder/v3/pkg/machinery" 23 ) 24 25 var _ machinery.Template = &Certificate{} 26 27 // Certificate scaffolds a file that defines the issuer CR and the certificate CR 28 type Certificate struct { 29 machinery.TemplateMixin 30 machinery.ProjectNameMixin 31 } 32 33 // SetTemplateDefaults implements file.Template 34 func (f *Certificate) SetTemplateDefaults() error { 35 if f.Path == "" { 36 f.Path = filepath.Join("config", "certmanager", "certificate.yaml") 37 } 38 39 f.TemplateBody = certManagerTemplate 40 41 // If file exists (ex. because a webhook was already created), skip creation. 42 f.IfExistsAction = machinery.SkipFile 43 44 return nil 45 } 46 47 const certManagerTemplate = `# The following manifests contain a self-signed issuer CR and a certificate CR. 48 # More document can be found at https://docs.cert-manager.io 49 # WARNING: Targets CertManager v1.0. Check https://cert-manager.io/docs/installation/upgrading/ for breaking changes. 50 apiVersion: cert-manager.io/v1 51 kind: Issuer 52 metadata: 53 labels: 54 app.kubernetes.io/name: certificate 55 app.kubernetes.io/instance: serving-cert 56 app.kubernetes.io/component: certificate 57 app.kubernetes.io/created-by: {{ .ProjectName }} 58 app.kubernetes.io/part-of: {{ .ProjectName }} 59 app.kubernetes.io/managed-by: kustomize 60 name: selfsigned-issuer 61 namespace: system 62 spec: 63 selfSigned: {} 64 --- 65 apiVersion: cert-manager.io/v1 66 kind: Certificate 67 metadata: 68 labels: 69 app.kubernetes.io/name: certificate 70 app.kubernetes.io/instance: serving-cert 71 app.kubernetes.io/component: certificate 72 app.kubernetes.io/created-by: {{ .ProjectName }} 73 app.kubernetes.io/part-of: {{ .ProjectName }} 74 app.kubernetes.io/managed-by: kustomize 75 name: serving-cert # this name should match the one appeared in kustomizeconfig.yaml 76 namespace: system 77 spec: 78 # SERVICE_NAME and SERVICE_NAMESPACE will be substituted by kustomize 79 dnsNames: 80 - SERVICE_NAME.SERVICE_NAMESPACE.svc 81 - SERVICE_NAME.SERVICE_NAMESPACE.svc.cluster.local 82 issuerRef: 83 kind: Issuer 84 name: selfsigned-issuer 85 secretName: webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize 86 `