sigs.k8s.io/kubebuilder/v3@v3.14.0/pkg/plugins/golang/v2/scaffolds/internal/templates/config/certmanager/certificate.go (about)

     1  /*
     2  Copyright 2019 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  }
    31  
    32  // SetTemplateDefaults implements file.Template
    33  func (f *Certificate) SetTemplateDefaults() error {
    34  	if f.Path == "" {
    35  		f.Path = filepath.Join("config", "certmanager", "certificate.yaml")
    36  	}
    37  
    38  	f.TemplateBody = certManagerTemplate
    39  
    40  	return nil
    41  }
    42  
    43  const certManagerTemplate = `# The following manifests contain a self-signed issuer CR and a certificate CR.
    44  # More document can be found at https://docs.cert-manager.io
    45  # WARNING: Targets CertManager 0.11 check https://docs.cert-manager.io/en/latest/tasks/upgrading/index.html for
    46  # breaking changes
    47  apiVersion: cert-manager.io/v1alpha2
    48  kind: Issuer
    49  metadata:
    50    name: selfsigned-issuer
    51    namespace: system
    52  spec:
    53    selfSigned: {}
    54  ---
    55  apiVersion: cert-manager.io/v1alpha2
    56  kind: Certificate
    57  metadata:
    58    name: serving-cert  # this name should match the one appeared in kustomizeconfig.yaml
    59    namespace: system
    60  spec:
    61    # $(SERVICE_NAME) and $(SERVICE_NAMESPACE) will be substituted by kustomize
    62    dnsNames:
    63    - $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc
    64    - $(SERVICE_NAME).$(SERVICE_NAMESPACE).svc.cluster.local
    65    issuerRef:
    66      kind: Issuer
    67      name: selfsigned-issuer
    68    secretName: webhook-server-cert # this secret will not be prefixed, since it's not managed by kustomize
    69  `