[DCAEGEN2] Update cm-container and consul-loader
[oom.git] / kubernetes / common / common / templates / _certificate.tpl
1 {{/*#
2 # Copyright © 2020, Nokia
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 # This is a template for requesting a certificate from the cert-manager (https://cert-manager.io).
18 #
19 # To request a certificate following steps are to be done:
20 #  - create an object 'certificates' in the values.yaml
21 #  - create a file templates/certificates.yaml and invoke the function "commom.certificate".
22 #
23 # Here is an example of the certificate request for a component:
24 #
25 # Directory structure:
26 #   component
27 #     templates
28 #       certifictes.yaml
29 #     values.yaml
30 #
31 # To be added in the file certificates.yamll
32 #
33 # To be added in the file values.yaml
34 #  1. Minimal version (certificates only in PEM format)
35 #  certificates:
36 #    - commonName: component.onap.org
37 #
38 #  2. Extended version (with defined own issuer and additional certificate format):
39 #  certificates:
40 #    - name:       onap-component-certificate
41 #      secretName: onap-component-certificate
42 #      commonName: component.onap.org
43 #      dnsNames:
44 #        - component.onap.org
45 #      issuer:
46 #        group: certmanager.onap.org
47 #        kind: CMPv2Issuer
48 #        name: cmpv2-issuer-for-the-component
49 #      p12Keystore:
50 #        create: true
51 #        passwordSecretRef:
52 #          name: secret-name
53 #          key:  secret-key
54 #      jksKeystore:
55 #        create: true
56 #        passwordSecretRef:
57 #          name: secret-name
58 #          key:  secret-key
59 #
60 # Fields 'name', 'secretName' and 'commonName' are mandatory and required to be defined.
61 # Other mandatory fields for the certificate definition do not have to be defined directly,
62 # in that case they will be taken from default values.
63 #
64 # Default values are defined in file onap/values.yaml (see-> global.certificate.default)
65 # and can be overriden during onap installation process.
66 #
67 */}}
68
69 {{- define "common.certificate" -}}
70 {{- $dot := default . .dot -}}
71 {{- $certificates := $dot.Values.certificates -}}
72
73 {{ range $i, $certificate := $certificates }}
74 {{/*# General certifiacate attributes  #*/}}
75 {{- $name           := include "common.fullname" $dot                                                             -}}
76 {{- $certName       := default (printf "%s-cert-%d"   $name $i) $certificate.name                                 -}}
77 {{- $secretName     := default (printf "%s-secret-%d" $name $i) $certificate.secretName                           -}}
78 {{- $commonName     := default $dot.Values.global.certificate.default.commonName      $certificate.commonName     -}}
79 {{- $renewBefore    := default $dot.Values.global.certificate.default.renewBefore     $certificate.renewBefore    -}}
80 {{- $duration       := $certificate.duration                                                                      -}}
81 {{- $namespace      := default $dot.Release.Namespace         $dot.Values.global.certificate.default.namespace    -}}
82 {{- if $certificate.namespace -}}
83 {{-   $namespace    = default $namespace                                              $certificate.namespace      -}}
84 {{- end -}}
85 {{/*# SAN's #*/}}
86 {{- $dnsNames       := default $dot.Values.global.certificate.default.dnsNames        $certificate.dnsNames       -}}
87 {{- $ipAddresses    := default $dot.Values.global.certificate.default.ipAddresses     $certificate.ipAddresses    -}}
88 {{- $uris           := default $dot.Values.global.certificate.default.uris            $certificate.uris           -}}
89 {{- $emailAddresses := default $dot.Values.global.certificate.default.emailAddresses  $certificate.emailAddresses -}}
90 {{/*# Subject #*/}}
91 {{- $subject        := $dot.Values.global.certificate.default.subject                                             -}}
92 {{- if $certificate.subject -}}
93 {{-   $subject       = mergeOverwrite $subject  $certificate.subject                                              -}}
94 {{- end -}}
95 {{/*# Issuer #*/}}
96 {{- $issuer         := $dot.Values.global.certificate.default.issuer                                              -}}
97 {{- if $certificate.issuer -}}
98 {{-   $issuer        = mergeOverwrite $issuer   $certificate.issuer                                               -}}
99 {{- end -}}
100 {{/*# Keystores #*/}}
101 {{- $createJksKeystore                  := $dot.Values.global.certificate.default.jksKeystore.create                  -}}
102 {{- $jksKeystorePasswordSecretName      := $dot.Values.global.certificate.default.jksKeystore.passwordSecretRef.name  -}}
103 {{- $jksKeystorePasswordSecreKey        := $dot.Values.global.certificate.default.jksKeystore.passwordSecretRef.key   -}}
104 {{- $createP12Keystore                  := $dot.Values.global.certificate.default.p12Keystore.create                  -}}
105 {{- $p12KeystorePasswordSecretName      := $dot.Values.global.certificate.default.p12Keystore.passwordSecretRef.name  -}}
106 {{- $p12KeystorePasswordSecreKey        := $dot.Values.global.certificate.default.p12Keystore.passwordSecretRef.key   -}}
107 {{- if $certificate.jksKeystore -}}
108 {{-   $createJksKeystore                 = default $createJksKeystore                $certificate.jksKeystore.create                   -}}
109 {{-   if $certificate.jksKeystore.passwordSecretRef -}}
110 {{-     $jksKeystorePasswordSecretName   = default $jksKeystorePasswordSecretName    $certificate.jksKeystore.passwordSecretRef.name   -}}
111 {{-     $jksKeystorePasswordSecreKey     = default $jksKeystorePasswordSecreKey      $certificate.jksKeystore.passwordSecretRef.key    -}}
112 {{-   end -}}
113 {{- end -}}
114 {{- if $certificate.p12Keystore -}}
115 {{-   $createP12Keystore                 = default $createP12Keystore                $certificate.p12Keystore.create                   -}}
116 {{-   if $certificate.p12Keystore.passwordSecretRef -}}
117 {{-     $p12KeystorePasswordSecretName   = default $p12KeystorePasswordSecretName    $certificate.p12Keystore.passwordSecretRef.name   -}}
118 {{-     $p12KeystorePasswordSecreKey     = default $p12KeystorePasswordSecreKey      $certificate.p12Keystore.passwordSecretRef.key    -}}
119 {{-   end -}}
120 {{- end -}}
121 ---
122 apiVersion: cert-manager.io/v1
123 kind: Certificate
124 metadata:
125   name:        {{ $certName }}
126   namespace:   {{ $namespace }}
127 spec:
128   secretName:  {{ $secretName }}
129   commonName:  {{ $commonName }}
130   renewBefore: {{ $renewBefore }}
131   {{- if $duration }}
132   duration:    {{ $duration }}
133   {{- end }}
134   subject:
135     organizations:
136       - {{ $subject.organization }}
137     countries:
138       - {{ $subject.country }}
139     localities:
140       - {{ $subject.locality }}
141     provinces:
142       - {{ $subject.province }}
143     organizationalUnits:
144       - {{ $subject.organizationalUnit }}
145   {{- if $dnsNames }}
146   dnsNames:
147     {{- range $dnsName := $dnsNames }}
148       - {{ $dnsName }}
149     {{- end }}
150   {{- end }}
151   {{- if $ipAddresses }}
152   ipAddresses:
153     {{- range $ipAddress := $ipAddresses }}
154       - {{ $ipAddress }}
155     {{- end }}
156   {{- end }}
157   {{- if $uris }}
158   uris:
159     {{- range $uri := $uris }}
160       - {{ $uri }}
161     {{- end }}
162   {{- end }}
163   {{- if $emailAddresses }}
164   emailAddresses:
165     {{- range $emailAddress := $emailAddresses }}
166       - {{ $emailAddress }}
167     {{- end }}
168   {{- end }}
169   issuerRef:
170     group: {{ $issuer.group }}
171     kind:  {{ $issuer.kind }}
172     name:  {{ $issuer.name }}
173   {{- if or $createJksKeystore $createP12Keystore }}
174   keystores:
175     {{- if $createJksKeystore }}
176     jks:
177       create: {{ $createJksKeystore }}
178       passwordSecretRef:
179         name: {{ $jksKeystorePasswordSecretName }}
180         key:  {{ $jksKeystorePasswordSecreKey }}
181     {{- end }}
182     {{- if $createP12Keystore }}
183     pkcs12:
184       create: {{ $createP12Keystore }}
185       passwordSecretRef:
186         name: {{ $p12KeystorePasswordSecretName }}
187         key:  {{ $p12KeystorePasswordSecreKey }}
188     {{- end }}
189   {{- end }}
190 {{ end }}
191
192 {{- end -}}