Skip to content

Commit e873411

Browse files
committed
Add redeploy on serving cert and operator pod template change
1 parent f62d700 commit e873411

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

pkg/operator2/ca.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,19 @@ const (
1515
injectCABundleAnnotationValue = "true"
1616
)
1717

18-
func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, error) {
18+
func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, *corev1.Secret, error) {
1919
cm := c.configMaps.ConfigMaps(targetName)
20+
sscsSecrets := c.secrets.Secrets("openshift-service-cert-signer")
2021
serviceCA, err := cm.Get(serviceCAName, metav1.GetOptions{})
2122
if errors.IsNotFound(err) {
2223
serviceCA, err = cm.Create(defaultServiceCA())
2324
}
2425
if err != nil {
25-
return nil, err
26+
return nil, nil, err
2627
}
2728

2829
if len(serviceCA.Data[serviceCAKey]) == 0 {
29-
return nil, fmt.Errorf("config map has no service ca data: %#v", serviceCA)
30+
return nil, nil, fmt.Errorf("config map has no service ca data: %#v", serviceCA)
3031
}
3132

3233
if err := isValidServiceCA(serviceCA); err != nil {
@@ -36,10 +37,15 @@ func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, error) {
3637
if err := cm.Delete(serviceCA.Name, opts); err != nil && !errors.IsNotFound(err) {
3738
glog.Infof("failed to delete invalid service CA config map: %v", err)
3839
}
39-
return nil, err
40+
return nil, nil, err
4041
}
4142

42-
return serviceCA, nil
43+
servingCert, err := sscsSecrets.Get("service-serving-cert-signer-serving-cert", metav1.GetOptions{})
44+
if err != nil {
45+
return nil, nil, err
46+
}
47+
48+
return serviceCA, servingCert, nil
4349
}
4450

4551
func isValidServiceCA(ca *corev1.ConfigMap) error {

pkg/operator2/operator.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package operator2
22

33
import (
4+
"crypto/sha512"
5+
"encoding/base64"
46
"strings"
57

68
"github.com/golang/glog"
@@ -176,11 +178,12 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
176178
}
177179
resourceVersions = append(resourceVersions, route.GetResourceVersion())
178180

179-
serviceCA, err := c.handleServiceCA()
181+
serviceCA, servingCert, err := c.handleServiceCA()
180182
if err != nil {
181183
return err
182184
}
183185
resourceVersions = append(resourceVersions, serviceCA.GetResourceVersion())
186+
resourceVersions = append(resourceVersions, servingCert.GetResourceVersion())
184187

185188
metadata, _, err := resourceapply.ApplyConfigMap(c.configMaps, c.recorder, getMetadataConfigMap(route))
186189
if err != nil {
@@ -231,9 +234,14 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
231234
}
232235
resourceVersions = append(resourceVersions, cliConfig.GetResourceVersion())
233236

237+
operatorPodTemplateHash, err := c.getOperatorDeploymentPodTemplateHash()
238+
if err != nil {
239+
return err
240+
}
241+
resourceVersions = append(resourceVersions, operatorPodTemplateHash)
242+
234243
// deployment, have RV of all resources
235244
// TODO use ExpectedDeploymentGeneration func
236-
// TODO we also need the RV for the serving-cert secret (servingCertName)
237245
expectedDeployment := defaultDeployment(
238246
operatorConfig,
239247
syncData,
@@ -280,3 +288,14 @@ func getPrefixFilter() controller.Filter {
280288
DeleteFunc: prefix,
281289
}
282290
}
291+
292+
func (c *authOperator) getOperatorDeploymentPodTemplateHash() (string, error) {
293+
deployments := c.deployments.Deployments(operatorNamespace)
294+
operator, err := deployments.Get("openshift-authentication-operator", metav1.GetOptions{})
295+
if err != nil {
296+
return "", err
297+
}
298+
299+
templateHash := sha512.Sum512([]byte(operator.Spec.Template.String()))
300+
return base64.RawURLEncoding.EncodeToString(templateHash[:]), nil
301+
}

0 commit comments

Comments
 (0)