@@ -160,7 +160,7 @@ func (i *StrategyDeploymentInstaller) getCertResources() []certResource {
160
160
}
161
161
162
162
func (i * StrategyDeploymentInstaller ) certResourcesForDeployment (deploymentName string ) []certResource {
163
- result := []certResource {}
163
+ var result []certResource
164
164
for _ , desc := range i .getCertResources () {
165
165
if desc .getDeploymentName () == deploymentName {
166
166
result = append (result , desc )
@@ -185,13 +185,12 @@ func (i *StrategyDeploymentInstaller) installCertRequirements(strategy Strategy)
185
185
}
186
186
187
187
// Create the CA
188
- expiration := time .Now (). Add ( DefaultCertValidFor )
189
- ca , err := certs .GenerateCA (expiration , Organization )
188
+ i . certificateExpirationTime = CalculateCertExpiration ( time .Now ())
189
+ ca , err := certs .GenerateCA (i . certificateExpirationTime , Organization )
190
190
if err != nil {
191
191
logger .Debug ("failed to generate CA" )
192
192
return nil , err
193
193
}
194
- rotateAt := expiration .Add (- 1 * DefaultCertMinFresh )
195
194
196
195
for n , sddSpec := range strategyDetailsDeployment .DeploymentSpecs {
197
196
certResources := i .certResourcesForDeployment (sddSpec .Name )
@@ -202,7 +201,7 @@ func (i *StrategyDeploymentInstaller) installCertRequirements(strategy Strategy)
202
201
}
203
202
204
203
// Update the deployment for each certResource
205
- newDepSpec , caPEM , err := i .installCertRequirementsForDeployment (sddSpec .Name , ca , rotateAt , sddSpec .Spec , getServicePorts (certResources ))
204
+ newDepSpec , caPEM , err := i .installCertRequirementsForDeployment (sddSpec .Name , ca , i . certificateExpirationTime , sddSpec .Spec , getServicePorts (certResources ))
206
205
if err != nil {
207
206
return nil , err
208
207
}
@@ -214,6 +213,14 @@ func (i *StrategyDeploymentInstaller) installCertRequirements(strategy Strategy)
214
213
return strategyDetailsDeployment , nil
215
214
}
216
215
216
+ func (i * StrategyDeploymentInstaller ) CertsRotateAt () time.Time {
217
+ return CalculateCertRotatesAt (i .certificateExpirationTime )
218
+ }
219
+
220
+ func (i * StrategyDeploymentInstaller ) CertsRotated () bool {
221
+ return i .certificatesRotated
222
+ }
223
+
217
224
func ShouldRotateCerts (csv * v1alpha1.ClusterServiceVersion ) bool {
218
225
now := metav1 .Now ()
219
226
if ! csv .Status .CertsRotateAt .IsZero () && csv .Status .CertsRotateAt .Before (& now ) {
@@ -223,7 +230,15 @@ func ShouldRotateCerts(csv *v1alpha1.ClusterServiceVersion) bool {
223
230
return false
224
231
}
225
232
226
- func (i * StrategyDeploymentInstaller ) installCertRequirementsForDeployment (deploymentName string , ca * certs.KeyPair , rotateAt time.Time , depSpec appsv1.DeploymentSpec , ports []corev1.ServicePort ) (* appsv1.DeploymentSpec , []byte , error ) {
233
+ func CalculateCertExpiration (startingFrom time.Time ) time.Time {
234
+ return startingFrom .Add (DefaultCertValidFor )
235
+ }
236
+
237
+ func CalculateCertRotatesAt (certExpirationTime time.Time ) time.Time {
238
+ return certExpirationTime .Add (- 1 * DefaultCertMinFresh )
239
+ }
240
+
241
+ func (i * StrategyDeploymentInstaller ) installCertRequirementsForDeployment (deploymentName string , ca * certs.KeyPair , expiration time.Time , depSpec appsv1.DeploymentSpec , ports []corev1.ServicePort ) (* appsv1.DeploymentSpec , []byte , error ) {
227
242
logger := log .WithFields (log.Fields {})
228
243
229
244
// Create a service for the deployment
@@ -263,7 +278,7 @@ func (i *StrategyDeploymentInstaller) installCertRequirementsForDeployment(deplo
263
278
fmt .Sprintf ("%s.%s" , service .GetName (), i .owner .GetNamespace ()),
264
279
fmt .Sprintf ("%s.%s.svc" , service .GetName (), i .owner .GetNamespace ()),
265
280
}
266
- servingPair , err := certGenerator .Generate (rotateAt , Organization , ca , hosts )
281
+ servingPair , err := certGenerator .Generate (expiration , Organization , ca , hosts )
267
282
if err != nil {
268
283
logger .Warnf ("could not generate signed certs for hosts %v" , hosts )
269
284
return nil , nil , err
@@ -311,9 +326,12 @@ func (i *StrategyDeploymentInstaller) installCertRequirementsForDeployment(deplo
311
326
secret = existingSecret
312
327
caPEM = existingCAPEM
313
328
caHash = certs .PEMSHA256 (caPEM )
314
- } else if _ , err := i .strategyClient .GetOpClient ().UpdateSecret (secret ); err != nil {
315
- logger .Warnf ("could not update secret %s" , secret .GetName ())
316
- return nil , nil , err
329
+ } else {
330
+ if _ , err := i .strategyClient .GetOpClient ().UpdateSecret (secret ); err != nil {
331
+ logger .Warnf ("could not update secret %s" , secret .GetName ())
332
+ return nil , nil , err
333
+ }
334
+ i .certificatesRotated = true
317
335
}
318
336
319
337
} else if k8serrors .IsNotFound (err ) {
@@ -331,6 +349,7 @@ func (i *StrategyDeploymentInstaller) installCertRequirementsForDeployment(deplo
331
349
return nil , nil , err
332
350
}
333
351
}
352
+ i .certificatesRotated = true
334
353
} else {
335
354
return nil , nil , err
336
355
}
0 commit comments